jQuery实现简单日历效果


Posted in jQuery onJuly 05, 2020

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

日历效果如下图:

jQuery实现简单日历效果

css部分:

<style>
  * {
   margin: 0;
   padding: 0;
   list-style: none;
  }

  .main {
   width: 380px;
   height: 370px;
   margin: 30px auto;
   position: relative;
  }

  button {
   width: 30px;
   height: 30px;
   border-radius: 50%;
   background: pink;
   font-size: 12px;
   text-align: center;
   line-height: 30px;
   border: none;
   position: absolute;
   color: #fff;
   outline: none;
   cursor: pointer;
   user-select: none;
  }

  .prev {
   top: 10px;
   left: 6%;
  }

  .next {
   top: 10px;
   right: 6%;
  }

  .nowTime {
   width: 90px;
   position: absolute;
   top: 15px;
   right: calc(50% - 45px);
   font-size: 14px;
   font-weight: bold;
   background: linear-gradient(to right, rgb(247, 149, 190), rgb(248, 204, 228));
   -webkit-background-clip: text;
   color: transparent;
  }

  .container {
   width: 350px;
   margin: 50px auto;
   border: 1px solid #ccc;
   position: absolute;
   top: calc(50% - 190px);
   left: calc(50% - 175px);

  }

  .container ul:first-of-type {
   background: rgb(245, 195, 195);
   color: rgb(43, 40, 40);
  }

  .container ul {
   width: 350px;
   margin: 0 auto;
   display: flex;
   flex-wrap: wrap;
   text-align: center;
  }

  .container li {
   width: 50px;
   height: 50px;
   text-align: center;
   line-height: 50px;
   cursor: pointer;
  }

  .container li:not(.disabled):hover {
   background: rgb(255, 174, 208);
  }

  li.disabled {
   background: rgb(252, 238, 238);
   cursor: not-allowed;
   color: rgb(206, 206, 206);
  }

  li.active {
   background: rgb(255, 206, 214);
  }
</style>

html部分:

<div class="main">
  <button class="prev">上月</button>
  <p class="nowTime"></p>
  <button class="next">下月</button>
  <div class="container">
   <ul>
    <li>日</li>
    <li>一</li>
    <li>二</li>
    <li>三</li>
    <li>四</li>
    <li>五</li>
    <li>六</li>
   </ul>
   <ul class="content">

   </ul>
  </div>
</div>

js部分:

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
 <script>
  $(function () {
   let allDays = 0
   let now = new Date()
   let global_month = now.getMonth() + 1
   let global_year = now.getFullYear()
   let today = now.getDate()

   $('.prev').click(function () {
    now.setMonth(now.getMonth() - 1)
    calendar()
   })
   $('.next').click(function () {
    now.setMonth(now.getMonth() + 1)
    calendar()
   })

   function calendar() {
    $('.content').empty()
    let month = now.getMonth() + 1
    let year = now.getFullYear()

    //得到每个月多少天
    switch (month) {
     case 1:
     case 3:
     case 5:
     case 7:
     case 8:
     case 10:
     case 12:
      allDays = 31
      break;
     case 4:
     case 6:
     case 9:
     case 11:
      allDays = 30
      break;
     default:
      //判断闰年 得到二月份的天数
      if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
       allDays = 29
      } else {
       allDays = 28
      }

      break;
    }
    //获取当前月份有多少天 生成相应个数的li
    for (let i = 1; i <= allDays; i++) {
     let li = $('<li/>').text(i)
     //给对应今天的li添加高亮效果
     if (i === today && year === global_year && month === global_month) li.addClass('active')
     $('.content').append(li)
    }

    //思路:每个月一号前面空几个 空的个数为周几就空几个
    now.setDate(1) //将时间设置成本月的一号
    let firstDay = now.getDay() // 获取一号是周几
    for (let i = 0; i < firstDay; i++) { // 循环次数为对应的是周几
     now.setDate(now.getDate() - 1) //每循环一次 日期往前倒一天
     let li = $('<li/>').text(now.getDate()).addClass('disabled') //生成相对应的空格
     $('.content').prepend(li)
    }
    now.setDate(now.getDate() + firstDay) //将时间设置回当前时间 否则影响后面时间的获取
    now.setDate(allDays)
    //思路:每个月最后一天后面空几个 空的个数为6减周几就空几个
    now.setDate(allDays) //将时间设置成每月最后一天
    let lastDay = 6 - now.getDay() //最后空的个数
    for (let i = 0; i < lastDay; i++) {
     now.setDate(now.getDate() + 1) //每循环一次 日期往后加一天
     let li = $('<li/>').text(now.getDate()).addClass('disabled') //生成相对应的空格
     $('.content').append(li)
    }
    now.setDate(now.getDate() - lastDay) //将时间设置回当前时间 否则影响后面时间的获取
    now.setDate(1)

    $('.nowTime').html(now.getFullYear() + '年' + (now.getMonth() + 1) + '月')
   }

   calendar()
  })
</script>

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

jQuery 相关文章推荐
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
jQuery鼠标移动图片上实现放大效果
Jun 25 jQuery
jquery之基本选择器practice(实例讲解)
Sep 30 jQuery
jQuery中 DOM节点操作方法大全
Oct 12 jQuery
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
Oct 19 jQuery
jQuery代码优化方法总结
Jan 29 jQuery
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
详解jquery和vue对比
Apr 16 jQuery
jQuery+ajax实现批量删除功能完整示例
Jun 06 jQuery
jQuery内容选择器与表单选择器实例分析
Jun 28 jQuery
用jQuery实现抽奖程序
Apr 12 jQuery
jQuery实现飞机大战小游戏
Jul 05 #jQuery
jquery实现上传图片功能
Jun 29 #jQuery
jQuery实时统计输入框字数及限制
Jun 24 #jQuery
jQuery实现移动端下拉展现新的内容回弹动画
Jun 24 #jQuery
如何解决jQuery 和其他JS库的冲突
Jun 22 #jQuery
jQuery 移除事件的方法
Jun 20 #jQuery
Jquery ajax书写方法代码实例解析
Jun 12 #jQuery
You might like
PHP教程 变量定义
2009/10/23 PHP
PHP实现变色验证码实例
2014/01/06 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
JS判断变量是否为空判断是否null
2014/07/25 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
对Python中的@classmethod用法详解
2018/04/21 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
python 字典item与iteritems的区别详解
2020/04/25 Python
python爬虫请求头设置代码
2020/07/28 Python
介绍一下Java中的Class类
2015/04/10 面试题
安全事故检讨书
2014/01/18 职场文书
全国道德模范事迹
2014/02/01 职场文书
小学教师听课制度
2014/02/01 职场文书
成绩单家长评语大全
2014/04/16 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
死亡证明书样本说明
2014/10/18 职场文书
喋血孤城观后感
2015/06/08 职场文书
2019 入党申请书范文
2019/07/10 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python