微信小程序丨横向滑动 Scrollview 时间选择器

2019-09-27 11:19:03 浏览数 (3)

运行效果

涵盖全 24 个时段,左右滑动可见其它。当前时段提示为【抢购进行中】,之前时段为【已开抢】,之后时段为【即将开始】


JS

代码语言:javascript复制
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    that = this;
    that.setData({
      timeList: that.initTimeList(24)
    })
  },

  /**
   * 时段数组生成
   * @param itemNum 需要的时段数量
   * 
   * return 生成的完整数组
  */
  initTimeList:function(itemNum){
    // 基础判断
    if (itemNum <= 0){
      console.log(' Error From initTimeList():所需时段数不可小于等于零')
      return []
    }

    // 当前时段
    var nowTime = new Date().getHours()

    // 组装数组
    var timeList = []
    for (var t = 0; t < itemNum ; t  ){
      t > 9 ? (timeList.push({ 'index': t, 'time': t   ':00', 'hint': (t == nowTime ? '抢购进行中' : (t > nowTime ? '即将开始' : '已开抢')) })) : (timeList.push({ 'index': t, 'time': '0'   t   ":00", 'hint': (t == nowTime ? '抢购进行中' : (t > nowTime ? '即将开始' : '已开抢')) }))
    }
    return timeList
  },

  /**
   * 时间选择器列表点击监听
   * @param item 被点击的item对象,包含所有信息
  */
  clickItem:function(item){
    // 列表点击事件
    console.log(item.currentTarget.dataset.item.index)
  }

WXML

代码语言:javascript复制
<scroll-view scroll-x class="scroll-x">
  <view wx:for="{{timeList}}" wx:key="{{index}}" class="view_item" >
    <view class="view_item_time" bindtap="clickItem" data-item="{{item}}">{{item.time}}</view>
    <view class="view_item_hint" bindtap="clickItem" data-item="{{item}}">{{item.hint}}</view>
  </view>
</scroll-view>

WXSS

代码语言:javascript复制
.scroll-x{
    white-space:nowrap;
    display:flex;
    background: #333;
}

.view_item{
    display:inline-block;
    padding: 20rpx;
}

.view_item_time{
    width:100rpx;
    height:50rpx;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:0.8rem;
    color:#FFFFFF;
    background:#000;
}

.view_item_hint{
    width:100rpx;
    height:50rpx;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:0.5rem;
    color:#FFFFFF;
    background:#000;
}

/* 隐藏scrollbar */
::-webkit-scrollbar{
    width: 0;
    height: 0;
    color: transparent;
}

0 人点赞