項目需要,做一個和今日頭條一樣的導航欄,可以橫行滾動,幸好再weui里面看到了類似的例子
地址:https://weui.shanliwawa.top/demo/js4.html,使用iscroll-lite.j實現,weui自己封裝了一層,vue中實現代碼:
<div id="tab-tip" class="container"> <div id="tagnav" class="weui-navigator weui-navigator-wrapper" style="touch-action: none;padding-left:5px"> <ul class="weui-navigator-list first_nav"> <li class v-for="group in groupList"> <a href="javascript:;" :groupId="group.id" @click="loadData(group.id)">{{group.name}}</a> </li> </ul> </div> </div>
初始化:
mounted() {
setTimeout(function() {
TagNav("#tagnav", {
type: "scrollToNext",
curClassName: "weui-state-active",
index: 0
});
$(".first_nav")
.children(":first")
.find("a")
.addClass("first_border_circle");
$(".first_nav")
.children(":last")
.find("a")
.addClass("end_border_circle");
}, 0);
},
注意:引入weui的css,class="container"這個一定要有,不然出現定位出現問題。
setimeout等元素渲染完成再初始化。
當然做這個項目的時候出現了一個問題,安卓手機第一次進入頁面,非導航欄滑動的時候敏感,導致本來是滑動,觸發了click事件,導致跳轉
通過查找了許多資料,因為iscroll-lite默認事件touchend等綁定再window上,不是綁定再我們滾動的元素(上面例子:id="tagnav"的div),導致
點擊其他的區域觸發了click事件,幸好看到它有配置項:bindToWrapper,把這個值設定為true解決
因為weui重新封裝了,所以找到,添加:bindToWrapper: true即可解決
self.iScroll = new IScroll(self.el, {
scrollX: true,
scrollY: false,
click: true,
bindToWrapper: true//防止touchend等事件綁定到window,導致滑動敏感觸發
});