欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript自定义日历效果

程序员文章站 2022-03-24 10:21:17
本文实例为大家分享了javascript自定义日历效果的具体代码,供大家参考,具体内容如下实现思路:获取每个月的第一天是星期几,然后把前面的天数填充为空,在获取每个月有多少天,循环填充,判断并给给当前...

本文实例为大家分享了javascript自定义日历效果的具体代码,供大家参考,具体内容如下

实现思路:获取每个月的第一天是星期几,然后把前面的天数填充为空,在获取每个月有多少天,循环填充,判断并给给当前时间添加单独样式,点击上一月,和下一月时改变月份。

获取当前月第一天:返回值是 0(周日) 到 6(周六) 之间的一个整数

var date = new date();
var y=date.getfullyear();
var m=date.getmonth();
new date(y,m,1).getday();

获取当前月有多少天

var date = new date();
var y=date.getfullyear();
var m=date.getmonth();
new date(y,m+1,-1).getdate()+1;

最后点击上一月,下一月月份加一或减一,在执行封装的日历函数。

全部代码:

<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        body {
            background: #2c3e50;
        }

        .calendar {
            width: 400px;
            margin: 50px auto;
        }

        .calendar-tip {
            font-size: 16px;
            text-align: center;
            color: #fff;
        }

        .prev {
            float: left;
            cursor: pointer;
        }

        .next {
            float: right;
            cursor: pointer;
        }

        .calendar-month {
            text-align: center;
            margin: 10px 0;
            color: #fff;
        }

        ul {
            list-style: none;
            display: flex;
        }

        li {
            width: 57px;
            text-align: center;
            height: 55px;
            line-height: 55px;
            font-size: 16px;
            color: #fff;
        }

        .calendar-day {
            display: flex;
        }

        .calendar-day span {
            flex: 1;
            color: #fff;
            text-align: center;
            height: 40px;
            line-height: 40px;

        }

        .calendar-data {
            display: flex;
            flex-wrap: wrap;
        }

        li {
            width: 57px;
            cursor: pointer;
        }

        li:hover {
            background: #2d3436;
        }

        .calendar-data .on {
            color: #d63031;
        }
    </style>
</head>

<body>
    <div class="calendar">
        <div class="calendar-tip">
            <span class="prev">上一月</span>
            <em id="year">2022年</em>
            <span class="next">下一月</span>
        </div>
        <div class="calendar-month">五月</div>
        <div class="calendar-day">
            <span>日</span>
            <span>一</span>
            <span>二</span>
            <span>三</span>
            <span>四</span>
            <span>五</span>
            <span>六</span>
        </div>
        <ul class="calendar-data">
            <li>1</li>
            <li>1</li>
            <li>1</li>
            <li>1</li>
            <li>1</li>
            <li>1</li>
            <li>1</li>
        </ul>
    </div>
    <script>
        var date = new date();
        var year = document.queryselector("#year");
        var month = document.queryselector(".calendar-month");
        var calendardata = document.queryselector(".calendar-data");
        var prev = document.queryselector(".prev");
        var next = document.queryselector(".next");
        var montharr = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"];
        var y,m,day,d,html,today;
        calendar();

        function calendar() {
            y = date.getfullyear();
            year.innerhtml = y + "年";

            m = date.getmonth();
            month.innerhtml = montharr[m];
            day = new date(y, m, 1).getday(); //获取每个月第一天是周几
            d = new date(y, m + 1, -1).getdate() + 1; //获取多少天
            html = "";

            //把每个月第一天之前的时间填充为空
            for (var i = 0; i < day; i++) {
                html += "<li> </li>";
            }

            for (var j = 1; j <= d; j++) {
                if (y==new date().getfullyear() && m==new date().getmonth() && j== date.getdate()) {
                    html += "<li class='on'>" + j + "</li>";
                } else {
                    html += "<li>" + j + "</li>";
                }

            }
            calendardata.innerhtml = html;
        }

        prev.onclick = function () {
            date.setmonth(date.getmonth() - 1);
            calendar();
        }

        next.onclick = function () {
            date.setmonth(date.getmonth() + 1);
            calendar();
        }
    </script>
</body>

</html>

效果:

JavaScript自定义日历效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关标签: js 日历