vue 日歷插件

本人是一個(gè)剛剛?cè)肼毿〈a農(nóng),用于記錄自己學(xué)習(xí)的過(guò)程,寫的不好請(qǐng)見(jiàn)諒。

為什么要改寫日歷插件?

寫多了vue項(xiàng)目看到原生的js、jq插件就一陣頭疼

大多數(shù)網(wǎng)上的js日歷插件都長(zhǎng)這樣

test1

這樣

test2

還有這樣

test3

網(wǎng)上沒(méi)有合適的插件就只好自己造

參考了githup的相關(guān)代碼之后梳理了一下需要做的幾個(gè)步驟

  1. 初始化日歷默認(rèn)值,在原來(lái)的代碼中加入需要的方法
  //初始化年月日插件默認(rèn)值
            function dateCtrlInit() {
                var date = new Date();
                var dateArr = {
                    yy: date.getYear(),
                    mm: date.getMonth(),
                    dd: date.getDate() - 1,
                    hh: 0,
                };
                var date_hh = _self.gearDate.querySelector(".date_hh");
                if (date_hh && date_hh.getAttribute("val")) {
                    //得到日期的值
                    var hhVal = parseInt(date_hh.getAttribute("val"));
                    var hhHtml = [
                        // 時(shí)辰value
                        {subName:'時(shí)辰未知',value:0},
                        {subName:'23:00-00:59(子)',value:0},
                        {subName:'01:00-02:59(丑)',value:1},
                        {subName:'03:00-04:59(寅)',value:2},
                        {subName:'05:00-06:59(卯)',value:3},
                        {subName:'07:00-08:59(辰)',value:4},
                        {subName:'09:00-10:59(巳)',value:5},
                        {subName:'11:00-12:59(午)',value:6},
                        {subName:'13:00-14:59(未)',value:7},
                        {subName:'15:00-16:59(申)',value:8},
                        {subName:'17:00-18:59(酉)',value:9},
                        {subName:'19:00-20:59(戌)',value:10},
                        {subName:'21:00-22:59(亥)',value:11},
                    ]
                    itemStr = "";
                    for(var p = 0,len = hhHtml.length; p < len; p++){
                        itemStr += "<div class='tooth_hh' data-value="+hhHtml[p].value+">" + hhHtml[p].subName + "</div>";
                    }

                    date_hh.innerHTML = itemStr;
                     // 中文轉(zhuǎn)換,type:rm閏月,mm月份,dd日期,num值
                function getChinese(type,num){
                var rmArr=['閏正月','閏二月','閏三月','閏四月','閏五月','閏六月','閏七月','閏八月','閏九月','閏十月','閏冬月','閏臘月'];
                var mmArr=['正月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'];
                var ddArr=['初一','初二','初三','初四','初五','初六','初七','初八','初九','初十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','廿一','廿二','廿三','廿四','廿五','廿六','廿七','廿八','廿九','三十','三十一'];

                if(type=='rm') return rmArr[num-1]
                if(type=='mm') return mmArr[num-1];
                if(type=='dd') return ddArr[num-1];
            }

中間省略了很多代碼 都是網(wǎng)上搬運(yùn)沒(méi)什么借鑒意義最后記得 export default lCalendar 將這個(gè)模塊暴露可以讓外部引用,第一編寫時(shí)就應(yīng)為忘記暴露而出錯(cuò)

  1. 在vue項(xiàng)目中入口js引入jq
    import Vue from 'vue'
    import App from './App'
    import router from './router'
    Vue.config.productionTip = false
    import $ from 'jquery'
    /* eslint-disable no-new */
    new Vue({
      el: '#app',
      router,
      components: { App },
      template: '<App/>'
    })

在webpack.base.conf.js里加入

    var webpack = require("webpack")

在module.exports的最后加入

  // 增加一個(gè)plugins
  plugins: [
    new webpack.ProvidePlugin({
        $: "jquery",
        jQuery: "jquery"
    })
 ],
  1. 在vue項(xiàng)目中初始化插件

    html代碼

  <div class="calendar">
    <div class="hello">{{msg}}</div>
      <section class="section-datetime">
          <div id="datetime" data-id="birthday">選擇日期</div>
          <input type="hidden" id="birthday" name="birthday"  value="" ref="birthday" >
      </section>
    <button @click="test">測(cè)試</button>
  </div>
import lCalendar from '../libs/js/lCalendar.js'
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to js-lunar-calendar'
    }
  },
  //頁(yè)面掛載時(shí)初始化日期插件
  mounted(){
    var calendar1 = new lCalendar().init('#datetime');
    new lCalendar().init('#dete');
  },

看一下效果··

移動(dòng)端瀏覽
js-lunar-calendar2.png
pc端瀏覽
js-lunar-calendar1.png

結(jié)語(yǔ)

第一次發(fā)文也不知道寫什么好,附上項(xiàng)目地址如果碰巧對(duì)大家能夠有幫助那真的是太好啦,希望大家多給我一些鼓勵(lì)。

js農(nóng)歷插件demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 以下均為我熟練使用的技能 Web開發(fā):PHP/Node Web框架:ThinkPHP/CodeIgniter 前端...
    籬外聽雨閱讀 241評(píng)論 0 0
  • Ajax工作原理及實(shí)例 1、關(guān)于ajax的名字 ajax 的全稱是Asynchronous JavaScript ...
    雷爺_fefc閱讀 303評(píng)論 0 1
  • 下載地址: 百度云:https://pan.baidu.com/s/1kU8YqrH 密碼: hmdn Githu...
    libgcc閱讀 288,367評(píng)論 227 51
  • 柳絮紛飛, 凌亂一世繁華。 世風(fēng)蕭瑟, 縹緲天下萬(wàn)物。 嘆人生艱辛,明世間糟淤。 臨蒼生茫然, 知百態(tài)艱辛。 望爾...
    冥非塵閱讀 595評(píng)論 1 0
  • 沒(méi)個(gè)事件的發(fā)生都有他的倆面性,還有一個(gè)就是減少零和博毅的發(fā)生,尋找方式方法達(dá)到雙方共贏實(shí)現(xiàn)每個(gè)人的最大價(jià)值化,在合...
    土栗子閱讀 95評(píng)論 0 0