微信小程序实现锚点跳转


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源码]超长文章自动分页(客户端版)
Jan 09 Javascript
javascript Firefox与IE 替换节点的方法
Feb 24 Javascript
选择复选框按钮置灰否则按钮可用
May 22 Javascript
js触发select onchange事件的小技巧
Aug 05 Javascript
JavaScript实现数组降维详解
Jan 05 Javascript
原生js更改css样式的两种方式
Mar 15 Javascript
Vue2组件tree实现无限级树形菜单
Mar 29 Javascript
VSCode中如何利用d.ts文件进行js智能提示
Apr 13 Javascript
JS实现的判断方法、变量是否存在功能示例
Mar 28 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
Nov 14 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
Dec 30 Javascript
Vue 数据绑定的原理分析
Nov 16 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
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
php strtotime 函数UNIX时间戳
2009/01/14 PHP
php过滤敏感词的示例
2014/03/31 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
Javascript string 扩展库代码
2010/04/09 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
2014/12/08 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
微信小程序左右滑动切换页面详解及实例代码
2017/02/28 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
详解小程序循环require之坑
2019/03/08 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
2020/06/05 Javascript
Python去除字符串两端空格的方法
2015/05/21 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
Python3实现的反转单链表算法示例
2019/03/08 Python
python之生产者消费者模型实现详解
2019/07/27 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
python 元组和列表的区别
2020/12/30 Python
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
十月份红领巾广播稿
2014/01/22 职场文书
八年级数学教学反思
2014/01/31 职场文书
我爱我校演讲稿
2014/05/21 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
【2·13】一图读懂中国无线电发展
2022/02/18 无线电