基于javascript实现日历功能原理及代码实例
日历
在学习javascript过程中,菜鸟教程有一个javascript实例---css日历,感觉挺有趣的,在它的基础上增加了一些简单的功能(差点哭辽)。
功能
- 按照传统日历方式显示该月的每一天。
- 可以突出显示今天的日期
- 可以翻阅上一个月和下一个月的日历
实现
- step1传统日历布局样式:分别将年份与月份、星期、该月的全部天数采用列表布局,排列组成传统日历的样式。
- step2初始化和更新月份:先将列表清空(debug过程中,有一个发现,初始化的列表便存在的一个childNodes,该项目中需要清空),然后再填入前导空白(为了和星期能够对应),再填入具体某一个月的天数。
- step3通过document获取列表对象,改变今天对应行的样式(className变化)来突出显示。
- 其他细节在代码中实现
代码
html代码
CSS日历 CSS日历
❮ ❯ August
2016
CSS代码
@charset"UTF-8"; *{box-sizing:border-box;} ul{list-style-type:none;} body{font-family:Verdana,sans-serif;} .center{ text-align:center; border:3pxsolidgreen; } .month{ padding:70px25px; width:100%; background:#1abc9c; } .monthul{ margin:0; padding:0; } .monthulli{ color:white; font-size:20px; text-transform:uppercase; letter-spacing:3px; } .month.prev{ float:left; padding-top:10px; } .month.next{ float:right; padding-top:10px; } .weekdays{ margin:0; padding:10px0; background-color:#ddd; } .weekdaysli{ display:inline-block; width:13.6%; color:#666; text-align:center; } .days{ padding:10px0; background:#eee; margin:0; } .daysli{ list-style-type:none; display:inline-block; width:13.6%; text-align:center; margin-bottom:5px; font-size:12px; color:#777; } .daysliactive{ padding:5px; background:#1abc9c; color:white!important; } /*Addmediaqueriesforsmallerscreens*/ @mediascreenand(max-width:720px){ .weekdaysli,.daysli{width:13.1%;} } @mediascreenand(max-width:420px){ .weekdaysli,.daysli{width:12.5%;} .daysli.active{padding:2px;} } @mediascreenand(max-width:290px){ .weekdaysli,.daysli{width:12.2%;} }
javascript代码
vardate=newDate(); varyear=date.getFullYear(); varmonth=date.getMonth(); varday=date.getDate(); varweek=date.getDay(); varp=(week-day+1+35)%7+day-1; varmonthName=[ "January","February","March","April","May","June","July","August","September","October","November","December" ]; varmonthNum=[ 31,28,31,30,31,30,31,31,30,31,30,31 ]; varweekName=[ "Su","Mo","Tu","We","Th","Fr","Sa" ]; varaimmonth=month,aimyear=year; functioninit(){ createTitle(year,month); varweekdays=document.getElementById("weekdays"); for(vari=0;i<7;i++){ varx=document.createElement("LI"); vart=document.createTextNode(weekName[i]); x.appendChild(t); weekdays.appendChild(x); } delDay(); createDay(); isnow(); } functionchange(x){ aimmonth+=x; if(aimmonth==-1){ aimyear-=1; aimmonth=11; }elseif(aimmonth==12){ aimyear+=1; aimmonth=0; } createTitle(aimyear,aimmonth); delDay(); createDay(); isnow(); } functioncreateTitle(y,m){ document.getElementById("year").innerHTML=y; document.getElementById("month").innerHTML=monthName[m]; } functioncreateDay(){ vardatetmp=newDate(); datetmp.setFullYear(aimyear,aimmonth,1); varfirstday=datetmp.getDay(); vardays=document.getElementById("days"); for(vari=0;i总结
javascript目前算是起步,最最基础的皮毛学会了,起码不会的东西可以通过去找函数,查资料学习,可能实现的有些复杂,但是最终能够表达出自己的构想,听开心的。下一步,再写一些实例去看jquery。
css仍是不足,有些东西可能会有冲突,无法实现想要的东西,仍要回去学基础的东西,最重要的一点是多练,积累经验,总结规律和思想。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。