广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >HTML+CSS+JavaScript实现简单日历效果
  • 884
分享到

HTML+CSS+JavaScript实现简单日历效果

2024-04-02 19:04:59 884人浏览 独家记忆
摘要

本文实例为大家分享了html+CSS+javascript实现简单日历效果的具体代码,供大家参考,具体内容如下 初学前端花了一下午写了一个简单的日历效果: 可以选择按月或者按年切换,

本文实例为大家分享了html+CSS+javascript实现简单日历效果的具体代码,供大家参考,具体内容如下

初学前端花了一下午写了一个简单的日历效果:

可以选择按月或者按年切换,当前日期会有绿色的背景显示, 所有的日期都会正确的对应星期几。

所有代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>简单日历效果</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        ul {
            display: flex;
            flex-direction: row;
        }
        li {
            display: block;
            list-style: none;
        }
        body {
            background-color: rgb(236, 195, 202);
        }
 
        .cal-container .year-month>div:first-child>span,
        .cal-container .year-month .pre,
        .cal-container .year-month .next,
        .cal-container .weeks>ul>li,
        .cal-container .days>ul .style-default {
            cursor: pointer;
        }
        .cal-container .year-month .pre:hover,
        .cal-container .year-month .next:hover,
        .cal-container .weeks>ul>li:hover {
            text-shadow: 2px 2px 2px rgb(121, 121, 121);
        }
 
        .cal-container {
            display: flex;
            flex-direction: column;
            position: absolute;
            top: 20%;
            left: 50%;
            width: 600px;
            margin-left: -300px;
            box-shadow: 7px 7px 7px rgb(112, 112, 112);
            background-color: aquamarine;
        }
        .cal-container .year-month {
            position: relative;
            width: 100%;
            height: 250px;
            background-color: rgb(107, 215, 168);
        }
        .cal-container .year-month>div:first-child {
            display: flex;
            flex-direction: column;
            position: absolute;
            top: 50%;
            left: 50%;
            width: 200px;
            height: 70px;
            transfORM: translate(-50%, -50%);
            text-align: center;
            letter-spacing: 3px;
        }
        .cal-container .year-month>div:first-child>span {
            display: block;
            margin-bottom: 5px;
            font-weight: 700;
            color: white; 
        }
        .cal-container .year-month>div:first-child>span:first-child {
            font-size: 40px;
        }
        .cal-container .year-month>div:first-child>span:last-child {
            font-size: 25px;
        }
        .cal-container .year-month .pre,
        .cal-container .year-month .next {
            position: absolute;
            top: 50%;
            height: 40px;
            transform: translateY(-20px);
            margin: 0 20px;
            font-size: 40px;
            color: white;
        }
        .cal-container .year-month .next {
            right: 0;
        }
 
        .cal-container .weeks>ul,
        .cal-container .days>ul {
            display: flex;
            flex-direction: row;
            flex-wrap: wrap;
            width: 100%;
            padding: 0 2.5px;
            background-color: rgb(202, 202, 202);
        }
        .cal-container .days>ul {
            padding: 20px 0;
            background-color: rgb(225, 225, 225);
        }
        .cal-container .weeks>ul>li {
            width: 85px;
            font-size: 20px;
            font-weight: 700;
            color: rgb(75, 75, 75);
            text-align: center;
            line-height: 50px;
        }
 
        .style-default {
            width: 50px;
            height: 50px;
            margin: 0 17.5px;
            font-size: 20px;
            font-weight: 700;
            color: rgb(75, 75, 75);
            text-align: center;
            line-height: 50px;
        }
        .days>ul .style-default:hover {
            background-color: rgb(202, 202, 202);
        }
        .cal-container .days>ul .bg-style {
            background-color: rgb(107, 215, 168);
        }
        .no-style {
            width: 50px;
            height: 50px;
            margin: 0 17.5px;
        }
    </style>
</head>
<body>
    <div class="cal-container">
        <div class="year-month">
            <div>
                <span id="month"></span>
                <span id="year"></span>
            </div>
            <div class="pre" id="pre-month">&lt;</div>
            <div class="next" id="next-month">&gt;</div>
        </div>
        <div class="weeks">
            <ul>
                <li>Mon</li>
                <li>Tue</li>
                <li>Wed</li>
                <li>Thu</li>
                <li>Fri</li>
                <li>Sat</li>
                <li>Sun</li>
            </ul>
        </div>
        <div class="days">
            <ul id="day"></ul>
        </div>
    </div>
    <script>
        // 获取年月日和星期几
        let date = new Date();
        Y = date.getFullYear();
        M = date.getMonth();
        W = date.getDay();
        D = date.getDate();
        isSelect = true;    //true为选择了月,false为选择了年(添加文本阴影)
 
        // 更新当前年
        let yearNow = document.getElementById("year");
        yearNow.innerHTML = Y;
        // 更新当前月
        let monthNow = document.getElementById("month");
        monthNow.innerHTML = monthAndMaxDay(Y, M)[0];
        // 判断选中年还是月(添加文本阴影)
        selected(isSelect);
        //更新当前日
        let days = document.getElementById("day");
        updateAllDays(Y, M);
 
        // 选择按月切换还是按年切换
        yearNow.addEventListener("click", function() { 
            isSelect = false
            selected(isSelect); 
        });
        monthNow.addEventListener("click", function() { 
            isSelect = true;
            selected(isSelect); 
        });
        
        // 左右切换日期
        let previous = document.getElementById("pre-month");
        previous.addEventListener("click", function() { changePage(true); });
        let next = document.getElementById("next-month");
        next.addEventListener("click", function() { changePage(false); });
        
        // 按日查询对应的星期几
        function dayToStar(year, month, day) {
            let theDate = new Date(year, month, day);
            return theDate.getDay();
        }
 
        // 查询一个月对应的英文命名和最大天数
        function monthAndMaxDay(year, month) {
            let month_now = "";
            let maxDay = 0;     // 一个月的最大天数
            switch(month+1) {
                case 1: month_now = "一月"; maxDay = 31; break;
                case 2: 
                    month_now = "二月";
                    if(year % 4 == 0) {
                        maxDay = 29;
                    } else {
                        maxDay = 28;
                    }
                    break;
                case 3: month_now = "三月"; maxDay = 31; break;
                case 4: month_now = "四月"; maxDay = 30; break;
                case 5: month_now = "五月"; maxDay = 31; break;
                case 6: month_now = "六月"; maxDay = 30; break;
                case 7: month_now = "七月"; maxDay = 31; break;
                case 8: month_now = "八月"; maxDay = 31; break;
                case 9: month_now = "九月"; maxDay = 30; break;
                case 10: month_now = "十月"; maxDay = 31; break;
                case 11: month_now = "十一月"; maxDay = 30; break;
                case 12: month_now = "十二月"; maxDay = 31; break;
                default: month = "";
            }
            return [month_now, maxDay];
        }
 
        // 更新当前月的所有天数
        function updateAllDays(year, month) {
            let offset = dayToStar(year, month, 1);
            let maxDay = monthAndMaxDay(year, month)[1];
            
            // 实现日期和星期对应
            for(let i=0; i<offset; i++) {
                let day = document.createElement("li");
                day.className = "no-style";
                days.appendChild(day);
            }
            
            for(let i=1; i<=maxDay; i++) {
                let day = document.createElement("li");
                let dateNow = new Date();
                // 当前日期有绿色背景
                if(year == dateNow.getFullYear() && month == dateNow.getMonth() && i == dateNow.getDate()) {
                    day.className = "style-default bg-style"
                } else {
                    day.className = "style-default";
                }
                day.id = i;
                day.innerText = i
                days.appendChild(day);
            }
        }
 
        // 选择按月切换还是按年切换
        function selected(boolean) {
            if(boolean) {
                monthNow.style.textShadow = "2px 2px 2px rgb(121, 121, 121)";
                yearNow.style.textShadow = "none";
            } else {
                monthNow.style.textShadow = "none";
                yearNow.style.textShadow = "2px 2px 2px rgb(121, 121, 121)";
            }
        }
        
        // 点击切换事件
        function changePage(boolean) {
            // 按年切换还是按月切换
            if(isSelect) {
                // 向前切换还是向后切换
                if(boolean) {
                    M = M-1;
                    if(M == -1) {
                        Y--;
                        M = 11;
                    }
                } else {
                    M = M+1;
                    if(M == 11) {
                        Y++;
                        M = 0;
                    }
                }
            } else {
                if(boolean) {
                    Y--;
                } else {
                    Y++;
                }
            }
            yearNow.innerHTML = Y;
            monthNow.innerHTML = monthAndMaxDay(Y, M)[0];
            // 清空一个月所有天数
            days.innerHTML = "";
            // 重新添加一个月所有天数
            updateAllDays(Y, M);
        }
        </script>
</body>
</html>

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

--结束END--

本文标题: HTML+CSS+JavaScript实现简单日历效果

本文链接: https://www.lsjlt.com/news/153329.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • HTML+CSS+JavaScript实现简单日历效果
    本文实例为大家分享了HTML+CSS+JavaScript实现简单日历效果的具体代码,供大家参考,具体内容如下 初学前端花了一下午写了一个简单的日历效果: 可以选择按月或者按年切换,...
    99+
    2022-11-13
  • js+html+css实现简单日历效果
    本文实例为大家分享了js+html+css实现简单日历效果的具体代码,供大家参考,具体内容如下 效果: 遇到的问题与解决方法: 1.“日”上移 方法:在&l...
    99+
    2022-11-13
  • JavaScript代码实现简单日历效果
    本文实例为大家分享了JavaScript实现简单日历效果的具体代码,供大家参考,具体内容如下 效果如下: 代码: <!DOCTYPE html> <html ...
    99+
    2022-11-12
  • js实现简单日历效果
    本文实例为大家分享了js实现简单日历效果的具体代码,供大家参考,具体内容如下 ## css模块 <style type="text/css"> *{ ma...
    99+
    2022-11-12
  • 使用Vue实现简单日历效果
    使用Vue实现简单的日历,供大家参考,具体内容如下 原理分析: 1.获取当前时间2.显示当前时间3.点击增加和减少月份4.大月和小月的天数 效果演示 初始样式(显示现在的日期时间) ...
    99+
    2022-11-13
  • 微信小程序实现简单日历效果
    本文实例为大家分享了微信小程序实现日历效果的具体代码,供大家参考,具体内容如下 效果: wxml: <!-- 日历 -->         <view class...
    99+
    2022-11-13
  • HTML+CSS如何实现简单下拉菜单效果
    小编给大家分享一下HTML+CSS如何实现简单下拉菜单效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用Html+css实现简单的下拉菜单代码非常简单,需要的...
    99+
    2023-06-08
  • HTML+CSS+JavaScript实现下拉菜单效果
    本文实例为大家分享了HTML+CSS+JavaScript实现下拉菜单效果的具体代码,供大家参考,具体内容如下 实现思路: HTML 方面,导航栏的每个 <li> 元素里...
    99+
    2022-11-13
  • JavaScript实现简单日期特效
    JavaScript之日期特效的具体代码,供大家参考,具体内容如下 直接上代码: <!DOCTYPE html> <html lang="en"> <...
    99+
    2022-11-12
  • python实现日历效果
    本文实例为大家分享了python实现日历效果的具体代码,供大家参考,具体内容如下 一、代码编程过程 根据年月日算出星期几 def get_week_with_data(y,m,d): '''根据年月日计算...
    99+
    2022-06-02
    python 日历
  • C#实现日历效果
    本文实例为大家分享了C#实现日历效果的具体代码,供大家参考,具体内容如下 展示: 主要代码: public partial class calendar : Form     {...
    99+
    2022-11-13
  • JavaScript实现简单拖拽效果
    本文实例为大家分享了JavaScript实现简单拖拽效果的具体代码,供大家参考,具体内容如下 先看实现的效果: 思路:里面用到了三个事件,鼠标按下、移动、松开事件 那么首先创建盒子...
    99+
    2022-11-12
  • JavaScript实现拖拽简单效果
    本文实例为大家分享了JavaScript实现拖拽效果的具体代码,供大家参考,具体内容如下 1.1 拖拽的基本效果 思路: 鼠标在盒子上按下时,准备移动 (事件加给物体) 鼠标移动时,...
    99+
    2022-11-12
  • javascript实现简单下拉菜单效果
    本文实例为大家分享了 javascript实现简单下拉菜单的具体代码,供大家参考,具体内容如下 效果: 思路:比较复杂的是样式的编写,首先是ul里面含有3个li,每个li...
    99+
    2022-11-13
    js 下拉菜单
  • JavaScript怎么实现自定义日历效果
    本篇内容主要讲解“JavaScript怎么实现自定义日历效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript怎么实现自定义日历效果”吧!实现思路:获取每个月的第一天是星期几,然...
    99+
    2023-06-25
  • Bootstrap+Jquery实现日历效果
    本文实例为大家分享了Bootstrap+Jquery实现日历效果的具体代码,供大家参考,具体内容如下 一、效果图 二、代码 本案例中用到了Bootstrap和Jquery,除此之外...
    99+
    2022-11-12
  • Flutter 日历组件简单实现
    目录前言安装效果demo 演示业务使用 headerView使用配置属性DEMO感谢前言 近期有个业务需求,涉及用户付费相关的计算,需要一个日历组件,组件功能如下: 仅支持从明天开始...
    99+
    2022-11-13
    Flutter 日历组件 Flutter 日历
  • javascript实现简单倒计时效果
    本文实例为大家分享了javascript实现倒计时效果的具体代码,供大家参考,具体内容如下 实现思路: 1、页面创建好天、小时、分、秒的标签元素,定义好样式 2、js获取天、小时、分...
    99+
    2022-11-12
  • javascript实现简单放大镜效果
    一个大盒子中有一张图片,鼠标放上去会出现一个半透明的遮罩层,鼠标移动,遮罩层跟着移动,盒子旁边还有一个放大的图片,跟着遮罩层移动的位置而改变放大图的位置,鼠标离开大盒子,遮罩层和放大...
    99+
    2022-11-12
  • JavaScript实现简单的拖拽效果
    本文实例为大家分享了JavaScript实现简单的拖拽效果的具体代码,供大家参考,具体内容如下 1.先搭架子: * { margin: 0; ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作