摘要:一周有天,返回的數(shù),如果上月最后一天是星期二,看下的日歷是補(bǔ)了三天,我們得到的是,所以為此,之后就是填充最后一天,用處理一下再排序,上一個(gè)月的數(shù)據(jù)就得到了。
完成圖 思路每天進(jìn)步一點(diǎn)點(diǎn)。寫(xiě)個(gè)簡(jiǎn)單的小日歷,依舊用vue,方便
本月的天數(shù)
截取上月的天數(shù)
截取下月天數(shù)
今天給一個(gè)樣式
上月、下月切換
回到今天
大致需要完成的東西有以上東西
html部分本月天數(shù)<{{year}}-{{month}}今
>{{item}}{{item}}{{item}}{{item}}
我主要是將日歷的天數(shù)分成了3部分,創(chuàng)建了3個(gè)數(shù)組來(lái)保存
data(){ return{ prev:[], current:[], next:[], year:"", month:"", weeks:["日","一","二","三","四","五","六"], } },
接下來(lái)獲取本月的天數(shù)
methods:{ currentInfo(){ let date=new Date() this.year=date.getFullYear()//當(dāng)年 this.month=date.getMonth()+1//當(dāng)月 let currentDate=new Date(this.year,this.month,0)//當(dāng)月最后一天 let currentArr=[...Array(currentDate.getDate()).fill(1)]//創(chuàng)建當(dāng)月數(shù)組,填充1 this.current=currentArr.map((item,index)=>item+index)//做數(shù)組處理 },
當(dāng)我們?cè)趧?chuàng)建本月數(shù)組的時(shí)候,我們只需要知道本月最后一天是多少號(hào),便知道創(chuàng)建一個(gè)多少位的數(shù)組。
在獲取時(shí),有很多人使用了五花八門(mén)的方法,也有的人干脆為最后一天建立兩個(gè)12位的數(shù)組,將最后一天放進(jìn)去,先判斷是不是閏年,再用數(shù)組取最后一天的值。
但其實(shí)new Date(Y,M,D),取D為0的時(shí)候能夠取到上一月的最后一天,也無(wú)需判斷是否是閏年,我偶然間發(fā)現(xiàn)的。有興趣的朋友可以追根溯源去找找原因。
上月let prevDate=new Date(this.year,this.month-1,0)//上月最后一天 let prevArr=[...Array(prevDate.getDay()+1).fill(prevDate.getDate())]//創(chuàng)建上月數(shù)組,填充最后一天 this.prev=prevArr.map((item,index)=>item-index).sort((a,b)=>a-b)//做數(shù)組處理
這里先是取到上月最后一天,再取星期,這樣就能計(jì)算出上月需要有幾位補(bǔ)充到當(dāng)月,取當(dāng)月第一天也可以。一周有7天,返回0~6的數(shù),如果上月最后一天是星期二,看下windows的日歷是補(bǔ)了三天,我們prevDate.getDay()得到的是2,所以為此+1,之后就是填充最后一天,用map處理一下再排序,上一個(gè)月的數(shù)據(jù)就得到了。
下月補(bǔ)充進(jìn)來(lái)的數(shù)據(jù)畢竟簡(jiǎn)單,就不多說(shuō)。完整代碼如下:
currentInfo(){ let date=new Date() this.year=date.getFullYear()//當(dāng)年 this.month=date.getMonth()+1//當(dāng)月 let currentDate=new Date(this.year,this.month,0)//當(dāng)月最后一天 let currentArr=[...Array(currentDate.getDate()).fill(1)]//創(chuàng)建當(dāng)月數(shù)組,填充1 this.current=currentArr.map((item,index)=>item+index)//做數(shù)組處理 /*上月*/ let prevDate=new Date(this.year,this.month-1,0)//上月最后一天 let prevArr=[...Array(prevDate.getDay()+1).fill(prevDate.getDate())]//創(chuàng)建上月數(shù)組,填充最后一天 this.prev=prevArr.map((item,index)=>item-index).sort((a,b)=>a-b)//做數(shù)組處理 /*下月*/ let nextArr=[...Array(6-currentDate.getDay()).fill(1)]//創(chuàng)建下月數(shù)組,填充1 this.next=nextArr.map((item,index)=>item+index) },
這樣一個(gè)日歷的主要部分就完成了,和windows下的日歷對(duì)比下,一模一樣就說(shuō)明沒(méi)錯(cuò)
上月和下月按鈕想要獲取上月的日歷,其實(shí)就是重新運(yùn)行了currentInfo()函數(shù),只是月份取得上月,那很簡(jiǎn)單,傳參
currentInfo(year,month){ let date=new Date() this.year=year||date.getFullYear()//當(dāng)年 this.month=month||date.getMonth()+1//當(dāng)月 let currentDate=new Date(this.year,this.month,0)//當(dāng)月最后一天 let currentArr=[...Array(currentDate.getDate()).fill(1)]//創(chuàng)建當(dāng)月數(shù)組,填充1 this.current=currentArr.map((item,index)=>item+index)//做數(shù)組處理 /*上月*/ let prevDate=new Date(this.year,this.month-1,0)//上月最后一天 let prevArr=[...Array(prevDate.getDay()+1).fill(prevDate.getDate())]//創(chuàng)建上月數(shù)組,填充最后一天 this.prev=prevArr.map((item,index)=>item-index).sort((a,b)=>a-b)//做數(shù)組處理 /*下月*/ let nextArr=[...Array(6-currentDate.getDay()).fill(1)]//創(chuàng)建下月數(shù)組,填充1 this.next=nextArr.map((item,index)=>item+index) }
我們將函數(shù)進(jìn)行如上改造,當(dāng)有年月參數(shù)傳入時(shí),就使用參數(shù);當(dāng)沒(méi)有年月參數(shù)傳入時(shí),就使用系統(tǒng)時(shí)間的年月。之后只需要做兩個(gè)按鈕函數(shù)就行了
prevM(){ let year,month if(this.month!==1){//不是一月,月份遞減,年份不變 month=--this.month year=this.year }else{//否則年份遞減,月份變?yōu)?2 month=12 year=--this.year } this.currentInfo(year,month) }, nextM(){ let year,month if(this.month!==12){ month=++this.month year=this.year }else{ month=1 year=++this.year } this.currentInfo(year,month) },當(dāng)天的樣式
該如何加當(dāng)天的樣式其實(shí)有很多方法,我是先找出當(dāng)天,然后和循環(huán)的index掛鉤,判斷是否需要加樣式
先在data中加入isDay這個(gè)數(shù)據(jù)
currentDay(){ let date=new Date() if(this.year===date.getFullYear()&&this.month===date.getMonth()+1){//如果是當(dāng)年當(dāng)月 this.isDay=date.getDate()-1//獲取到今天的號(hào)數(shù),因?yàn)閕ndex是從0循環(huán),所以這里-1 }else{ this.isDay="" } },
之后就是通過(guò)vue綁定樣式,當(dāng)(今天-1)=index,即:class="isDay===index?"active":"""給此添加一個(gè)active樣式
回到今天backDay(){ this.currentInfo() this.currentDay() }最后
mounted(){ this.currentInfo() this.currentDay() }
利用生命周期函數(shù)進(jìn)行初始化(這個(gè)應(yīng)該一開(kāi)始就做)
源碼https://github.com/yuyeqianxu...
希望能幫助到和我一樣的小白朋友們,有bug麻煩反饋,謝謝!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90084.html
摘要:數(shù)據(jù)來(lái)源臺(tái)灣缺省完成圖初始化選完省之后部分請(qǐng)選擇請(qǐng)選擇暫無(wú)數(shù)據(jù)暫無(wú)數(shù)據(jù)一開(kāi)始的初始狀態(tài)是省份可以選擇,利用來(lái)控制市和區(qū)的現(xiàn)實(shí)選項(xiàng)。當(dāng)省份未選擇時(shí),市區(qū)因?yàn)闆](méi)有數(shù)據(jù),所以會(huì)選擇暫無(wú)數(shù)據(jù)。 依舊使用vue,不需要關(guān)注dom太方便了。數(shù)據(jù)來(lái)源(臺(tái)灣缺?。篽ttps://github.com/airyland/c... 完成圖 初始化 showImg(https://segmentfault...
摘要:貪吃蛇并不是通過(guò)操作來(lái)完成移動(dòng)的,而是通過(guò)記錄貪吃蛇的路徑來(lái)將身體渲染出來(lái)。目前沒(méi)有內(nèi)置的操作符判斷對(duì)象的內(nèi)容是否相同。 還是用的vue,本來(lái)以為不合適,但想法錯(cuò)了。貪吃蛇并不是通過(guò)操作dom來(lái)完成移動(dòng)的,而是通過(guò)記錄貪吃蛇的路徑來(lái)將身體渲染出來(lái)。 一般移動(dòng)元素,我們都是變動(dòng)它的css達(dá)到目的,但我在寫(xiě)貪吃蛇的時(shí)候發(fā)現(xiàn)這樣很難以實(shí)現(xiàn),參考了網(wǎng)上的資源,發(fā)現(xiàn)大部分人是通過(guò)記錄貪吃蛇的路徑...
摘要:并不是所有人寫(xiě)的代碼或者插件都適合小白使用,比如這是一個(gè)的滾動(dòng)插件,大多數(shù)人使用了之后發(fā)現(xiàn)滾動(dòng)不了,去作者提,其實(shí)是他們并不懂滾動(dòng)的原理。 最近在這里看了一篇關(guān)于面試的文章《回顧自己三次失敗的面試經(jīng)歷》,作者三次倒在了輪播圖上。囧,所以我也寫(xiě)個(gè)輪播圖看看。這次是用jQuery寫(xiě)的,因?yàn)樽罱恢痹谘芯縥Query插件的寫(xiě)法,所以用jQuery寫(xiě)的,而且我發(fā)現(xiàn),我vue用太多,完全不熟悉d...
摘要:一個(gè)小白的成長(zhǎng)日記大家好,這是我在飯否的第一篇筆記,先簡(jiǎn)單介紹一下自己,我于年在北京工業(yè)大學(xué)本科畢業(yè),同年月來(lái)到法國(guó)巴黎工程師學(xué)校讀研,在年月畢業(yè)后加入了法國(guó)興業(yè)銀行擔(dān)任數(shù)據(jù)分析師的職位,主要負(fù)責(zé)數(shù)據(jù)質(zhì)量監(jiān)測(cè),分析,潛在風(fēng)險(xiǎn)預(yù)測(cè),前端可視化 一個(gè)小白的成長(zhǎng)日記 大家好,這是我在飯否的第一篇筆記,先簡(jiǎn)單介紹一下自己,我于2016年在北京工業(yè)大學(xué)本科畢業(yè),同年9月來(lái)到法國(guó)巴黎Efrei工程...
摘要:閑暇之余,聽(tīng)媳婦嘀咕說(shuō)要給她做一個(gè)能表達(dá)她每日心情的小程序,只能她在上面發(fā)東西。既然媳婦發(fā)話了,就花點(diǎn)心思做一個(gè)吧,因?yàn)闆](méi)有圖,所有布局全靠自己瞎編,下面結(jié)合圖片和代碼跟大家講解下實(shí)現(xiàn)過(guò)程,內(nèi)容略長(zhǎng),感興趣的可以一覽。 閑暇之余,聽(tīng)媳婦嘀咕說(shuō)要給她做一個(gè)能表達(dá)她每日心情的小程序,只能她在上面發(fā)東西。既然媳婦發(fā)話了,就花點(diǎn)心思做一個(gè)吧,因?yàn)闆](méi)有UI圖,所有布局全靠自己瞎編,下面結(jié)合圖片和...
閱讀 2599·2021-09-23 11:21
閱讀 1894·2021-09-22 15:15
閱讀 985·2021-09-10 11:27
閱讀 3452·2019-08-30 15:54
閱讀 665·2019-08-30 15:52
閱讀 1343·2019-08-30 15:44
閱讀 2358·2019-08-29 15:06
閱讀 2984·2019-08-28 18:21