vue实现一个滚动日期选择器组件

本文介绍了如何在Vue中实现一个滚动日期选择器组件,包括UI设计、数据初始化、事件处理、滚动校正等关键步骤,以及在开发过程中可能遇到的问题和解决方案。
摘要由CSDN通过智能技术生成

日期选择器组件

1.先来看看实现效果
在这里插入图片描述

2.在开发之前,要先了解清楚需要完成的需求再逐个优化 (以下主要介绍思路具体实现,随机应变)

1) UI方面我们需要实现上下滚动选择,需要注意的主要细节就是滚动结束后,需要自动校正位置,比如正好滚动到两个年份之间,这时应该自动滚向占比比较大的一方

2) 第二个需要注意的就是每月的天数是不同的,1 3 5 7 8 10 12 有31天,2月闰年29天 平年28天,剩余月份30天
year % 4 === 0 && year % 100 !== 0 || year % 400 === 0为闰年)

3.实现步骤

1) 首先我们要考虑的就是这些年月日的初始化数据,我们可以看到当滚动到最下,或者最上时都是留白的所以就需要数据初始话的时候前后都添加空数据比如月份:

month: ['', '', '', 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, '', '', '']

年份初动态初始化为当前年份的上下100年,日暂时初始化为31天

2) 数据的绑定 以月为例

<div class="month" ref="month" @scroll="monthScroll">
  <li v-for="(item,index) in month" :key="index" :ref="'item'+index" class="item">
    {
   {
    item ? item + $t('mouth') : item }}
  </li>
</div>

data () {
   
return {
      
      date: [Date.getFullYear, 12, 1],
      month: ['', '', '', 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, '', '', ''],
      }
},
mounted () {
   
   this.itemHeight = this.$refs.item0
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木林_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值