微信小程式:實現錨點跳轉
阿新 • • 發佈:2018-12-31
在微信小程式中想用a標籤來進行錨點跳轉卻沒有起作用,最後用scrollTop解決
WXML
<!-- 錨點跳轉的view start-->
<scroll-view scroll-y="true" scroll-top="{{scrollTop}}" >
<view class="self_row r1">1</view>
<view class="self_row r2">2</view>
<view class="self_row r3">3</view>
<view class="self_row r4" >4</view>
<view class="self_row r5">5</view>
</scroll-view>
<!-- 錨點跳轉的view end-->
<!-- 右邊導航欄 start-->
<view class='right_nav'>
<view wx:for="{{rightNav}}" wx:key="index" class='nav_item' data-id="{{item.id}}" bindtap="setScrollTop">
<text class='item_name'>{{item.name}}</text>
</view>
</view>
<!-- 右邊導航欄 end-->
JS
Page({
data: {
rightNav:[
{ id: "1", name:"世"},
{ id: "2", name: "界" },
{ id: "3", name: "你" },
{ id: "4", name: "好" },
{ id: "5", name: "嗎" }
],
scrollTop : 0 //滾動的值
},
//右邊導航欄錨點跳轉
setScrollTop: function(e) {
//將rpx轉化為px
var p = 750 / this.data.winWidth;
//獲取當前點選的id值
var showId = e.currentTarget.dataset.id;
var scrollTop = 0;
var len = rightNav.length+1;
for(var i=0;i<len;i++){
//當前的點選的id值等於i的話執行scrollTop滾動
if (i==showId){
//600是點選導航欄對應的元素的高度,scrollTop 滾動的高度
scrollTop = ( 600 * (i - 1) ) / p;
}
}
this.setData({
scrollTop: scrollTop
})
},
onLoad: function () {
// 獲取螢幕的高度
var sysInfo = wx.getSystemInfoSync();
var winHeight = sysInfo.windowHeight;
var winWidth = sysInfo.windowWidth;
this.setData({
winHeight: winHeight,
winWidth: winWidth
})
}
})