最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue.js實現(xiàn)日歷功能

 更新時間:2021年08月12日 15:52:08   作者:LK30265  
這篇文章主要為大家詳細介紹了Vue.js實現(xiàn)日歷功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Vue.js實現(xiàn)日歷功能的具體代碼,供大家參考,具體內(nèi)容如下

Github

功能需求

使用 Vue.js 實現(xiàn)指定年月的日歷表,配合后臺接口數(shù)據(jù),添加對應(yīng)日期的空氣質(zhì)量描述等信息。后臺傳遞當月空氣質(zhì)量指數(shù)的數(shù)據(jù),前端生成日歷表后將空氣質(zhì)量指數(shù)添加到對應(yīng)日期上。

空氣質(zhì)量數(shù)據(jù)示例:

data.json

{
  "code": 200,
  "msg": "",
  "data": [{
      "time": "2020-08-01",
      "kqzl": "優(yōu)"
    },
    {
      "time": "2020-08-02",
      "kqzl": "良"
    },
    {
      "time": "2020-08-03",
      "kqzl": "良"
    }
  ]
}

實現(xiàn)方法

<template>
  <div id="app">
    <h1 style="text-align:center;">
      2020-08</h1>
    <div class="calendar-container">
      <div class="calendar-week">
        <div class="cw-inner">
          <div class="cw-item"
               :style="{width: setItemWidth}"
               v-for="(item, index) of week"
               :key="index">
            {{item}}
          </div>
        </div>
      </div>
      <div class="calendar-day">
        <div class="cd-list"
             v-for="(item, index) of day"
             :key="index">
          <div class="cl-item"
               :style="{width: setItemWidth}"
               v-for="(child,index) of item"
               :key="index"
               :class="[{has: child}]">
            <div class="ci-inner"
                 v-if="child">
              <span>{{child.date}}</span>
              <span v-if="child.text"
                    class="aqi"
                    :class="child.text.kqzl">
                {{child.text.kqzl}}
              </span>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import kqzlData from './assets/data.json' // 空氣質(zhì)量數(shù)據(jù)
export default {
  name: 'app',
  data() {
    return {
      week: [
        '星期一',
        '星期二',
        '星期三',
        '星期四',
        '星期五',
        '星期六',
        '星期日',
      ],
      day: [],
    }
  },
  computed: {
    setItemWidth() {
      return 100 / 7 + '%'
    },
  },
  mounted() {
    this.createCalendar(2020, 8)
  },
  methods: {
    /**
     * @name: 格式化日期
     * @param {date}
     */
    dateFormat(date) {
      let dateArr = date.split('-')
      let mounth = dateArr[1] >= 10 ? dateArr[1] : '0' + dateArr[1]
      let day = dateArr[2] >= 10 ? dateArr[2] : '0' + dateArr[2]
      return dateArr[0] + '-' + mounth + '-' + day
    },

    /**
     * @name: 日期信息
     * @param {date}
     */
    getDayInfo(date) {
      let kqzl = kqzlData.data
      let formatDate = this.dateFormat(date)
      let txt = kqzl[kqzl.findIndex(item => item.time === formatDate)]
      return txt
    },

    /**
     * @name: 生成日歷表
     * @param {year}
     * @param {mounth}
     */
    createCalendar(year, mounth) {
      // 某個月一共有多少天
      let allDay = new Date(year, mounth, 0).getDate()
      // 某個月1號是星期幾
      let firstDay = this.judjeFirstDay(year, mounth)
      // 需要多少行來展示
      let row = Math.ceil((allDay + firstDay) / 7)
      let k = firstDay - 1
      let result = []
      let count = 1
      // 生成日歷二維數(shù)組
      for (let i = 0; i < row; i++) {
        result[i] = new Array(7)
        do {
          if (count <= allDay) {
            result[i][k] = {
              date: count,
              // 根據(jù)接口匹配日期對應(yīng)的信息
              text: this.getDayInfo(year + '-' + mounth + '-' + count),
            }
            k++
            count++
          } else {
            break
          }
        } while (k < 7)
        k = 0
      }
      this.day = result
    },

    /**
     * @name: 判斷某年某月1號是星期幾
     * @param {year}
     * @param {mounth}
     */
    judjeFirstDay(year, mounth) {
      let date = new Date(year, mounth - 1, 1)
      let week = date.getDay()
      let weekArr = [1, 2, 3, 4, 5, 6, 7]
      return weekArr[week - 1]
    },
  },
}
</script>

<style lang="scss">
.calendar-container {
  text-align: center;
  .calendar-week {
    margin-bottom: 4px;
    padding: 0 4px;
    color: #fff;
    .cw-inner {
      overflow: hidden;
      background: #a0a0a0;
      .cw-item {
        float: left;
        padding: 8px 0;
      }
    }
  }
  .calendar-day {
    .cd-list {
      overflow: hidden;
      .cl-item {
        float: left;
        min-height: 30px;
        box-sizing: border-box;
        padding: 4px;
        .ci-inner {
          background: #f5f5f5;
          padding: 8px 0;
          span {
            display: inline-block;
            &.aqi {
              color: #fff;
              background: #a7cf8c;
              padding: 0 4px;
              border-radius: 4px;
            }
            &.優(yōu) {
              background: #a7cf8c;
            }
            &.良 {
              background: #f7da64;
            }
            &.輕度 {
              background: #f29e39;
            }
            &.中度 {
              background: #da555d;
            }
            &.重度 {
              background: #b9377a;
            }
            &.嚴重 {
              background: #881326;
            }
          }
        }
      }
    }
  }
}
</style>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue引入ueditor及node后臺配置詳解

    vue引入ueditor及node后臺配置詳解

    這篇文章主要介紹了vue引入ueditor及node后臺配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Nuxt封裝@nuxtjs/axios請求后端數(shù)據(jù)方式

    Nuxt封裝@nuxtjs/axios請求后端數(shù)據(jù)方式

    這篇文章主要介紹了Nuxt封裝@nuxtjs/axios請求后端數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 快速解決element的autofocus失效問題

    快速解決element的autofocus失效問題

    這篇文章主要介紹了快速解決element的autofocus失效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue的滾動條插件實現(xiàn)代碼

    vue的滾動條插件實現(xiàn)代碼

    這篇文章主要介紹了vue的滾動條插件實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • Vue指令指令大全

    Vue指令指令大全

    本文為大家介紹了VUE中內(nèi)置指令包括:v-text,v-html,v-show,v-if,v-else,v-else-if,v-for,v-on,v-bind,v-model,v-pre,v-cloak,v-once
    2019-02-02
  • Vue+element使用row-class-name修改el-table某一行解決背景色無效的方法

    Vue+element使用row-class-name修改el-table某一行解決背景色無效的方法

    本文主要介紹了Vue+element使用row-class-name修改el-table某一行解決背景色無效的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Vue3封裝自定義指令的操作步驟

    Vue3封裝自定義指令的操作步驟

    在?Vue?3?中,封裝自定義指令可以幫助你更好地復用一些常見的DOM操作邏輯,自定義指令可以用于處理一些特定的用戶交互行為,本文給大家介紹了Vue3封裝自定義指令的示例,需要的朋友可以參考下
    2024-11-11
  • 解決Vue watch里調(diào)用方法的坑

    解決Vue watch里調(diào)用方法的坑

    這篇文章主要介紹了解決Vue watch里調(diào)用方法的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue.js在標簽屬性中插入變量參數(shù)的方法

    vue.js在標簽屬性中插入變量參數(shù)的方法

    這篇文章主要介紹了vue.js在標簽屬性中插入變量參數(shù)的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-03-03
  • vue中@click和@click.native.prevent的區(qū)別

    vue中@click和@click.native.prevent的區(qū)別

    這篇文章主要介紹了vue中@click和@click.native.prevent的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04

最新評論

嵩明县| 梨树县| 曲水县| 盈江县| 额尔古纳市| 明星| 阜平县| 秦皇岛市| 苍南县| 吉安市| 岳阳县| 德格县| 宁海县| 德庆县| 秦安县| 健康| 广州市| 贵港市| 岑巩县| 雷山县| 邹平县| 青岛市| 象州县| 五莲县| 霞浦县| 赤城县| 镇雄县| 揭西县| 济阳县| 蚌埠市| 唐海县| 龙口市| 嘉定区| 福贡县| 昌图县| 密云县| 重庆市| 深泽县| 克什克腾旗| 长海县| 个旧市|