前端:自制年历

详细思路可以看我的另一篇文章《前端:自制月历》,基本思路一致,只是元素布局略有差异

①获取起始位start=new Date(moment().format('yyyy-01-01')).getDay()

②获取总的格子数num=Math.ceil(365/7)*7,这里用365或者366计算结果都是一样的371

③获取数据,假设年份是YYYY

handleGetDate(){

let dateArr=[],time=moment().format('yyyy-01-01')

for(let i=0;i<num;i++){

if(i < start || time > moment( YYYY+ '-12').endOf('month').format('yyyy-MM-DD')){

dateArr.push(0)

}

else{ dateArr.push(time);time=moment(time).add(1,'days').format('yyyy-MM-DD') }

}

}

⑤视图绑定数据

<div class="calendar">

<header>

<span>1月</span><span>2月</span><span>3月</span><span>4月</span><span>5月</span><span>6月</span><span>7月</span><span>8月</span><span>9月</span><span>10月</span><span>11月</span><span>12月</span>

</header>

<section>

<span>日</span><span>一</span><span>二</span><span>三</span><span>四</span><span>五</span><span>六</span>

<span v-for="item,index in data.dateArr" :key="item+''+index">

<div v-if="item!= 0">{{ item }}</div>

</span>

</section>

</div>

⑥根据项目需求调整样式

section{

display:flex;flex-direction:column;flex-wrap:wrap;height:140px;

span{

height:20px;width:20px;

}

}

这是在某个项目中实现的效果:

相关推荐
前端李易安26 分钟前
Web常见的攻击方式及防御方法
前端
PythonFun44 分钟前
Python技巧:如何避免数据输入类型错误
前端·python
hakesashou1 小时前
python交互式命令时如何清除
java·前端·python
天涯学馆1 小时前
Next.js与NextAuth:身份验证实践
前端·javascript·next.js
HEX9CF1 小时前
【CTF Web】Pikachu xss之href输出 Writeup(GET请求+反射型XSS+javascript:伪协议绕过)
开发语言·前端·javascript·安全·网络安全·ecmascript·xss
ConardLi1 小时前
Chrome:新的滚动捕捉事件助你实现更丝滑的动画效果!
前端·javascript·浏览器
ConardLi1 小时前
安全赋值运算符,新的 JavaScript 提案让你告别 trycatch !
前端·javascript
凌云行者1 小时前
使用rust写一个Web服务器——单线程版本
服务器·前端·rust
华农第一蒟蒻2 小时前
Java中JWT(JSON Web Token)的运用
java·前端·spring boot·json·token
积水成江2 小时前
关于Generator,async 和 await的介绍
前端·javascript·vue.js