最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

基于Vue實(shí)現(xiàn)支持按周切換的日歷

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:33:19
文檔

基于Vue實(shí)現(xiàn)支持按周切換的日歷

基于Vue實(shí)現(xiàn)支持按周切換的日歷:基于Vue的日歷小功能,可根據(jù)實(shí)際開發(fā)情況按每年、每月、每周、進(jìn)行切換,具體內(nèi)容如下 <template> <div class=date> <!-- 年份 月份 --> <div class=month> <p>{{ currentYear
推薦度:
導(dǎo)讀基于Vue實(shí)現(xiàn)支持按周切換的日歷:基于Vue的日歷小功能,可根據(jù)實(shí)際開發(fā)情況按每年、每月、每周、進(jìn)行切換,具體內(nèi)容如下 <template> <div class=date> <!-- 年份 月份 --> <div class=month> <p>{{ currentYear

基于Vue的日歷小功能,可根據(jù)實(shí)際開發(fā)情況按每年、每月、每周、進(jìn)行切換,具體內(nèi)容如下

<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部分:目前默認(rèn)顯示一周,可根據(jù)實(shí)際情況更改

<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$d6dosg4`
 return `${y}-${m}-$i4nu1am`
 },

 initData (cur) {
 let date = ''
 if (cur) {
 date = new Date(cur)
 } else {
 date = new Date()
 }
 this.currentDay = date.getDate() // 今日日期 幾號(hào)
 this.currentYear = date.getFullYear() // 當(dāng)前年份
 this.currentMonth = date.getMonth() + 1 // 當(dāng)前月份
 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個(gè)位置,前面6個(gè) 這里默認(rèn)顯示一周,如果需要顯示一個(gè)月,則第二個(gè)循環(huán)為 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)
 }
 },

 // 上個(gè)星期
 weekPre () {
 const d = this.days[0] // 如果當(dāng)期日期是7號(hào)或者小于7號(hào)
 d.setDate(d.getDate() - 7)
 this.initData(d)
 },

 // 下個(gè)星期
 weekNext () {
 const d = this.days[6] // 如果當(dāng)期日期是7號(hào)或者小于7號(hào)
 d.setDate(d.getDate() + 7)
 this.initData(d)
 },

 // 上一個(gè)月 傳入當(dāng)前年份和月份
 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))
 },


 // 下一個(gè)月 傳入當(dāng)前年份和月份
 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))
 },

 // 當(dāng)前選擇日期
 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>

相關(guān)參考鏈接:Vue.js創(chuàng)建Calendar日歷效果

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

基于Vue實(shí)現(xiàn)支持按周切換的日歷

基于Vue實(shí)現(xiàn)支持按周切換的日歷:基于Vue的日歷小功能,可根據(jù)實(shí)際開發(fā)情況按每年、每月、每周、進(jìn)行切換,具體內(nèi)容如下 <template> <div class=date> <!-- 年份 月份 --> <div class=month> <p>{{ currentYear
推薦度:
標(biāo)簽: 切換 VUE 日歷
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top