小程序锚点使用过程
实现方法:
微信小程序的开发文档,发现可以使用scroll-view组件中的属性scroll-into-view实现
代码部分:
wxml
<view class="navigateBox"> <view bindtap="toViewClick" data-hash="productBox" class="title {{toView=='productBox' ? 'checked':''}}"> <image wx:if="{{toView=='productBox'}}" src="../images/position.jpg"/>商品</view> <view bindtap="toViewClick" data-hash="commentBox" class="title {{toView=='commentBox' ? 'checked':''}}"> <image wx:if="{{toView=='commentBox'}}" src="../images/position.jpg"/>评价</view> <view bindtap="toViewClick" data-hash="infoBox" class="title {{toView=='infoBox' ? 'checked':''}}"> <image wx:if="{{toView=='infoBox'}}" src="../images/position.jpg"/>详情</view> </view> <scroll-view style="height:{{winHeight}}" scroll-into-view="{{toView}}" scroll-y="true"> <view id="productBox">商品图</view> <view id="commentBox">商品评价</view> <view id="infoBox">商品详情</view> </scroll-view>
JS:
data: {
winHeight: '100%',
toView: 'productBox',//锚点跳转的ID
}
onLoad(){
let that = this;
wx.getSystemInfo({
success: function (res) {
//屏幕的宽度/屏幕的高度 = 微信固定宽度(750)/微信高度
that.setData({
winHeight: res.windowHeight-(res.windowWidth*90/750)+'px' //90为导航的告诉80+10(margin-bottom)
})
}
});
}
toViewClick: function (e) {
this.setData({
toView: e.target.dataset.hash
})
}
wxss:
<style lang="less"> page{ height: 100%; } .navigateBox{ background: #fff; height: 80rpx; padding: 0 100rpx; margin-bottom: 10rpx; .title{ margin: 20rpx 46rpx; float: left; font-size: 27rpx; width: 60rpx; padding-left: 30rpx; } image{ width: 30rpx; height: 30rpx; margin-left: -30rpx; } .checked{ color: #f73c3c; } }
总结:
-
将page的高度设置为100%;
-
导航下面的内容部分必须用
<scroll-view>
包起来 -
设置scroll-view的高度=屏幕的高度-导航的高度
-
设置scroll-view的属性
scroll-into-view="{{toView}}"
-
设置scroll-view的属性
scroll-y="true"
-
设置锚点
<view id="position1">
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗