微信小程序实现锚点跳转


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 相关文章推荐
IE和Firefox的Javascript兼容性总结[推荐收藏]
Oct 19 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
Oct 29 Javascript
基于jquery打造的百分比动态色彩条插件
Sep 19 Javascript
javaScript实现滚动新闻的方法
Jul 30 Javascript
jQuery基于ajax实现星星评论代码
Aug 07 Javascript
JavaScript对象封装的简单实现方法(3种方法)
Jan 03 Javascript
JavaScript实现省市县三级级联特效
May 16 Javascript
BootStrap Select清除选中的状态恢复默认状态
Jun 20 Javascript
vue-resource + json-server模拟数据的方法
Nov 02 Javascript
浅析Vue 生命周期
Jun 21 Javascript
记一次vue去除#问题处理经过小结
Jan 24 Javascript
node.js实现带进度条的多文件上传
Mar 27 Javascript
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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
php中截取中文字符串的代码小结
2011/07/17 PHP
php页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2017/04/26 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
jQuery textarea的长度进行验证
2009/05/06 Javascript
Webkit的跨域安全问题说明
2011/09/13 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
浅谈JS运算符&amp;&amp;和|| 及其优先级
2016/08/10 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
Python的词法分析与语法分析
2013/05/18 Python
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
让 python 命令行也可以自动补全
2014/11/30 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
python 调用c语言函数的方法
2017/09/29 Python
Python中extend和append的区别讲解
2019/01/24 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
犯错检讨书
2014/02/21 职场文书
2014植树节活动总结
2014/03/11 职场文书
离婚财产分配协议书
2014/10/21 职场文书
2014年文员工作总结
2014/11/18 职场文书
办公用品管理制度
2015/08/04 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS