NBA总决赛结束还没一周,马上世界杯就如期而至。大家在熬夜看球,而我关在小黑屋默默码字(可怜脸)。在体验到小程序的 方便快捷省内存 之后,前段时间的“骑勇大战”果断用了小程序观看。由于体验不错,又正在学习小程序知识,马上就想动手实践学习一下“腾讯体育”小程序的制作。到目前为止,只想说一句“选择是好的,过程是一言难尽的”,虽然还没全部完成,但也遇到不少问题,希望此分享可以给你带来帮助。 效果图(干巴巴的开讲,还不如先来波动图) 问题及解决方案1、scroll-view组件让我们先来看看开发文档
在此项目中,首页——世界杯的头部是一个横向滑动的
NBA赛事详情页中有5个sroll-view,虽然内容有点少,但还是看得出有scroll的效果的。 同样的,在制作竖向滚动效果时,需要设置 使用竖向滚动时,需要给 那么问题来了,在 首先想到,把包含选项卡和 随后马上想到可以使用弹性布局,固定其选项卡的高度,下方的 最后无奈只好将scroll-view的高度逐渐调整到屏幕底部的高度,简直不要太粗暴,缺点是在不同屏幕尺寸设备上查看,效果不一。如果有大佬可提供较好解决方案,恳请指教。 2、swiper组件开发文档是好朋友,让我们再来看看。
1) 从上面动图可看出,NBA赛事详情页中也使用到了
话不多说,贴上代码: //nbaMatches.wxml
<view class="info_hd">
<view class="headerMenu {{curIndex===index?'on':''}}"
wx:for="{{nbaMenu}}"
data-index="{{index}}"
bindtap="switchSort">
<view class="nbaSort">{{item.nbaSort}}</view>
</view>
</view>
<view class="info_bd">
<swiper current="{{curIndex}}" bindchange="bindswiper">
...
</swiper>
</view> //nbaMatches.js
bindswiper(e) {
this.setData({
curIndex: e.detail.current
})
},
switchSort(e) {
console.log(e.currentTarget.dataset.index);
this.setData({
curIndex: e.currentTarget.dataset.index?e.currentTarget.dataset.index: 0
})
} 2) 此项目的“热门”页也使用了一个 经过一场“猪脑子”风暴后,还是没有想出完美的解决方案,只好设置有限个 还是贴代码吧! //swiper的bindchange事件
changeMatch(e) {
const current = e.detail.current; //获取当前位置
const befInd = this.data.swiperCurIndex; //获取滑动前的位置
const index = current - befInd;
if (index <= -1) { //判断左滑右滑
this.preDay(); //日期切换至前一天
} else if (index >= 1) {
this.nextDay(); //日期切换至后一天
} else {
return
}
} // nextDay() 方法类似
preDay() {
let day = this.data.day;
let month = this.data.month;
let week= this.data.week;
let i = this.data.i;
if (i<=0) { //周一至周日的循环切换
i = 6;
}else {
i--;
}
if(day<=1) { //日期本月第一天时,将日期切换至上月最后一天
month--;
day = this.data.daysCountArr[month-1];
}else {
day--; //否则切换至前一天
}
this.setData({
swiperCurIndex: this.data.swiperCurIndex-1,
month,
day,
i,
week: this.data.weekArr[i],
curDate: month+'月'+day+'日'+' '+this.data.weekArr[i]
})
} 如果大佬们有解决方案欢迎交流讨论。详细代码查看可点击 这里 。 3、选项卡天啦噜!你连选项卡都要说?(笑哭)听我解释。 通常我们使用的选项卡中的选项都是 2 到 4 个,如果不嫌麻烦,我们只要将选项卡和其对应的内容逐个在 详细代码查看可点击 这里 。 4、自定义日历为了更好的体验,体育赛事总要加入日历,方便用户查看赛事安排。若使用
<view class="calendar_box" wx:for="{{dateList}}" wx:for-item="week" wx:key="{{index}}" style="{{index==0?'justify-content: flex-end;':''}}">
<view wx:for="{{week}}" data-date="{{item}}"
class="weekday_label {{item.value==selectedDate?'active_label':''}}" bindtap="selectDate">
<view class="date">
<text>{{item.date}}</text>
</view>
<view class="gameNumBox">
<text class="gameNum">{{item.gameNum}}</text>
<text>场比赛</text>
</view>
</view>
</view>
wx.navigateTo 和 wx.redirectTo 不允许跳转到 tabbar 页面,只能用 wx.switchTab 跳转到 tabbar 页面 |
世界杯来了!小程序赛事操作来一波~
本文转载:CSDN博客