微信小程序实现锚点跳转


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代码
Dec 03 Javascript
js arguments对象应用介绍
Nov 28 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
Nov 21 Javascript
jquery中获得元素尺寸和坐标的方法整理
May 18 Javascript
jQuery实现径向动画菜单效果
Jul 17 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
Jun 08 Javascript
vue项目中引入vue-datepicker插件的详解
May 14 Javascript
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
Vue.js路由实现选项卡简单实例
Jul 24 Javascript
Websocket 向指定用户发消息的方法
Jan 09 Javascript
vue下canvas裁剪图片实例讲解
Apr 16 Javascript
通过实例解析json与jsonp原理及使用方法
Sep 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
PHP的变量类型和作用域详解
2014/03/12 PHP
php生成gif动画的方法
2015/11/05 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
一些技巧性实用js代码小结
2009/10/14 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
python中根据字符串调用函数的实现方法
2016/06/12 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
Python操作Excel的学习笔记
2021/02/18 Python
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
linux面试题参考答案(2)
2015/12/06 面试题
自立自强的名人事例
2014/02/10 职场文书
出纳员的岗位职责
2014/02/22 职场文书
经典婚礼主持词
2014/03/13 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
教师节倡议书2015
2015/04/27 职场文书
雷锋电影观后感
2015/06/10 职场文书
高中运动会广播稿
2015/08/19 职场文书
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python
处理canvas绘制图片模糊问题
2022/05/11 Javascript
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL