iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > 其他 >详解怎么使用vue封装一个自定义日历组件
  • 217
分享到

详解怎么使用vue封装一个自定义日历组件

Vue.js数据可视化前端 2023-05-14 22:05:49 217人浏览 独家记忆
摘要

执行这个方法之后,此时calendarProps的值为:4、根据日历属性生成日历日期的数据当我们已经知道本月第一天对应的周几索引值、本月一共有多少天和上个月一共有多少天这三个核心数据之后,就可以开始生成对应的日历数据了。思路如下:由于大部分

执行这个方法之后,此时calendarProps的值为:

image.png

4、根据日历属性生成日历日期的数据

当我们已经知道本月第一天对应的周几索引值本月一共有多少天上个月一共有多少天这三个核心数据之后,就可以开始生成对应的日历数据了。

思路如下

  1. 由于大部分情况下,本月的第一天不是从头开始的,之前的部分是上个月的日期。所以第一行要单独进行处理。
  2. 设置一个公用的date数值,初始值设置为1。然后从本月第一天对应的周几索引值开始进行递增。本月之前的日期和之后的日期设置一个算法进行计算。
  3. 为了方便之后进行日期切换、样式区分,将生成的数据加工成一个对象,其中包含日期类型——dateType,表示是本月还是上月还是下月;
function setCalendarData() {  let i;  let date = 1;  const originData = [];  const firstRow = [];  // 设置第一行数据
  for (i = 0; i <= 6; i++) {    // 设置目标月份之前月份的日期数据
    if (i < calendarProps.target.firstDayIndex) {      const previousDate =
        calendarProps.previous.totalDays -
        calendarProps.target.firstDayIndex +
        (i + 1);
      firstRow.push({        dateObj: new Date(
          calendarProps.target.year,
          calendarProps.target.month - 1,
          previousDate
        ),        dateNumber: previousDate,        dateType: "previous"
      });
    } else {      // 设置目标月份当月的日期数据
      firstRow.push({        dateObj: new Date(
          calendarProps.target.year,
          calendarProps.target.month,
          date
        ),        dateNumber: date,        dateType: "current"
      });
      date++;
    }
  }
  originData.push(firstRow);  // 设置后面五行的数据
  for (let j = 0; j <= 4; j++) {    const rowData = [];    for (let k = 0; k <= 6; k++) {      // 设置目标月份剩下的日期数据
      if (date <= calendarProps.target.totalDays) {
        rowData.push({          dateObj: new Date(
            calendarProps.target.year,
            calendarProps.target.month,
            date
          ),          dateNumber: date,          dateType: "current"
        });
      } else {        // 设置目标月份下个月的日期数据
        const nextDate = date - calendarProps.target.totalDays;
        rowData.push({          dateObj: new Date(
            calendarProps.target.year,
            calendarProps.target.month + 1,
            nextDate
          ),          dateNumber: nextDate,          dateType: "next"
        });
      }
      date++;
    }
    originData.push(rowData);
  }
  calendarData.value = originData;
}复制代码

至此,这个日历组件的核心部分的逻辑就已经实现了。你看,是不是很简单?

接下来,我们只需要根据calendarData中的数据渲染出相应的html模板和添加上样式就可以了。

5、添加模板和样式部分

一般来说,日历组件都是网格状的结构,所以我选择table的方式进行渲染。不过你要是问我还有没有别的方式,那还是有的,比如使用flex布局或者grid布局,但是如果采用这种方式的话,calendarData数据结构就不是现在这个样子了。

dom结构如下图:

image.png

至于按钮边框的流动效果,是我参照苏苏的文章做的,详情请见:

Clip-path实现按钮流动边框动画 juejin.cn/post/719877…

然后剩下的样式部分,即兴发挥或者根据UI设计图绘制即可。想必各位都领教过UI姐姐们精美的设计图吧(嘻嘻

具体的代码部分就不贴在文章中了,如有需要可以直接查看下方的完整源码

gitee.com/wushengyuan…

结语

有些感觉很麻烦的组件,可能核心逻辑往往不是那么复杂。有些时候,可能仅仅是需要一些耐心,将代码一行一行的拆解出来阅读,理清楚其中的思路。

学习视频分享:Vuejs入门教程编程基础视频)

以上就是详解怎么使用vue封装一个自定义日历组件的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 详解怎么使用vue封装一个自定义日历组件

本文链接: https://www.lsjlt.com/news/207201.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解怎么使用vue封装一个自定义日历组件
    执行这个方法之后,此时calendarProps的值为:4、根据日历属性生成日历日期的数据当我们已经知道本月第一天对应的周几索引值、本月一共有多少天和上个月一共有多少天这三个核心数据之后,就可以开始生成对应的日历数据了。思路如下:由于大部分...
    99+
    2023-05-14
    Vue.js 数据可视化 前端
  • 怎么封装一个vue自定义日历组件
    这篇文章主要介绍“怎么封装一个vue自定义日历组件”,在日常操作中,相信很多人在怎么封装一个vue自定义日历组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么封装一个vue自定义日历组件”的疑惑有所帮助!...
    99+
    2023-07-05
  • 如何使用vue封装一个自定义日历组件
    本文小编为大家详细介绍“如何使用vue封装一个自定义日历组件”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何使用vue封装一个自定义日历组件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。核心代码实现1、梳理思...
    99+
    2023-07-05
  • 深析如何封装一个vue自定义日历组件
    执行这个方法之后,此时calendarProps的值为:4、根据日历属性生成日历日期的数据当我们已经知道本月第一天对应的周几索引值、本月一共有多少天和上个月一共有多少天这三个核心数据之后,就可以开始生成对应的日历数据了。思路如下:由于大部分...
    99+
    2023-05-14
    Vue.js 数据可视化 前端
  • vue怎么自定义封装API组件
    这篇文章主要介绍vue怎么自定义封装API组件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!自定义封装API组件1.创建vue组件<template>    <...
    99+
    2023-06-29
  • Vue自定义日历小控件使用方法详解
    本文实例为大家分享了Vue自定义日历小控件的具体代码,供大家参考,具体内容如下 废话少说,先上效果图: 可以在效果图中看到,选择不同的月份的时候当月天数与星期几都是一一对应,非当月...
    99+
    2024-04-02
  • vue封装一个弹幕组件详解
    目录前言功能实现1、获取随机颜色随机数生成随机颜色编码生成2、随机生成弹幕出现的高度坐标3、格式化弹幕对象颜色定位4、创建弹幕对象滚动动画定义创建弹幕dom对象实例弹幕销毁弹幕循环5...
    99+
    2022-11-13
    vue封装弹幕组件 vue封装组件
  • Vue自定义组件v-model使用详解
    目录Vue2中使用Vue3中使用v-model 使用 modelValue自定义 v-model 的使用的参数多个 v-model 绑定自定义v-model 的修饰符Vue2中使用 ...
    99+
    2024-04-02
  • vue自定义开关组件使用详解
    本文实例为大家分享了vue自定义开关组件的具体代码,供大家参考,具体内容如下 switch.vue: <template>   <div class="disLB"...
    99+
    2024-04-02
  • vue中使用render封装一个select组件
    目录使用render封装一个select组件vue另类封装--render函数封装先看看文件的结构render函数封装使用render封装一个select组件 父组件 val...
    99+
    2024-04-02
  • vue封装自定义分页器组件与使用方法是什么
    这篇文章给大家介绍vue封装自定义分页器组件与使用方法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言分页是开发各种系统时候最常用的功能,下面为本人封装的一个分页组件。实现分页器操作需要以下参数当前页: pag...
    99+
    2023-06-26
  • vue封装自定义分页器组件与使用方法分享
    前言 分页是开发各种系统时候最常用的功能,下面为本人封装的一个分页组件。 实现分页器操作需要以下参数 当前页: pageNo每页展示条数: pageSize数据总条数 : total...
    99+
    2024-04-02
  • 一文详解Vue-组件自定义事件(绑定和解绑)
    目录组件自定义事件(绑定)1 编写案例2 props实现3 自定义事件实现方式14 自定义事件实现方式25 只能触发一次事件6 多个参数传递组件自定义事件(解绑)1 解绑一个事件2 ...
    99+
    2023-05-18
    Vue-组件自定义事件 Vue-组件自定义 Vue-组件
  • 小程序怎么自定义tabBar组件封装
    这篇文章主要介绍“小程序怎么自定义tabBar组件封装”,在日常操作中,相信很多人在小程序怎么自定义tabBar组件封装问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”小程序怎么自定义tabBar组件封装”的疑...
    99+
    2023-06-25
  • 如何使用vue组件自定义v-model实现一个Tab组件
    这篇文章主要介绍如何使用vue组件自定义v-model实现一个Tab组件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果先让我们看一下例子的效果吧!v-model我们知道 v-mo...
    99+
    2024-04-02
  • 微信小程序怎么使用自定义组件封装原生image组件
    本文小编为大家详细介绍“微信小程序怎么使用自定义组件封装原生image组件 ”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序怎么使用自定义组件封装原生image组件 ”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-06-26
  • vue中怎么自定义一个全局消息框组件
    这篇文章将为大家详细讲解有关vue中怎么自定义一个全局消息框组件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.发现问题在进行移动端适配的时候,为了在各个...
    99+
    2024-04-02
  • Vue中怎么封装一个自动化注册全局组件
    这篇文章主要介绍“Vue中怎么封装一个自动化注册全局组件”,在日常操作中,相信很多人在Vue中怎么封装一个自动化注册全局组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue中怎么封装一个自动化注册全局组件...
    99+
    2023-06-25
  • vue中怎么封装一个弹出框组件
    这期内容当中小编将会给大家带来有关vue中怎么封装一个弹出框组件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.你需要先建一个弹出框的模板://首先创建一个mack.v...
    99+
    2024-04-02
  • vue怎么自定义和使用开关组件
    这篇“vue怎么自定义和使用开关组件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue怎么自定义和使用开关组件”文章吧。s...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作