微信小程序实现锚点跳转


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类库需要的核心代码
Jul 16 Javascript
JS实现的4种数字千位符格式化方法分享
Mar 02 Javascript
JS中prototype的用法实例分析
Mar 19 Javascript
ajax+jQuery实现级联显示地址的方法
May 06 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
May 20 Javascript
轻松掌握JavaScript中介者模式
Aug 26 Javascript
js HTML5上传示例代码完整版
Oct 10 Javascript
js a标签点击事件
Mar 30 Javascript
JS实现动态添加DOM节点和事件的方法示例
Apr 28 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
Jun 21 Javascript
layui框架中layer父子页面交互的方法分析
Nov 15 Javascript
如何使用gpu.js改善JavaScript的性能
Dec 01 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
mysql 搜索之简单应用
2007/04/27 PHP
php导入导出excel实例
2013/10/25 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
javascript 面向对象的JavaScript类
2010/05/04 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
小程序实现tab标签页
2020/11/16 Javascript
python网络爬虫采集联想词示例
2014/02/11 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
Python实现分数序列求和
2020/02/25 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
html5时钟实现代码
2010/10/22 HTML / CSS
联想台湾官网:Lenovo TW
2018/05/09 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
转让协议书范本
2014/09/13 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
十七岁的单车观后感
2015/06/12 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python