微信小程序导航栏滑动定位功能示例(实现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 相关文章推荐
载入进度条 效果
Jul 08 Javascript
不要使用jQuery触发原生事件的方法
Mar 03 Javascript
javascript中innerText和innerHTML属性用法实例分析
May 13 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
May 19 Javascript
javascript实现对表格元素进行排序操作
Nov 18 Javascript
jquery实现全选、反选、获得所有选中的checkbox
Sep 13 Javascript
jQuery实现只允许输入数字和小数点的方法
Mar 02 Javascript
JQuery用户名校验的具体实现
Mar 18 Javascript
JavaScript中instanceof运算符的使用示例
Jun 08 Javascript
ionic实现滑动的三种方式
Aug 27 Javascript
详解Angular操作cookies方法
Jun 01 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 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下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
2016/08/08 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
JS Timing
2007/04/21 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
Python完全新手教程
2007/02/08 Python
Python采用raw_input读取输入值的方法
2014/08/18 Python
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
测绘工程系学生的自我评价
2013/11/30 职场文书
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
迎接领导欢迎词
2014/01/11 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
无房证明样本
2015/06/17 职场文书
2016入党心得体会范文
2016/01/06 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
python基础之类属性和实例属性
2021/10/24 Python