微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)


Posted in Javascript onJanuary 24, 2019

本文实例讲述了微信小程序导航栏滑动定位功能。分享给大家供大家参考,具体如下:

实现的效果

微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)

实现的原理

1. 通过对scroll的监听获取滚动条的scrollTop值;

2. 在导航的class判断scrollTop;

3. 切换position:fixed与position:relative。

WXML

<view style="height:100%;position:fixed;width:100%;">
 <scroll-view scroll-y="false" bindscroll="scroll" style="height:100%;">
  <view class="page-bottom-content">
   <text>{{text}}</text>
  </view>
  <view class="page-banner">
   banner
  </view>
  <view class="page-group {{scrollTop > 360 ? 'page-group-position' : ''}}">
   <view class="page-nav-list"><text>首页</text></view>
   <view class="page-nav-list"><text>活动</text></view>
   <view class="page-nav-list"><text>菜单</text></view>
   <view class="page-nav-list"><text>我的</text></view>
  </view>
  <view class="goods-list">
   goods-list
  </view>
 </scroll-view>
</view>

WXCSS

.page-banner{height: 500rpx;background-color: greenyellow;padding: 20rpx;color:#fff;}
.page-group{
 display: table;
 background-color: blueviolet;
 width: 100%;
 table-layout: fixed;
 position: relative;
 top: 0;
 left: 0;
}
.page-group-position{
 position: fixed;
}
.page-nav-list{
 padding:30rpx 0 ;
 display: table-cell;
 text-align: center;
 color: #fff;
}
.goods-list{
 height: 2000rpx;
 background-color: green;
 padding: 20rpx;
 color:#fff;
}

JS

Page({
 data: {
  scrollTop: null
 },
 //滚动条监听
 scroll: function (e) {
  this.setData({ scrollTop: e.detail.scrollTop })
 },
})

总结:

1. 要获取scrollTop,在微信小程序中我们需要:<scroll-view scroll-y="false" bindscroll="scroll" style="height:100%;"></scroll-view>

2. 微信小程序要绑定bindscroll事件,需要绑定在scroll-view组件上,同时设置scroll-y和height。

3. 如果scroll-view的高设置100%,就需要在其外层添加一个固定高的盒子,否则监听不会生效。

4. 通过scroll事件获取scrollTop:this.setData({ scrollTop: e.detail.scrollTop })

5. 导航栏class的切换:

scrollTop > 360 ? 'page-group-position' : ''

实质:

scrollTop > 360 ? 'fixed' : 'relative'

缺点:

1. 由于有获取scrollTop的过程,所以会出现定位不及时,也就是导航闪动的效果;
2. 没有原生CSS3的position:sticky流畅,体验比较差;
3. 由于我目前还未找到直接获取page-group的offsetTop方法,所以直接采用的是360固定值,此效果是在苹果6进行的测试。

此效果只是提供一个思路,不建议使用在项目中,体验太差,有待优化。如果有更好思路的大神,敬请指教。

Demo源码:

点击此处本站下载

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
prototype Element学习笔记(篇二)
Oct 26 Javascript
Jquery之Ajax运用 学习运用篇
Sep 26 Javascript
jQuery实现渐变下拉菜单的简单方法
Mar 11 Javascript
详解AngularJS中的表格使用
Jun 16 Javascript
Jqgrid之强大的表格插件应用
Dec 02 Javascript
浅谈js多维数组和hash数组定义和使用
Jul 27 Javascript
原生js获取元素样式的简单方法
Aug 06 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
Nov 16 Javascript
jQuery Ajax实现跨域请求
Jan 21 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
Feb 16 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
Jul 17 Javascript
五句话帮你轻松搞定js原型链
Dec 09 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
Jan 24 #Javascript
记一次vue去除#问题处理经过小结
Jan 24 #Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 #Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
Jan 23 #Javascript
vue车牌号校验和银行校验实战
Jan 23 #Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
Jan 23 #Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
Jan 23 #Javascript
You might like
php number_format() 函数通过千位分组来格式化数字的实现代码
2013/08/06 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
smarty中常用方法实例总结
2015/08/07 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
使用 Node.js 开发资讯爬虫流程
2018/01/07 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
接口可以包含哪些成员
2012/09/30 面试题
党风廉政承诺书
2014/03/27 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
庆六一活动总结
2014/08/29 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
党小组意见范文
2015/06/08 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python