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


Posted in Javascript onJanuary 28, 2019

一、前言

做复杂的小程序就与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 相关文章推荐
javascript AOP 实现ajax回调函数使用比较方便
Nov 20 Javascript
jquery数组过滤筛选方法grep()简介
Jun 06 Javascript
Javascript基于AJAX回调函数传递参数实例分析
Dec 15 Javascript
用js实现简单算法的实例代码
Sep 24 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
Jan 20 Javascript
利用js编写网页进度条效果
Oct 08 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
Nov 14 Javascript
vue+node实现图片上传及预览的示例方法
Nov 22 Javascript
手把手带你封装一个vue component第三方库
Feb 14 Javascript
详解babel升级到7.X采坑总结
May 12 Javascript
Postman参数化实现过程及原理解析
Aug 13 Javascript
uniapp微信小程序:key失效的解决方法
Jan 20 Javascript
微信小程序顶部导航栏滑动tab效果
Jan 28 #Javascript
详解基于node.js的脚手架工具开发经历
Jan 28 #Javascript
微信小程序实现顶部导航特效
Jan 28 #Javascript
详解几十行代码实现一个vue的状态管理
Jan 28 #Javascript
vue.js仿hover效果的实现方法示例
Jan 28 #Javascript
vue-for循环嵌套操作示例
Jan 28 #Javascript
使用pm2自动化部署node项目的方法步骤
Jan 28 #Javascript
You might like
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
jquery动态添加option示例
2013/12/30 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
浅谈layui 数据表格前后台传值的问题
2019/09/12 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
详细解析Python当中的数据类型和变量
2015/04/25 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
详解Python 数据库的Connection、Cursor两大对象
2018/06/25 Python
Python基于百度云文字识别API
2018/12/13 Python
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
python3 logging日志封装实例
2020/04/08 Python
python中return不返回值的问题解析
2020/07/22 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
2016/10/06 面试题
司机检讨书
2014/02/13 职场文书
学生吸烟检讨书
2014/09/14 职场文书
2014年终个人总结报告
2015/03/09 职场文书
公司人事任命通知
2015/04/20 职场文书
毕业典礼致辞
2015/07/29 职场文书
新入职员工工作总结
2015/10/15 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
Java基于字符界面的简易收银台
2021/06/26 Java/Android
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技