微信小程序实现锚点跳转


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 相关文章推荐
Javascript 原型和继承(Prototypes and Inheritance)
Apr 01 Javascript
Javascript 键盘事件的组合使用实现代码
May 04 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
Jan 09 Javascript
jQuery入门之层次选择器实例简析
Dec 11 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
Jan 15 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
Aug 22 Javascript
react高阶组件经典应用之权限控制详解
Sep 07 Javascript
JS文件中加载jquery.js的实例代码
May 05 jQuery
webpack+vue+express(hot)热启动调试简单配置方法
Sep 19 Javascript
vue2.0项目集成Cesium的实现方法
Jul 30 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
Dec 12 Javascript
基于redis的小程序登录实现方法流程分析
May 25 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
献给php初学者(入门学习经验谈)
2010/10/12 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
Angularjs按需查询实例代码
2017/10/30 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
python实现统计代码行数的方法
2015/05/22 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
对Python中的@classmethod用法详解
2018/04/21 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
楼面经理岗位职责范本
2014/02/18 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
python 字典和列表嵌套用法详解
2021/06/29 Python
图文详解Nginx版本平滑升级方案
2021/09/15 Servers
使用HBuilder制作一个简单的HTML5网页
2022/07/07 HTML / CSS