微信小程序实现锚点跳转


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 相关文章推荐
IE6已终止操作问题的2种情况及解决
Apr 23 Javascript
使用JavaScript获取电池状态的方法
May 03 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
Dec 20 Javascript
javaScript中Math()函数注意事项
Jun 18 Javascript
js输出数据精确到小数点后n位代码
Jul 02 Javascript
JS实现六边形3D拖拽翻转效果的方法
Sep 11 Javascript
web 前端常用组件之Layer弹出层组件
Sep 22 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 Javascript
深入理解Vue.js源码之事件机制
Sep 27 Javascript
JS实现可针对算术表达式求值的计算器功能示例
Sep 04 Javascript
seajs和requirejs模块化简单案例分析
Aug 26 Javascript
element-ui table组件如何使用render属性的实现
Nov 04 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
phpBB BBcode处理的漏洞
2006/10/09 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
php中file_exists函数使用详解
2015/05/08 PHP
PHP数组操作类实例
2015/07/11 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
laravel请求参数校验方法
2019/10/10 PHP
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
微信小程序学习(4)-系统配置app.json详解
2017/01/12 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
python logging类库使用例子
2014/11/22 Python
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
方正Java笔试题
2014/07/03 面试题
外语系毕业生找工作的求职信
2013/11/28 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
义诊活动总结
2015/02/04 职场文书
母亲去世追悼词
2015/06/23 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书