成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

小白成長(zhǎng)日記:寫(xiě)個(gè)日歷

muzhuyu / 1512人閱讀

摘要:一周有天,返回的數(shù),如果上月最后一天是星期二,看下的日歷是補(bǔ)了三天,我們得到的是,所以為此,之后就是填充最后一天,用處理一下再排序,上一個(gè)月的數(shù)據(jù)就得到了。

每天進(jìn)步一點(diǎn)點(diǎn)。寫(xiě)個(gè)簡(jiǎn)單的小日歷,依舊用vue,方便

完成圖

思路

本月的天數(shù)

截取上月的天數(shù)

截取下月天數(shù)

今天給一個(gè)樣式

上月、下月切換

回到今天

大致需要完成的東西有以上東西

html部分
<

{{year}}-{{month}}

>
{{item}}
{{item}}
本月天數(shù)

我主要是將日歷的天數(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

相關(guān)文章

  • 小白成長(zhǎng)日記寫(xiě)個(gè)省市區(qū)三級(jí)聯(lián)動(dòng)

    摘要:數(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...

    JerryC 評(píng)論0 收藏0
  • 小白成長(zhǎng)日記寫(xiě)個(gè)貪吃蛇

    摘要:貪吃蛇并不是通過(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ò)記錄貪吃蛇的路徑...

    archieyang 評(píng)論0 收藏0
  • 小白成長(zhǎng)日記:一步一步寫(xiě)個(gè)輪播圖插件

    摘要:并不是所有人寫(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...

    notebin 評(píng)論0 收藏0
  • Python 基礎(chǔ)起步(一)寫(xiě)在開(kāi)篇的話,寫(xiě)給同為小白的你

    摘要:一個(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工程...

    shadowbook 評(píng)論0 收藏0
  • 你的心事我全知曉——心情日記小程序丨實(shí)戰(zhàn)

    摘要:閑暇之余,聽(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é)合圖片和...

    lylwyy2016 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<