小程序最顶部横向日历

不多说,看图说话。

 

 最终的效果就是左右可以滑动选择日期,点击日期查询数据。

WXML

<!-- 横向日期 -->
      <swiper class="swiper" display-multiple-items="{{clientWidthCount}}">
        <block wx:for="{{Dates}}" wx:key="{{item.id}}">
          <swiper-item id="{{item.id}}" bindtap="ClickDateCheng">
            <text class="swiper-xingqi {{dateCurrentStr==item.id?'selZhou':''}}">{{item.text}}</text>
            <image class="{{dateCurrentStr==item.id?'selImg':''}}" src="{{bgWhiteImgUrl}}" />
            <text class="swiper-day {{dateCurrentStr==item.id?'selDay':''}}">{{dateCurrentStr==item.id?item.mon+'-'+item.day:item.day}}</text>
            <text class="swiper-price {{dateCurrentStr==item.id?'selPrice':''}}">{{item.price}}</text>
          </swiper-item>
        </block>
      </swiper>
      <view class="data-month">
        <navigator url='/pages/calendardj/index'>
          <image src="/images/dijia.jpg"></image>
        </navigator>
      </view>

JS

let app = getApp();
let compose = require('../../utils/compose');
let dateFormat = require('../../utils/dateutil');
let utils = require('../../utils/utils');
Page({
  data: {
    dateCurrentStr: dateFormat.formatDay(new Date()), // 正选择日期的 id
    bgWhiteImgUrl: 'http://img0.imgtn.bdimg.com/it/u=1641805254,627977274&fm=26&gp=0.jpg', //选中的日期白色背景图
    Dates: [],
    dateListArray: ['周 日', '周 一', '周 二', '周 三', '周 四', '周 五', '周 六'],
    maxCount: 15, //横向日期默认显示的日期数量
    clientHeight: 0,
    clientWidthCount: 0
  },
  onLoad: function () {
    //加载前设置loading为true
    var that = this;
    wx.getSystemInfo({
      success: function (res) {
        that.setData({
          clientHeight: res.windowHeight - 90,
          clientWidthCount: parseInt(res.windowWidth / 50)    ///一个小正方形宽度50,获得屏幕宽度计算数量
        });
      }
    })

    // 在日期数组中添加10条记录(从当天开始)
    this.add(new Date(), "今 天");
    for (var i = 1; i <= this.data.maxCount; i++) {
      //获取AddDayCount天后的日期
      var txt = "";
      if (i == 1) {
        txt = "明 天"
      }
      if (i == 2) {
        txt = "后 天"
      }
      this.add(new Date().setDate(new Date().getDate() + i), txt);
    }


    this.setData({
      loading: true,
      Dates: this.data.Dates
    });
  },


  // 日历组件部分
  add: function (obj, txt) {
    var date = new Date(obj);
    var year = date.getFullYear();
    var mon = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
    var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
    var week = this.data.dateListArray[date.getDay()];
    if (txt != "") {
      week = txt;
    }
    var obj = {
      id: year + '-' + mon + '-' + day,
      text: week,
      mon: mon,
      day: day,
      price: '¥100'
    };
    this.data.Dates.push(obj);
  },
  ClickDateCheng: function (e) {
    var currentDate = e.currentTarget.id;
    this.setData({
      dateCurrentStr: currentDate
    });
    // 刷新列表
    wx.showToast({
      title: '加载中...',
      icon: 'loading',
      duration: 1000
    })
  }

})

WXSS

/* 横向日期 */
/*横向日期轮播图*/
.swiper {
  height: 58px;
  width: 100%;
  background: #39BF7A;
  color: white;
  padding: 12rpx 8rpx;
  position: relative;
}

.swiper image {
  height: 46px;
  width: 46px;
  border-radius: 6px;
  opacity: 0.2;
}
.swiper-xingqi{
  position:absolute;
  left: 24%;
  top: 2rpx;
  font-size: 19rpx;
  z-index: 5;
}
.swiper-day{
  position:absolute;
  left: 24%;
  top: 27%;
  font-size: 33rpx;
}
.swiper-price{
  position:absolute;
  left: 15%;
  bottom: 5.2%;
  font-size: 20rpx;
}

/* 当前选中星期 */
.swiper .selZhou{
color: black;
}
/* 当前选中日期 */
.swiper .selDay{
color: black;
 position:absolute;
  left: 6rpx;
  font-size: 30rpx;
}
.swiper .selImg{
opacity: 0.9;
}
.swiper .selPrice{
  color: red;
}

.data-month {
    position: absolute;
    right: 5rpx;
    top: 10rpx;
}
.data-month image{
  width: 46px;
  height: 46px;
}


/* 日期下面的广告位 */
.date-choose_img{
  width: 100%;
  height: 60px;
  position: relative;
}
.date-choose_img image{
  width: 100%;
  height: 100%;
  padding: 6px;
}
.date-choose_img view{
position: absolute;
top: 26%;
left: 7%;
  font-weight: bold;
  font-size: 33rpx;
}
.date-choose_txt{
  color: red;
    font-size: 35rpx;
}
.day_price{
  font-size: 16rpx;
  color: rgb(255, 0, 34);
}

 最后点击右边的低价日历跳转到日历页面,效果如下:

 

 有需要这个日历的找我要哈。网上也有的

posted @ 2019-08-30 16:56  .NET_海  阅读(1456)  评论(3编辑  收藏  举报