vue-seamless-scroll数据量少时,暂停滚动,继续滚动

news2025/1/21 5:58:07

需求内容

大屏项目:指定dom元素内,如果子元素内容过多,超出父元素的最高高度,可以发生自动滚动;如果子元素内容没有超出父元素的最高高度,不可以发生自动滚动。

.

实现方案

获取数据后并渲染到dom后,查看最后一个子元素是否在父元素的可视范围内,如果在就禁止vue-seamless-scroll复制数据和自动滚动行为,反之则允许。
在这里插入图片描述
通过最后一个子元素offsetTop和父元素的clientHeight比较

代码逻辑

<vueSeamless :data="copyData" ref="vueSeamlessRef" class="scroll-list-seamless" :class-option="vueSeamlessOptions">
   <ul class="data-list">
     <li v-for="item in dataList" :key="item.count">
       <p v-text="item.name"></p>
       <p v-text="item.count"></p>
     </li>
   </ul>
 </vueSeamless>

<script>
data () {
	return {
		dataList: [],
		copyData: [],
		vueSeamlessOptions: null
	}
}
methods: {
	this.dataList = xxxx
	// 获取数据后,等待实际渲染dom后判断是否滚动
	this.$nextTick(() => {
		  const scrollListDom = document.querySelector('.scroll-list-seamless')
          if (scrollListDom) {
            const scrollListDomLast = scrollListDom.querySelectorAll('li')[scrollListDom.querySelectorAll('li').length - 1]
            this.vueSeamlessOptions= {
              limitMoveNum: 20,
              step: .5,
              // autoPlay为false则不自动滚动,反之则开发自动滚动
              autoPlay: scrollListDomLast .offsetTop > scrollListDom .clientHeight
            }
            if (this.vueSeamlessOptions.autoPlay) {
              //vueSeamless 组件的data属性如果有值,则会自动复制一分并渲染
              //所以如果需要自动滚动,才需要赋值;反之则不需要
              this.copyData= this.dataList
              // 手动调用组件内方法,开始自动滚动
              this.$refs.vueSeamlessRef._startMove()
            }
          }
	})
}
</script>

<style>
.scroll-list-seamless {
	height: 400px;
	overflow: hidden;
}
</style>


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

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

相关文章

并查集的查询与合并详解

文章目录 一、并查集的概念 二、并查集的实现 2、1 并查集不同集合&#xff08;树&#xff09;的形成 2、2 find&#xff08;&#xff09;函数找一个元素集合的编号&#xff08;元素所属于树的祖宗&#xff09; 2、3 合并两个不同集合&#xff08;合并两棵不同的树&#xff09…

SpringCloud学习笔记 - Nacos集群配置和配置持久化

1. 集群架构 要组成集群Nacos必须要有3个或以上的Nacos服务节点&#xff0c;官网推荐在生产服务中使用集群架构。 官网对Nacos集群架构的说明&#xff1a;https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html 总体来说有三种方式可以实现Nacos集群部署&#xff1a; …

恒远模式(flyweight)

简介&#xff1a;共享对象&#xff0c;当一个对象可以被多次利用的时候&#xff0c;并且对象内部相同&#xff0c;这个时候需要考虑让对象进行复用&#xff0c;而不是多次创建结构图&#xff1a;代码就不写了&#xff0c;因为我觉得这东西没啥用&#xff0c;因为一个对象对应的…

技术分享 | 测试平台开发-前端开发之Vue.js 框架

Vue.js 是一套用于构建用户界面的渐进式框架&#xff0c;在目前的前端开放中比较流行的前端框架。Vue 被设计成自底向上的逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或已有项目整合。但是学习 Vue.js 需要一定的 HTML、CSS、和 …

指针进阶(3)

tips 1. sizeof的返回类型时size_t。size_t就是为sizeof量身定做的&#xff0c;size_t就是unsigned int 2. strlen碰到\0会停下来&#xff0c;而sizeof则不会&#xff0c;也将其算作一个字符 3. 要注意这么两对东西&#xff1a; scanf()与gets(): \0 , \n , 空格 …

<TCP网络编程>——《计算机网络》

目录 1.TCP网络程序 1.1 TCP socket API 1.1.1 socket(): 1.1.2 bind():​ 1.1.3 listen(): ​ 1.1.4 accept(): 1.1.5 connect(): 2. 封装 TCP socket 2.1 实现一个简单的英译汉的功能 3.简单的TCP网络程序(多进程版本) 4. 简单的TCP网络程序(多线程版本) 5. 线程…

SpringBoot自定义MessageConvert

目录 前言 原理 实现 拓展 前言 对于页面携带的请求头中的AcceptSpringBoot有对应的10种MessageConvert可以支持写出对应的媒体类型&#xff0c;比如application/xml、application/json…… 我们还可以通过向容器放入一个WebMvcConfigurer 实现定制化SpingMVC&#xff0…

Android 深入系统完全讲解(7)

7 如何调试代码&#xff0c;JNI&#xff0c;Framework,APP 调试技巧是我在每入职一家新公司&#xff0c;都会给大家分享的。在 MTK 官方培训还是需要编译才能调试的时候&#xff0c;我无意中调试 MMS 代码&#xff0c;发现跟进了系统代码&#xff0c;调试了相关的匹配搜索子串代…

Java多线程(一)——Hotspot的锁( Synchronized)

1. 锁的概念 Java语言为了解决并发编程中存在的原子性、可见性和有序性问题&#xff0c;提供了一系列和并发处理相关的关键字&#xff0c;比如synchronized、volatile、final、concurren包等 2. Synchronized的基本使用 synchronized是Java提供的一个并发控制的关键字。主要…

【LINUX】工具篇--gcc的使用

我们知道&#xff0c;在程序翻译的过程中一般会经过四个步骤预处理头文件展开&#xff0c;条件编译&#xff0c;宏替换&#xff0c;去注释编译C语言代码--->汇编代码汇编汇编代码--->可重定向目标二进制文件(只把自己写的函数形成二进制文件&#xff0c;此阶段无法被执行…

Vue3一学就会系列:02 模板语法与计算属性

系列文章目录 Vue3一学就会系列&#xff1a;01 vue3安装与搭建项目 文章目录系列文章目录文本插值html 插入属性绑定常用指令计算属性总结文本插值 最基本的数据绑定形式是文本插值&#xff0c;它使用的是“Mustache”语法 (即双大括号)&#xff1a; 知识点&#xff1a; {{}}…

(考研湖科大教书匠计算机网络)第一章概述-第二节:三种交换方式(电路交换、报文交换和分组交换)

文章目录一&#xff1a;电路交换&#xff08;Circuit Switching&#xff09;二&#xff1a;分组交换&#xff08;Packet Switching&#xff09;三&#xff1a;报文交换&#xff08;Message Switching&#xff09;四&#xff1a;三种交换方式对比&#xff08;1&#xff09;概述&…

一个自定义的html5视频播放器

// 功能:// 1.视频的播放与暂停(图标变化)// 2.总时间的显示// 3.当前时间的显示(进度)// 4.进度条的显示// 5.跳跃播放// 6.全屏<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport"…

利用决策树学习基金持仓并识别公司风格类型

摘要与声明 1&#xff1a;本文主要利用决策树学习基金持仓并反向推理出一套更受市场认可的风格划分标准&#xff0c;最后借助该模型识别公司所属的风格类型&#xff1b; 2&#xff1a;本文主要为理念的讲解&#xff0c;模型也是笔者自建&#xff0c;文中假设与观点是基于笔者…

JVM的内存配置参数

VM的结构问题&#xff1a;JVM分两块&#xff1a;PermanentSapce和HeapSpace&#xff0c; HeapSpace 【old new{Eden&#xff0c;from&#xff0c;to}】 PermantSpace主要负责存放加载Class类级别的class本身&#xff0c;method&#xff0c;field等反射对象&#xff0c;一般不…

重磅指挥棒!2023年国资委央企指标考核体系从两利四率到一利五率变化解读

前几天&#xff0c;2023年的第三个工作日&#xff0c;国资委召开了中央企业负责人会议&#xff0c;提出了优化中央企业经营考核指标体系的六个指标 —— 一利五率&#xff0c;目标是一增一稳四提升。一增&#xff0c;就是确保利润总额增速高于全国GDP增速。一稳&#xff0c;资产…

小程序学习(1)-------小程序的结构及作用

获取APPID 开发-开发管理->开发设置&#xff08;新建项目时需要输入appid&#xff09; 小程序的文件结构 pages 用来存放所有小程序的页面 utils 用来存放工具性质的模块&#xff08;例如&#xff1a;格式化时间的自定义模块&#xff09; app.js 小程序项目的入口文件 ap…

【Redis】分别从互斥锁与逻辑过期两个方面来解决缓存击穿问题

文章目录前言一.什么是缓存击穿二.基于互斥锁解决缓存击穿三.基于逻辑过期解决缓存击穿四.接口测试五.两者对比前言 身逢乱世&#xff0c;未雨绸缪 一.什么是缓存击穿 说直白点&#xff0c;就是一个被非常频繁使用的key突然失效了请求没命中缓存&#xff0c;而因此造成了无数…

使用electron将vue项目打包成exe

文章目录一、前言二、实现方法1.跑通示例代码 electron-quick-start<1>clone示例代码<2>进入项目根目录&#xff0c;下载依赖<3>测试运行2.打包自己的 vue 项目3.将vue项目整合到示例代码中打包exe<1>将打包好的 dist 文件夹复制到示例代码 electron-q…

sklearn之OPTICS聚类

文章目录简介sklearn实现cluster_optics_dbscan简介 OPTICS算法&#xff0c;全称是Ordering points to identify the clustering structure&#xff0c;是一种基于密度的聚类算法&#xff0c;是DBSCAN算法的一种改进。 众所周知&#xff0c;DBSCAN算法将数据点分为三类&#…