简介

用过一些开源的日历,但对于自定义去绑定数据在日历元素中却不是很方便,由于工作需要用到考勤日历,考虑到日历的实现也不是特别麻烦,于是自己弄了一个,样式比较简单,需要的可以自己去扩展。使用的时候绑定获取数据的方法即可,在这个日历中我没有直接添加选择月份。各位有兴趣可以自己扩展,已预留设置日期的方法。自定义去扩展的时候注意保证原有的代码结构不变,增加一些方法即可,下面直接上源码了,就三个文件。

attendanceCalendar.js

代码已更新多次,请直接上github下载,链接:https://github.com/kent124454731/attendanceCalendar

修复 第一行日期数量计算 bug,修改了以下的方法

    function initCalendarBody() {$content = document.createElement("div");addClass($content, "div_calendar_body");$elem.appendChild($content);addCalendarHead();//日期计算bug,例:2017-01var num = 0;do {var length = 0;if (num == 0) {//出星期天外,星期数(1~6)和第一行显示的日期数(7~2),相加的结果都为8length = firstWeekDay == 0 ? 1 : 8 - firstWeekDay;num = length;createLine(length - 1, 1);}else {var length = mds - num > 6 ? 7 : mds - num;num = num + length;createLine(length - 1);}}while (num < mds)showCurrentDate();}function createLine(num, type) {var newDiv = document.createElement("div");for (var i = 0; i <= num; i++, index++) {var span = document.createElement("span");var span_text = document.createTextNode(index + 1);//单个日期元素的操作if (attendances && attendances.length > 0) {bindAttendance(span, attendances[index]);}span.appendChild(span_text);newDiv.appendChild(span);}if (type == 1) {addClass(newDiv, "first_div")}else {addClass(newDiv, "last_div")}$content.appendChild(newDiv);}

css部分,日期元素主要用了三种颜色表示

.div_calendar {width: 450px;margin: 0 auto;text-align: center;display: -webkit-box;
}/** 日历标题 */
.div_calendar_title {width: 450px;margin: 0 auto;text-align: center;
}/** 日历主体 */
.div_calendar_body {width: 350px;text-align: center;
}/** 日元素 */
.div_calendar span {width: 50px;display: inline-block;text-align: center;line-height: 50px;
}/** 正常 */
.div_calendar span.normal {color: blue;
}/** 迟到 */
.div_calendar span.late {color: red;
}/** 缺勤 */
.div_calendar span.absense {color: #666;
}/** 缺勤 */
.div_calendar span.today {border-radius: 50%;background: cornflowerblue;
}/** 日历第一行日期 */
.div_calendar .first_div {text-align: right;
}/** 日历末行日期 */
.div_calendar .last_div {text-align: left;
}/** 日期显示div */
.div_calendar .div_currentDate {text-align: right;
}.div_calendar .changeDate {cursor: pointer;
}.div_calendar .div_currentDate span {width: inherit;
}.div_calendar .div_currentDate span em {margin: 5px;
}

calendar.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="div_calendar_title"><h1>自定义日历</h1></div>
<div id="calendar_div" class="div_calendar">
</div>
<script src="script/attendanceCalendar.js"></script>
</body>
</html>

示例演示:

代码已更新多次,请直接上github下载,链接:https://github.com/kent124454731/attendanceCalendar

欢迎关注我的个人公众号:逍遥的心。主推程序员写的生活类文章,有兴趣的朋友可以共同探讨下:

javascript考勤日历相关推荐

  1. Fullcalendar v5.5.1 设计一个考勤日历插件

    前言 最近公司HR项目新增一个考勤日历需求,发现Fullcalendar插件功能齐全,完美支持JQuery.Vue.React 和 Angular,支持TypeScript,开源,并托管在GitHub ...

  2. 非常不错的一款html5【404页面】,不含js脚本可以左右摆动,原生JavaScript实现日历功能代码实例(无引用Jq)...

    这篇文章主要介绍了原生JavaScript实现日历功能代码实例(无引用Jq),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 成品显示,可左右切换月份 ...

  3. 用 JavaScript 编写日历

    概述 在本教程中,我将介绍使用几行 JavaScript 将日历渲染到网页上.日历将包括仅使用普通旧 JavaScript的月份和年份的下拉列表.流程如下: 将月份渲染到下拉列表中 将年份渲染到下拉列 ...

  4. android仿钉钉日程日历,Flutter仿钉钉考勤日历的示例代码

    本文主要介绍了Flutter仿钉钉考勤日历的示例代码,分享给大家,具体如下: 效果 原型 开发 1. 使用 // 考勤日历 DatePickerDialog( initialDate: DateTim ...

  5. android 钉钉考勤日历,Flutter仿钉钉考勤日历

    作用 原型 开发 运用 // 考勤日历 DatePickerDialog( initialDate: DateTime.now(), firstDate: DateTime(2020), lastDa ...

  6. android 钉钉考勤日历,vue实现钉钉的考勤日历

    本文实例为大家分享了vue实现钉钉的考勤日历的具体代码,供大家参考,具体内容如下 直接上效果图,需要再往下看 GitHub地址:vue-calendar-component 由于需要对此组件的样式及功 ...

  7. 考勤 日历 ajax,vue实现钉钉的考勤日历

    本文实例为大家分享了vue实现钉钉的考勤日历的具体代码,供大家参考,具体内容如下 直接上效果图,需要再往下看 GitHub地址:vue-calendar-component 由于需要对此组件的样式及功 ...

  8. android 钉钉考勤日历,vue钉钉考勤日历 vue实现钉钉的考勤日历

    想了解vue实现钉钉的考勤日历的相关内容吗,张张张立宏在本文为您仔细讲解vue钉钉考勤日历的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:vue钉钉考勤日历,vue钉钉考勤,vue考勤日历 ...

  9. JavaScript编写日历(简单易懂,代码可以直接运行)

    JavaScript编写日历(简单易懂,代码可以直接运行) 运行效果图如下: 点个

最新文章

  1. Objective C 链式调用 1
  2. 计算机网络 物理层链路层
  3. Flex中你最应该知道的10点
  4. asp.net 控制windows服务
  5. 事件EVENT,WaitForSingleObject(),WaitForMultipleObjecct()和SignalObjectAndWait() 的使用(下)
  6. 【周记:距gdoi43天】
  7. mysql 性能 索引怎么用_MySQL索引使用方法和性能優化
  8. Knockout获取数组元素索引的2种方法,在MVC中实现
  9. PKU 3273  PKU 3258  pku 1905 PKU 3122 二分运用题目
  10. 安装.Net Framework提示:无法建立到信任根颁发机构的证书链
  11. jsp基础教程清华版源代码
  12. ZEMAX实例学习1:单透镜(a singlet)
  13. 用html设计logo,终于知道网页logo设计要点
  14. 一个软件项目的成本构成及评估方法
  15. 厉害!他33岁破格晋升教授和博导,成果还打破国外技术垄断
  16. 2021年N1叉车司机考试总结及N1叉车司机操作证考试
  17. 小案例 JavaScript-简易五子棋
  18. Primeng12+ 使用 full-calendar
  19. vs2008+vss2005实现代码管理
  20. 勇立潮头,推动国产数据库产业崛起—“金兰生态 仓起辉煌·2020人大金仓生态大会暨新战略发布会”在京成功召开...

热门文章

  1. (附源码)计算机毕业设计黄淮学院二手物品交易平台
  2. C语言同时满足三个并列条件,你不得不知道的编程基础之同时满足多个条件
  3. 审稿意见回复信英文模板和语料总结
  4. 小米12pro天玑版和小米12pro哪个值得买 两者配置对比
  5. 【Android studio】 制作一张长图,可上下滑动
  6. TCP/IP协议连接状态详解
  7. 黄哥python培训怎样
  8. 大学我都是自学走来的,这些私藏的实用工具/学习网站我贡献出来了,建议收藏精品推荐
  9. 数据库仓工具箱及阿里大数据之路--阅读总结
  10. mysql怎么做排名并列_MySQL实现排名并查询指定用户排名功能,并列排名功能