微信小程序实现页面浮动导航


Posted in Javascript onJanuary 08, 2020

一、前言

做复杂的小程序就与web页面的区别原来越小了,一些web页面的功能会被要求添加到微信小程序页面中。

二、功能

页面在滑动的时候顶部页面导航跟随滑动,当点击导航中的任意一项时返回页面顶部。

三、实现

wxml代码:

<view class='container'>
<view class='navigation {{pageVariable.isFloat == true ? "float-navigation":""}}'>
  <view class='{{policyFilter.curSelectNavigationItemFormate(pageVariable.curSelectedItemId,"0")}}' data-id='0' catchtap='selectNavigationItem'>全部</view>
  <view class='{{policyFilter.curSelectNavigationItemFormate(pageVariable.curSelectedItemId,"1")}}' data-id='1' catchtap='selectNavigationItem'>保障中</view>
  <view class='{{policyFilter.curSelectNavigationItemFormate(pageVariable.curSelectedItemId,"2")}}' data-id='2' catchtap='selectNavigationItem'>已生效</view>
  <view class='{{policyFilter.curSelectNavigationItemFormate(pageVariable.curSelectedItemId,"3")}}' data-id='3' catchtap='selectNavigationItem'>未生效</view>
 </view>
</view>

wxss代码:

.navigation {  /*导航样式*/
 width: 100%;
 display: flex;
 justify-content: space-around;
 align-items: center;
 height: 80rpx;
 background-color: #fff;
 font-size: 28rpx;
 color: #333;
 font-weight: 500;
 box-shadow: inset 0 0 0 0 rgba(0, 0, 0, 0.30);
}
 
.float-navigation {  /*导航浮动起来的css*/
 position: fixed;
 top: 0;
 z-index: 1000;
}
 
.navigation-item-selected {  /*导航项选中的样式*/
 color: #40a0ee;
 height: 80rpx;
 line-height: 80rpx;
 border-bottom: 3rpx solid #40a0ee;
}

js代码:

Page({
  data:function () {
  var model = {};
  model.pageVariable = {
   curSelectedItemId:'0', //顶部导航栏,当前选中的项
   isFloat:false, //控制导航栏浮动
  }
  return model;
 }(),
 /**
  * 选择导航
  */
 selectNavigationItem:function(e){
  this.setData({
   'pageVariable.curSelectedItemId': e.currentTarget.dataset.id,
   'pageVariable.isFloat':false
  });
  wx.pageScrollTo({
   scrollTop: 0,
  });
  this.initData(e.currentTarget.dataset.id);  //加载数据
 },
 onPageScroll:function(res){
  if (res.scrollTop >= 1){ //开始滚动
   if (!this.data.pageVariable.isFloat){
    this.setData({
     'pageVariable.isFloat':true
    });
   }
  }else{
   this.setData({
    'pageVariable.isFloat': false
   });
  }
 }
})

总结:

这个功能的实现主要是通过onPageScroll页面注册函数来实现页面滚动,通过pageScrollTo api实现导航选项在被选中时返回到页面顶部。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Z-Blog中用到的js代码
Mar 15 Javascript
Javascript中Eval函数的使用说明
Oct 11 Javascript
JavaScript DOM学习第八章 表单错误提示
Feb 19 Javascript
javascript 跨浏览器开发经验总结(五) js 事件
May 19 Javascript
SyntaxHighlighter 3.0.83使用笔记
Jan 26 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
Jun 10 Javascript
jQuery手动点击实现图片轮播特效
Apr 20 Javascript
jQuery中animate的几种用法与注意事项
Dec 12 Javascript
js canvas实现画图、滤镜效果
Nov 27 Javascript
jquery实现掷骰子小游戏
Oct 24 jQuery
JavaScript中CreateTextFile函数
Aug 30 Javascript
详解vue父子组件状态同步的最佳方式
Sep 10 Javascript
微信小程序基于movable-view实现滑动删除效果
Jan 08 #Javascript
小程序自定义模板实现吸顶功能
Jan 08 #Javascript
微信小程序静默登录的实现代码
Jan 08 #Javascript
微信小程序wxs实现吸顶效果
Jan 08 #Javascript
微信小程序实现吸顶特效
Jan 08 #Javascript
nuxt配置通过指定IP和端口访问的实现
Jan 08 #Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
Jan 08 #Javascript
You might like
PHP程序员编程注意事项
2008/04/10 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
vue中多个倒计时实现代码实例
2019/03/27 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
Python Property属性的2种用法
2015/06/21 Python
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
python opencv调用笔记本摄像头
2019/08/28 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
创业计划书中包含的9个方面
2013/12/26 职场文书
授权委托书范文
2014/07/31 职场文书
企业党员个人自我评价
2014/09/20 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
2014年人事部工作总结
2014/12/03 职场文书
教师节获奖感言
2015/07/31 职场文书
用Python创建简易网站图文教程
2021/06/11 Python
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA