Uniapp 微信小程序,实现页面滚动Tab悬停吸顶,点击tab内容跟随滚动

news2024/11/17 5:21:09

Uniapp 微信小程序,实现页面滚动Tab悬停吸顶,点击tab内容跟随滚动

页面股东tab悬停原理:

运用uniapp原生提供方法uni.createSelectorQuery()获取滚动对应节点的信息,即节点距离页面顶部的距离,再通过uniapp原生监听页面滚动事件onPageScroll,获取页面内容滚动的高度,二者相加即定位到对应节点的滚动距离。

1.页面template结构

  data() {
    return {
      curTab: 0,
      isTabFixed: false,
      tabTop: 0,  // tab距离顶部的距离
      curClassName: '',
      pageScrollTop: 0
    }
  },
  computed() {
    detailTabs() {
      let tabs = [{
        name: '正文详情',
        className: '.library-detail-content'
      }]
      if(this.attachment && this.attachment.length > 0) {
        tabs.splice(1, 0, {
          name: '相关附件',
          className: '.library-detail-attachment'
        })
      }
      if(this.relatedPosts && this.relatedPosts.length > 0) {
        tabs.splice(2, 0, {
          name: '图文解读',
          className: '.library-detail-relatedPosts'
        })
      }
      return tabs
    },
  }

微信搜索【蜜蜂网盘搜so】小程序,万部短剧搜索

2.定义变量

  data() {
    return {
      curTab: 0,
      isTabFixed: false,
      tabTop: 0,  // tab距离顶部的距离
      curClassName: '',
      pageScrollTop: 0
    }
  },
  computed() {
    detailTabs() {
      let tabs = [{
        name: '正文详情',
        className: '.library-detail-content'
      }]
      if(this.attachment && this.attachment.length > 0) {
        tabs.splice(1, 0, {
          name: '相关附件',
          className: '.library-detail-attachment'
        })
      }
      if(this.relatedPosts && this.relatedPosts.length > 0) {
        tabs.splice(2, 0, {
          name: '图文解读',
          className: '.library-detail-relatedPosts'
        })
      }
      return tabs
    },
  }

微信搜索【蜜蜂网盘搜so】小程序,万部短剧搜索

3.方法定义


  // 点击tab滚动事件(这一部分如果不需要页面滚动与tab联动,就不需要)
  scrollTo(tab, className) {
      if(!className) return
      if(this.curClassName == className) return
      this.curTab = tab
      const query = uni.createSelectorQuery().in(this);
      query.select(className).boundingClientRect(data => {
        uni.pageScrollTo({
          scrollTop: className == '.library-detail-content' ? 0 : (data?.top + ((this.pageScrollTop || 0))),
          duration: 300
        })
      }).exec();
 
      this.curClassName = className
    },
 
// uni页面滚动监听事件
  onPageScroll(e) {
    this.pageScrollTop = e.scrollTop;
    // 获取tabs的距离顶部的距离
    this.tabTop = uni.createSelectorQuery().select('.content-tabs').boundingClientRect(data => {
      this.tabTop = data.top;
      this.isTabFixed = (this.pageScrollTop > 296)  // 这里是this.tabTop,定位好写死
      // 通过一下日志代码观察高度,以确定什么高度作为悬停的判断,这里296即为确定好的高度
	  console.log("scrollTop=>",this.scrollTop)
    }).exec();
  },

4.css补充

    .is-fixed {  
	  position: fixed;  
	  top: 0;  
	  width: 100%;  
	  z-index: 999; //使其显示在最前面
	}

5.实现效果

欢迎关注我的公众号,打开右下角小程序,万部短剧搜索

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2076112.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】深入理解指针(一)

指针1 1.内存和地址2.指针变量和地址2.1取地址操作符(&)2.2指针变量和将引用操作符2.3解引用操作符2.4指针变量的大小 3.指针变量类型的意义3.1指针变量类型3.2void*指针 4.const修饰指针5.指针运算5.1 指针- 整数5.2指针-指针3.指针的关系运算 6.野…

《高等代数》最大公因式典型例题

说明:此内容用于本人复习巩固,如果也能帮助到大家那就更加有意义了。 注:这道题主要从 1)公因式整除多项式的线性组合 2)最大公因式能够被其它公因式整除 3)如果两个多项式互相整除,那就说明这两个多项式相等 这三个知识点出…

Hadoop的HA配置与实现(ZooKeeper)

目录 一、Hadoop的HA架构二、配置实现Hadoop的HA三、效果 一、Hadoop的HA架构 集群规划 112:NameNode1 ResourceManager1 JournalNode1 113:NameNode2 ResourceManager2 JournalNode2 114:DataNode1 NodeManager1 115:DataNode2 N…

如何快速建30个文件夹

文件夹的快速新建只能通过专门的软件来实现,快速建30个,我们可以使用批处理命令,也可以用第三方软件,批处理的命令,需要我们熟悉如何编写,而第三方软件的话不需要那么多的知识,直接在软件上一键…

货运搬家小程序app定制开发过程中需要的主要功能介绍

货运搬家小程序是一个集成了物流服务全过程的数字化解决方案,它通过移动平台提供注册与登录、货物管理、车辆管理、路线规划、货物分配、订单管理、实时追踪、评价与反馈、价格透明等功能。 具体的功能: 注册与登录用户可以通过小程序注册账号并登录&am…

inflight 守恒算法的实现和仿真

前面介绍过,只要某条流的 inflt 在 bdp 之外再增加一个相等的余量 I,即 inflt bdp I,比如 I 2,I 3,…,就一定会收敛到公平,且不会占据过多 buffer,因此 rtt 不会膨胀&#xff0c…

html+css网页设计 动漫 海贼王14个页面

htmlcss网页设计 动漫 海贼王14个页面 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#x…

开放式耳机对耳朵好吗?开放式耳机哪个品牌好?

许多人在选择开放式耳机时并不了解如何选购。对开放式耳机也不是很了解,所以我在这里做个简单的科普和分享。今天跟大家聊聊开放式耳机会伤害耳朵吗?开放式耳机有什么好处?等等,下面一起来看看吧~ 开放式耳机是什么意思&#xff1…

如何有效激活微信陌生客户:加好友后的沟通策略!

在当今这个数字化时代,微信已成为我们与客户建立联系的重要桥梁。对于许多企业和个人而言,成功添加陌生客户到微信列表只是第一步,真正的挑战在于如何有效激活这些潜在客户,转化为实际交易或长期关系。 下面分享一些沟通策略&…

oracle ONS configuration failed NoserversAvailable:Subscription time out导致应用起不来

java.lang.IllegalArgumentException:ONS configuration failed Caused by: oracle.ons.NoserversAvailable:Subscription time out ##已部署到服务器解决方案&#xff1a; 修改这个2个jar包后缀 ##在项目工程里面&#xff0c;<artifactId>ojdbc8</artifactId> m…

具有强制函数的物理信息神经网络

图片由 agsandrew 在 iStock 上发布 一、说明 在物理学、数学、经济学、工程学和许多其他领域&#xff0c;微分方程根据变量的导数来描述函数。简而言之&#xff0c;当涉及一个变量相对于其他变量的变化率时&#xff0c;你可能会找到一个微分方程。许多示例描述了这些关系。微分…

debian12 - install and config telnet

文章目录 debian12 - install and config telnet概述笔记配置文件END debian12 - install and config telnet 概述 前面实验&#xff0c;在xinetd中指定telnet服务&#xff0c;查看状态时&#xff0c;看到telnet服务bind失败。 直接从其他计算机来连telnet又是正常的&#xf…

随记-部署flink-1.16.3、jdk-11.0.19、zookeeper-3.4.13、kafka_2.12-2.2.2

一、部署flink-1.16.3、jdk-11.0.19、zookeeper-3.4.13、kafka_2.12-2.2.2 #软件下载 https://archive.apache.org/dist/kafka/2.2.2/kafka_2.12-2.2.2.tgz https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz https://archive.apache.org/…

Clustering-Guided Class Activation for WeaklySupervised Semantic Segmentation

pdf&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber10381698 code&#xff1a;https://github.com/DCVL-WSSS/ClusterCAM 摘要&#xff1a; 基于transformer的弱监督语义分割(WSSS)方法利用其捕获全局上下文的强大能力得到了积极的研究。然而&am…

day8JS-作用域

1. 变量的作用域(变量函数) 作用域是变量的可作用范围&#xff0c;变量只有在自己的作用域下才会生效。 函数会产生作用域&#xff0c;在函数内定义的变量只能在函数内使用。 2. 作用域分类 局部作用域&#xff1a; 函数内定义的变量和形参的作用域就是局部作用域&#xff1b;这…

【Hot100】LeetCode—207. 课程表

目录 1- 思路有向图记录入度数组出度列表 2- 实现⭐207. 课程表——题解思路 3- ACM 实现 题目连接&#xff1a;207. 课程表 1- 思路 有向图记录入度数组出度列表 根据输入① 构造遍历构造入度数组② 构造出度列表根据入度数组为 0 的数 加入到 队列中&#xff0c;进行处理 2…

在线拼图用什么软件?5款顶级照片拼接工具

照片拼接在一起用什么软件&#xff1f;当你想全景展现山西应县木塔的震撼之美时&#xff0c;5款精选照片拼接软件能帮你解锁全新视角。 这座千年古塔&#xff0c;巍峨耸立&#xff0c;细节之处尽显匠心独运。而通过拼接技术&#xff0c;每一块木构的精致、每一层塔檐的飞翘都能…

OpenBayes 教程上新 | 青岛小哥焦恩俊版二郎神来袭,MuseV + MuseTalk 分分钟实现高质量数字人制作!

使用传统的数字人训练方案生成一个高质量的数字人&#xff0c;常常需要大量的时间和算力资源&#xff0c;同时对训练素材的要求也较高&#xff0c;如果想要达到良好的唇形一致效果&#xff0c;通常需要数小时乃至更久。 MuseV 和 MuseTalk 的出现为数字人领域带来了新的突破&a…

【Canvas与桌面】十字网格黑灰背景(1920x1080)

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>十字网格黑灰背景(1920x1080)</title><style type"te…

iphone被锁定怎么解锁?iPhone密码锁解锁办法分享

在忙碌的生活中&#xff0c;有时我们可能会遇到一些“小插曲”&#xff0c;比如苹果手机被锁定&#xff0c;iPhone被锁定是一个常见的问题&#xff0c;可能是由于忘记密码、多次输入错误密码或设备被远程锁定等原因造成的。 本文将介绍解锁被锁定的iPhone的方法以及注意事项&a…