微信小程序实现锚点跳转


Posted in Javascript onNovember 23, 2020

本文实例为大家分享了微信小程序实现锚点跳转的具体代码,供大家参考,具体内容如下

1、先上效果图,看看是不是你想要的。

微信小程序实现锚点跳转

2、主要用到的微信小程序的scroll-view 组件实现该效果。核心主要是使用scroll-into-view属性跳转对应的标签页和标签内容区域和bindscroll事件监听标签内容区域距离页面顶部的距离来判断顶部的标签应该处于哪个标签。

3、wxml代码:

<!-- start 标签区域 -->
<view class="text" style="height:{{height}}px " >
 <!-- scroll-into-view 可以跳转到绑定值对应的ID的标签区域 -->
 <scroll-view class='scroll-x-view1' scroll-x='true' scroll-into-view='{{indexMaodian}}'>
 <view bindtap="toDetail" data-id="a1" class='scroll-view-item1 bg_red' id="a" >1标签</view>
 <view bindtap="toDetail" data-id="b1" class='scroll-view-item1 bg_blue' id="b">2标签</view>
 <view bindtap="toDetail" data-id="c1" class='scroll-view-item1 bg_green' id="c">3标签</view>
 <view bindtap="toDetail" data-id="d1" class='scroll-view-item1 bg_yellow' id="d">4标签</view>
 <view bindtap="toDetail" data-id="e1" class='scroll-view-item1 bg_red' id="e">5标签</view>
</scroll-view>
<!-- end 标签区域 -->

<!-- start 标签对应内容区域 -->
<scroll-view class='scroll-x-view' scroll-y='true' bindscroll="onPageScroll" scroll-into-view='{{storeDetail}}'>
 <view class='scroll-view-item bg_red' id="a1">1标签对应内容区域</view>
 <view class='scroll-view-item bg_blue' id="b1">2标签对应内容区域</view>
 <view class='scroll-view-item bg_green' id="c1">3标签对应内容区域</view>
 <view class='scroll-view-item bg_yellow' id="d1">4标签对应内容区域</view>
 <view class='scroll-view-item bg_red' id="e1">5标签对应内容区域</view>
</scroll-view>
<!-- end 标签对应内容区域 -->

</view>

4、wxss代码:

.text{
 width: 100%;
 display: flex;
 flex-direction: column;
}
.scroll-x-view {
 width: 100%;
 display: flex;
 flex: 1;
}
.scroll-x-view .scroll-view-item {
 margin-top: 50rpx;
 width: 750rpx;
 height: 800rpx;
 display:inline-block;
}
.bg_red {
 background: lightpink;
}
.bg_blue {
 background: lightblue;
}
.bg_green {
 background: lightgreen;
}
.bg_yellow {
 background: lightyellow;
}
.scroll-x-view1 {
 width: 100%;
 height: 100rpx;
 white-space: nowrap;
}
.scroll-x-view1 .scroll-view-item1 {
 width: 400rpx;
 height: 100rpx;
 display:inline-block;
}

5、js代码:

Page({

 /**
  * 页面的初始数据
  */
 data: {
  // 标签锚点跳转值
  indexMaodian: 'a',
  // 标签详情内容锚点跳转
  storeDetail: 'a1'
 },
 // 监听页面滑动距离
 onPageScroll(e) {
  // 通过滑动的距离判断页面滑动那个区域让后让顶部的标签栏切换到对应位置
  var height = Number(e.detail.scrollTop)
  if (height <= 400) {
   // 滑到1区域
   this.setData({
    indexMaodian: 'a'
   });
  } else if (height > 400 && height<= 800) {
   // 滑到2区域
   this.setData({
    indexMaodian: 'b'
   });
  } else if (height > 800 && height <= 1200) {
  // 滑到3区域
   this.setData({
    indexMaodian: 'c'
   });
  } else if (height > 1200 && height <= 1600) {
   // 滑到4区域 后面难得写了,以此类推即可
   this.setData({
    indexMaodian: 'd'
   });
  }


 },
 // 跳转到对应的标签详情内容区
 toDetail(e) {
  let id = e.target.dataset.id
  this.setData({
   storeDetail: id
  })
 },
 /**
  * 生命周期函数--监听页面加载
  */
 onLoad: function (options) {
  var systemInfo = wx.getSystemInfoSync();
  var windowHeight = systemInfo.windowHeight;
  // 拿到导航栏以下可视区域的高度
  this.setData({
   height: windowHeight
  });
 },

 /**
  * 生命周期函数--监听页面初次渲染完成
  */
 onReady: function () {

 },

 /**
  * 生命周期函数--监听页面显示
  */
 onShow: function () {

 },

 /**
  * 生命周期函数--监听页面隐藏
  */
 onHide: function () {

 },

 /**
  * 生命周期函数--监听页面卸载
  */
 onUnload: function () {

 },

 /**
  * 页面相关事件处理函数--监听用户下拉动作
  */
 onPullDownRefresh: function () {

 },

 /**
  * 页面上拉触底事件的处理函数
  */
 onReachBottom: function () {

 },

 /**
  * 用户点击右上角分享
  */
 onShareAppMessage: function () {

 }
})

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

Javascript 相关文章推荐
JS getStyle获取最终样式函数代码
Apr 01 Javascript
web前端开发也需要日志
Dec 09 Javascript
表单元素的submit()方法和onsubmit事件应用概述
Feb 01 Javascript
js判断ie版本号的简单实现代码
Mar 05 Javascript
node.js中的fs.openSync方法使用说明
Dec 17 Javascript
javascript倒计时效果实现
Nov 12 Javascript
js点击返回跳转到指定页面实现过程
Aug 20 Javascript
AngularJs 指令详解及示例代码
Sep 01 Javascript
详解express与koa中间件模式对比
Aug 07 Javascript
vue-router命名视图的使用讲解
Jan 19 Javascript
小程序实现录音上传功能
Nov 22 Javascript
vue使用localStorage持久性存储实现评论列表
Apr 14 Vue.js
javascript实现电商放大镜效果
Nov 23 #Javascript
用webAPI实现图片放大镜效果
Nov 23 #Javascript
Vue 的 v-model用法实例
Nov 23 #Vue.js
JavaScript实现网页留言板功能
Nov 23 #Javascript
VUE+Element实现增删改查的示例源码
Nov 23 #Vue.js
js观察者模式的弹幕案例
Nov 23 #Javascript
js异步接口并发数量控制的方法示例
Nov 22 #Javascript
You might like
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
eclipse php wamp配置教程
2016/06/30 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
ES6的新特性概览
2016/03/10 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
vuex的简单使用教程
2018/02/02 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
vue+iview实现文件上传
2020/11/17 Vue.js
介绍Python的Django框架中的QuerySets
2015/04/20 Python
python中cPickle类使用方法详解
2018/08/27 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
Linux上比较文件的命令都有哪些
2012/02/24 面试题
水产养殖学应届生求职信
2013/09/29 职场文书
自我评价正确写法范文
2013/12/10 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript