微信小程序wxs实现吸顶效果
微信(小程序)  /  管理员 发布于 3年前   235
在.js文件中使用page的onPageScroll事件和scroll-view的scroll事件中产生卡顿 (setData 渲染会阻塞其它脚本执行,导致了整个用户交互的动画过程会有延迟), 所以使用wxs响应事件来实现吸顶效果。wxs响应事件基础库 2.4.4 开始支持,低版本需做兼容处理。 附上文档链接:wxs响应事件 吸顶效果 使用scroll-view组件实现滚动效果,页面和scroll-view组件的高度设成100%,当竖向滚动条大于等于导航到顶部距离时,导航变成固定定位,固定显示在顶部,反之,导航取消定位。 渐变导航效果 当竖向滚动条滚动到指定位置时,出现导航条,导航条透明度也随滚动条位置发生变化。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。/* wxss文件 */page{ font-size: 30rpx; background: #fea; height: 100%;}.div{ width: 100%;height: 500rpx;}.nav-image{ width: 100%;height: 400rpx; vertical-align: middle;}.navigation{ width: 100%; height: 100rpx; display: flex; justify-content: center; align-items: center; background: #fff; top:0;left:0; /*只有使用定位才起效果*/}.navigation view{ padding: 15rpx 20rpx; margin: 0 20rpx;}
//wxs文件var scrollEvent = function (e, ins) { var scrollTop = e.detail.scrollTop; var navTop = e.currentTarget.dataset.top; if (scrollTop >= navTop) { ins.selectComponent('.navigation').setStyle({ "position": 'fixed' }) } else { ins.selectComponent('.navigation').setStyle({ "position": 'static' }) }}module.exports = { scrollEvent: scrollEvent}
//js文件Page({ /** * 页面的初始数据 */ data: { navBarList: ['喜欢', '点赞', '收藏'], navTop:0, //导航距顶部距离 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { this.getNavTop(); }, /** * 获取导航距顶部距离 */ getNavTop() { var that = this; var query = wx.createSelectorQuery(); query.select('.navigation').boundingClientRect(function (data) { that.setData({ navTop: data.top, }) }).exec(); }, })
/* wxss文件 */page{font-size: 30rpx;background: rgba(200, 58, 57, 0.3);height: 100%;}.div{width: 100%;height: 500rpx;}.nav-image{width: 100%;height: 400rpx;vertical-align: middle;}.nav-icon,.nav-bar{ position: fixed; top: 0;left: 0; height: 120rpx;}.nav-bar{ width: 100%; display: flex; align-items: center; background: #fff;}.back-icon{ width: 100rpx; height: 100%; display: flex; justify-content: center; align-items: center;}.back-icon::after{ /*利用伪类元素模拟出返回icon*/ content: ""; display: block; width: 25rpx;height: 25rpx; border-top: 5rpx solid #fff; border-left: 5rpx solid #fff; transform: rotate(-45deg);}.nav-bar .back-icon::after{border-color: #000;}
//wxs文件var scrollEvent=function(e,ins){ var scrollTop=e.detail.scrollTop; if(scrollTop>100){ ins.selectComponent(".nav-icon").setStyle({ "opacity":"0" }) var dot = (scrollTop-100)/50; ins.selectComponent(".nav-bar").setStyle({ "opacity": dot }) }else{ ins.selectComponent(".nav-bar").setStyle({ "opacity": "0" }) var dot = (100-scrollTop) / 50; ins.selectComponent(".nav-icon").setStyle({ "opacity": dot }) }};module.exports={ scrollEvent: scrollEvent};
您可能感兴趣的文章:
博主 在
2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..xiaoB 在
2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..BUG4 在
你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..博主 在
go语言+beego框架中获取get,post请求的所有参数中评论 @ t1 直接在router.go文件中配就ok..Jade 在
如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号