小程序之导航跟随

  最近在牛客网上五一做到一道关于position定位的题,惊喜的发现还有一种布局叫position:sticky,它就像是relativefixed的合体,

  其常用场景:当元素距离页面视口(Viewport,也就是fixed定位的参照)顶部距离大于 0px 时,元素以 relative 定位表现,而当元素距离页面视口小于 0px 时,元素表现为 fixed 定位,也就会固定在顶部。

  想到我最近手里的一个小程序,(页面如下)

我很兴奋的想要用这个css特性改成跟随导航的效果(结果页面如下)

即当页面向下滑动的时候如图所示的两个字段行能固定在头部,

但是当我激动的以为这样就可以了的时候,出现了一个致命的问题,就是在真机测试的时候,点击归属地字段行直接透过该字段的点击出现下拉弹窗事件触发了底层的号码列表的进入详情页事件,神奇的是,原理一样的排序字段没有出现相同问题,我尝试着解决,以为是小程序事件的冒泡机制导致的,因此采用了catch绑定,但是并没有效果,并且其中两个字段行并不属于嵌套view

下图为点击归属地字段触发下拉弹窗

下图为点击号码列表进入相应详情页

想着这个效果确实能增强用户体验,在使用sticky定位无法完美的实现我想要的效果的情况下,我又尝试了使用js实现效果,

1.给导航设置position: absolute; 页面向下滚动到导航的位置时,将给导航设置为position: fixed;

2.绑定小程序滚动事件bindscroll,监听滚动距离;

但是导航效果切换卡顿严重,在网上查询了下,说是scroll-view组件是在滚动完成才会执行js事件,总的来说性能比较差,严重影响用户体验,因此这个方法也流产了,目前还没有想到什么别的方法,希望有兴趣的网友能给些好的建议。

原文地址:https://www.cnblogs.com/joyer-lee/p/8535548.html

时间: 2024-08-30 11:54:38

小程序之导航跟随的相关文章

微信小程序自定义导航栏(wx_custom_navigation_bar) 自定义返回键、首页键,动态设置标题,响应式组件

微信小程序自定义导航栏 navigation bar 返回键 首页 github: https://github.com/chen-yt/wx_custom_navigation_bar https://github.com/Superman2113/wx_custom_navigation_bar 代码 navbar组件 navbar.wxml <view class="navbar" style="{{'height: ' + navigationBarHeight

微信小程序 自定义导航栏(1)

看着原博文https://www.cnblogs.com/sese/p/9761713.html简单的练习. 1.在app.json中     window配置navigationStyle 2.计算相关值 1. 整个导航栏的高度: 2. 胶囊按钮与顶部的距离: 3. 胶囊按钮与右侧的距离. 小程序可以通过 wx.getMenuButtonBoundingClientRect() 获取胶囊按钮的信息  和 wx.getSystemInfo() 获取设备信息 App.js 代码如下: 通过这些信息

小程序自定义导航栏

将app.json里的navigationStyle设置为navigationStyle:custom.可以在.wxss里通过margin和padding来自定义导航栏. 例如在.wxml里写 <view class="nav">我是汽车维修技师</view> 在.wxss里设置样式 .nav{height:90rpx;line-height: 90rpx;margin-top:60rpx;padding-left:20rpx;font-size:28rpx;f

微信小程序--地图导航

wx.getLocation({ type: 'gcj02', //返回可以用于wx.openLocation的经纬度 success: function(res) { var latitude = res.latitude var longitude = res.longitude wx.openLocation({ latitude: latitude, longitude: longitude, name:"花园桥肯德基", scale: 28 }) } })

微信小程序------加导航

效果图如下 这个其实很简单 在app.json上面加点代码 "window":{ "backgroundTextStyle":"light", "navigationBarBackgroundColor": "#OOOOOO", "navigationBarTitleText": "WeChat", "navigationBarTextStyle"

小程序底部导航栏

在app.json文件中添加如下代码: "tabBar": { "color": "black", "backgroundColor":"#fff", "selectedColor": "#11cd6e", "borderStyle":"white", "list": [{ "selectedIco

小程序底部导航栏设置

tabBar与window.pages并列,pagePath点击进入的页面路径,selectedIconPath点击选中状态 "tabBar": { "color": "#353535", "selectedColor": "#3cc51f", "borderStyle": "white", "backgroundColor": "#ff

小程序地图导航

<view class="address-map"> <map id="map" longitude="{{jobDetail.longitude}}" latitude="{{jobDetail.latitude}}" scale="14" markers="{{markers}}" bindtap="handleMap" show-locatio

小程序tab导航切换样式

<view id="green" class="scroll-view-item {{ current == index ? 'active' :'' }} " bindtap="yearselect" wx:for="{{year}}" wx:key="{{index}}" data-year="{{item}}" data-index="{{index}}"