最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

基于Vue实现支持按周切换的日历

来源:懂视网 责编:小采 时间:2020-11-27 22:33:19
文档

基于Vue实现支持按周切换的日历

基于Vue实现支持按周切换的日历:基于Vue的日历小功能,可根据实际开发情况按每年、每月、每周、进行切换,具体内容如下 <template> <div class=date> <!-- 年份 月份 --> <div class=month> <p>{{ currentYear
推荐度:
导读基于Vue实现支持按周切换的日历:基于Vue的日历小功能,可根据实际开发情况按每年、每月、每周、进行切换,具体内容如下 <template> <div class=date> <!-- 年份 月份 --> <div class=month> <p>{{ currentYear

基于Vue的日历小功能,可根据实际开发情况按每年、每月、每周、进行切换,具体内容如下

<template>
 <div class="date">
 <!-- 年份 月份 -->
 <div class="month">
 <p>{{ currentYear }}年{{ currentMonth }}月</p>
 </div>
 <!-- 星期 -->
 <ul class="weekdays">
 <li>一</li>
 <li>二</li>
 <li>三</li>
 <li>四</li>
 <li>五</li>
 <li>六</li>
 <li>日</li>
 </ul>
 <!-- 日期 -->
 <ul class="days">
 <li @click="pick(day)" v-for="(day, index) in days" :key="index">
 <!--本月-->
 <span v-if="day.getMonth()+1 != currentMonth" class="other-month">{{ day.getDate() }}</span>
 <span v-else>
 <!--今天-->
 <span v-if="day.getFullYear() == new Date().getFullYear() && day.getMonth() == new Date().getMonth() && day.getDate() == new Date().getDate()" class="active">{{ day.getDate() }}</span>
 <span v-else>{{ day.getDate() }}</span>
 </span>
 </li>
 </ul>
 </div>
</template>

js部分:目前默认显示一周,可根据实际情况更改

<script>


 export default {
 name: 'date',

 data () {
 return {
 currentYear: 1970, // 年份
 currentMonth: 1, // 月份
 currentDay: 1, // 日期
 currentWeek: 1, // 星期
 days: [],
 }
 },

 mounted () {

 },

 created () {
 this.initData(null)
 },

 methods: {
 formatDate (year, month, day) {
 const y = year
 let m = month
 if (m < 10) m = `0${m}`
 let d = day
 if (d < 10) d = `0${d}`
 return `${y}-${m}-${d}`
 },

 initData (cur) {
 let date = ''
 if (cur) {
 date = new Date(cur)
 } else {
 date = new Date()
 }
 this.currentDay = date.getDate() // 今日日期 几号
 this.currentYear = date.getFullYear() // 当前年份
 this.currentMonth = date.getMonth() + 1 // 当前月份
 this.currentWeek = date.getDay() // 1...6,0 // 星期几
 if (this.currentWeek === 0) {
 this.currentWeek = 7
 }
 const str = this.formatDate(this.currentYear, this.currentMonth, this.currentDay)// 今日日期 年-月-日
 this.days.length = 0
 // 今天是周日,放在第一行第7个位置,前面6个 这里默认显示一周,如果需要显示一个月,则第二个循环为 i<= 35- this.currentWeek
 /* eslint-disabled */
 for (let i = this.currentWeek - 1; i >= 0; i -= 1) {
 const d = new Date(str)
 d.setDate(d.getDate() - i)
 // console.log(y:" + d.getDate())
 this.days.push(d)
 }
 for (let i = 1; i <= 7 - this.currentWeek; i += 1) {
 const d = new Date(str)
 d.setDate(d.getDate() + i)
 this.days.push(d)
 }
 },

 // 上个星期
 weekPre () {
 const d = this.days[0] // 如果当期日期是7号或者小于7号
 d.setDate(d.getDate() - 7)
 this.initData(d)
 },

 // 下个星期
 weekNext () {
 const d = this.days[6] // 如果当期日期是7号或者小于7号
 d.setDate(d.getDate() + 7)
 this.initData(d)
 },

 // 上一個月 传入当前年份和月份
 pickPre (year, month) {
 const d = new Date(this.formatDate(year, month, 1))
 d.setDate(0)
 this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1))
 },


 // 下一個月 传入当前年份和月份
 pickNext (year, month) {
 const d = new Date(this.formatDate(year, month, 1))
 d.setDate(35)
 this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1))
 },

 // 当前选择日期
 pick (date) {
 alert(this.formatDate(date.getFullYear(), date.getMonth() + 1, date.getDate()))
 },
 },
 }
</script>

<style lang="scss">
 @import "~base";

 .date {
 height: px2rem(180);
 color: #333;

 .month {
 font-size: px2rem(24);
 text-align: center;
 margin-top: px2rem(20);
 }

 .weekdays {
 display: flex;
 font-size: px2rem(28);
 margin-top: px2rem(20);

 li {
 flex: 1;
 text-align: center;
 }
 }

 .days {
 display: flex;

 li {
 flex: 1;
 font-size: px2rem(30);
 text-align: center;
 margin-top: px2rem(10);
 line-height: px2rem(60);

 .active {
 display: inline-block;
 width: px2rem(60);
 height: px2rem(60);
 color: #fff;
 border-radius: 50%;
 background-color: #fa6854;
 }

 .other-month {
 color: #e4393c;
 }
 }
 }
 }
</style>

相关参考链接:Vue.js创建Calendar日历效果

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

基于Vue实现支持按周切换的日历

基于Vue实现支持按周切换的日历:基于Vue的日历小功能,可根据实际开发情况按每年、每月、每周、进行切换,具体内容如下 <template> <div class=date> <!-- 年份 月份 --> <div class=month> <p>{{ currentYear
推荐度:
标签: 切换 VUE 日历
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top