自己写的vue组件,仿ios日历,支持年月日时分

完美主持移动端,rem布局(我用了stylus,你可以改成less或者sass),font-size基础值/75,默认开始时间为当前

效果时间

效果图

贴代码

<template>
  <div class="datepicker" @touchmove.prevent>
    <transition name="fade" mode="out-in">
      <div class="pickerBoxBg" v-show="show" @click="show = false" @touchmove="_stopDef" @mousewheel="_stopDef">
        <div class="pickerBox" v-show="show" @mousewheel="_stopDef">
          <div class="pickerBoxWrapper">
            <div class="pickerBoxTitle">
              <h2>{
  {title}}</h2>
              <h3>请选择日期</h3>
              <ul>
                <li>年</li>
                <li>月</li>
                <li>日</li>
                <li>时</li>
                <li>分</li>
              </ul>
            </div>
            <div class="pickerBoxContent">
              <div class="pickerBoxContentList">
                <ul
                  :class="{'first_dragging': yearState.dragging}"
                  @touchstart="_onTouchStart('year', $event)"
                  @mousedown="_onTouchStart('year', $event)"
                  :style="{'transform' : 'translate3d(0,' + yearState.translateY + 'px, 0)'}">
                  <li></li>
                  <li></li>
                  <li></li>
                  <li
                    ref="list-box"
                    v-for="(item, index)
                  in yearState.data"
                    :key="index"
                    :class="{
                          'current': item === yearState.selectedId,
                          'node1':  Math.abs(index - yearState.index) == 1,
                          'node2':  Math.abs(index - yearState.index) == 2,
                          'node3':  Math.abs(index - yearState.index) >= 3
                      }">
                    {
  {item}}
                  </li>
                  <li></li>
                  <li></li>
                  <li></li>
                </ul>
              </div>
              <div class="pickerBoxContentList">
                <ul
                  :class="{'second_dragging': monthState.dragging}"
                  @touchstart="_onTouchStart('month', $event)"
                  @mousedown="_onTouchStart('month', $event)"
                  :style="{'transform' : 'translate3d(0,' + monthState.translateY + 'px, 0)'}">
                  <li></li>
                  <li></li>
                  <li></li>
                  <li
                    v-for="(item, index) in monthState.data"
                    :key="index"
                    :class="{
                          'current': item === monthState.selectedId,
                          'node1':  Math.abs(index - monthState.index) == 1,
                          'node2':  Math.abs(index - monthState.index) == 2,
                          'node3':  Math.abs(index - monthState.index) >= 3
                  }">
                    {
  {item}}
                  </li>
                  <li></li>
                  <li></li>
                  <li></li>
                </ul>
              </div>
              <div class="pickerBoxContentList">
                <ul
                  ref:area-list
                  :class="{'third_dragging': dayState.dragging}"
                  @touchstart="_onTouchStart('day', $event)"
                  @mousedown="_onTouchStart('day', $event)"
                  :style="{'transform' : 'translate3d(0,' + dayState.translateY + 'px, 0)'}">
                  <li></li>
                  <li></li>
                  <li></li>
                  <li
                    v-for="(item, index) in dayState.data"
                    :key="index"
                    :class="{
                      'current': item === dayState.selectedId,
                      'node1':  Math.abs(index - dayState.index) &#
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值