小程序某标签滚动到某个位置时,固定在页面顶部

效果:我不知怎么上传视频效果。。。

方式一:用于要固定的元素前面的内容高度无法确定的情况下

js:代码

说明:这里选的指定元素不是导航栏本身,而是导航栏下面可滚动的内容,因为如果选择导航栏的话,它固定到顶部之后就无法恢复(因为它无法滑动,top值无法改变)。

//监听页面滚动
    onPageScroll:function(e){
        //获取指定元素距离页面顶部的距离
        let query = wx.createSelectorQuery();
        query.select('#nav').boundingClientRect((rect) =>{
            let top = rect.top;
            console.log(top);
            if(top<=45){  //这个45视情况而定
                this.setData({
                    fixedNav:true
                })
            }else{
                this.setData({
                    fixedNav: false
                })
            }
        }).exec()
    },

wxml:

<view>
        <view  class="nav {{fixedNav?'totop':''}}">
            <view bindtap="tonav" data-nav="nav1">楼盘概况 <text></text></view>
            <view bindtap="tonav" data-nav="nav2">户型图 <text></text></view>
            <view bindtap="tonav" data-nav="nav3">位置及周边 <text></text></view>
        </view>
        <scoll-view id="nav">
            <!-- nav1 -->
            <view id="nav1">
                nav1内容
            </view>
            <!-- nav2 -->
            <view id="nav2">
                nav2内容
            </view>
            <!-- nav3 -->
            <view id="nav3">
                nav3内容
            </view>
        </scoll-view>
    </view>

样式:

.totop{
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    background-color:#fff; 
}

方式二:用于要固定的元素前面的元素高度是固定的,以后维护不会改变的情况

主要区别在js:

//监听页面滚动
    onPageScroll:function(e){
        this.setData({
            scrollTop: e.scrollTop
        })
    },

wxml:(442视情况而定,就是要固定的元素前面内容的总高度)

​
<view>
        <view  class="nav {{scrollTop>442'totop':''}}">
            <view bindtap="tonav" data-nav="nav1">楼盘概况 <text></text></view>
            <view bindtap="tonav" data-nav="nav2">户型图 <text></text></view>
            <view bindtap="tonav" data-nav="nav3">位置及周边 <text></text></view>
        </view>
        <scoll-view id="nav">
            <!-- nav1 -->
            <view id="nav1">
                nav1内容
            </view>
            <!-- nav2 -->
            <view id="nav2">
                nav2内容
            </view>
            <!-- nav3 -->
            <view id="nav3">
                nav3内容
            </view>
        </scoll-view>
    </view>

​

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值