table自动滚动内容 利用定时器

本文介绍了如何在Vue项目中利用定时器实现Table组件的内容自动滚动效果,详细讲解了实现步骤和关键代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不出现滚动条,利用定时间自滚动。就想宣传网站中的新闻展示。
方法一:
<template>
	<div class="PMtable">
		<table class="tableTitle" cellpadding="2" width="600px">
		    <thead>
			    <!--<tr>
			      <td colspan="4" align="center">菜市场价格滚动条11</td>
			      <td colspan="7" align="center"></td>
			    </tr>-->
			    <tr bgcolor="#134458">
			      <td width="11%"   height="22">省份</td>
			      <td width="11%"   height="22">城市</td>
			      <td width="11%"   height="22">区县</td>
			      <td width="12%"   height="22">均值</td>
			      <td width="8%"   height="22">最小值</td>
			      
			      <td width="8%"   height="22">最大值</td>
			      <td width="8%"   height="22">25%</td>
			      <td width="8%"   height="22">50%</td>
			      <td width="8%"   height="22">75%</td>
			      <td width="10%"   height="22">样本量n(天)</td>
			      
			      <td width="8%"   height="22">缺失(天)</td>
			    </tr>
		    </thead>
		</table>
		<div id="demo" style="width:600px; height: 100px">
  			<div id="demo1">
  				<table class="tableCon" width="100%" v-on:mouseover="datashubiao" v-on:mouseout="mouseout1">
				    <tr>
				    	<td width="9%">北京市</td>
				    	<td width="9%">北京市</td>
				    	<td width="9%">东城区</td>
				    	<td width="9%">90</td>
				    	<td width="9%">30</td>
				    
				    	<td width="9%">120</td>
				    	<td width="9%">20</td>
				    	<td width="9%">50</td>
				    	<td width="9%">70</td>
				    	<td width="9%">30</td>
				    
				    	<td width="9%">0</td>
				  	</tr>
				 	<tr>
				    	<td width="9%">北京市</td>
				    	<td width="9%">北京市</td>
				    	<td width="9%">西城区</td>
				    	<td width="9%">90</td>
				    	<td width="9%">30</td>
				    
				    	<td width="9%">120</td>
				    	<
### 使用 Vue 3 和 `el-table` 组件实现自动滚动Vue 3 中使用 `el-table` 实现自动滚动功能可以通过自定义逻辑来完成,因为官方并没有提供直接支持此特性的属性[^1]。为了达到这一目的,可以利用 JavaScript 的定时器函数配合 CSS 或者原生 DOM 操作来进行。 #### 方法一:基于时间间隔的自动滚动 这种方法适用于简单的场景,比如展示公告栏或轮播图等不需要复杂交互的情况。以下是具体实现方式: ```javascript <template> <div ref="tableContainer" style="overflow-y: auto; height: 300px;"> <el-table :data="visibleData"> <!-- 表格列配置 --> </el-table> </div> </template> <script setup> import { ref, onMounted } from 'vue'; const tableContainer = ref(null); let intervalId; onMounted(() => { startAutoScroll(); }); function startAutoScroll() { let scrollTop = 0; const containerHeight = tableContainer.value.clientHeight; intervalId = setInterval(() => { scrollTop += 1; if (scrollTop >= containerHeight) { scrollTop = 0; } tableContainer.value.scrollTop = scrollTop; }, 20); // 调整速度可通过改变毫秒数控制 } </script> ``` 上述代码片段展示了如何创建一个具有固定高度并允许垂直滚动内容容器,并设置了一个每20ms增加一次顶部偏移量(`scrollTop`)的时间循环,从而实现了平滑向下的自动滚动效果。当滚动条到达底部时会重置回初始位置继续向上移动。 #### 方法二:结合鼠标事件优化用户体验 对于更复杂的业务需求,如希望用户能够暂停/恢复滚动以及进行手动拖拽,则可以在方法一的基础上加入相应的监听处理程序: ```javascript // ... 上述模板部分保持不变 ... <script setup> import { ref, onMounted, watchEffect } from 'vue'; import { useMouse } from '@vueuse/core'; const tableContainer = ref(null); let isPaused = false; let intervalId; onMounted(() => { startAutoScroll(); // 添加鼠标进入离开事件监听 tableContainer.value.addEventListener('mouseenter', pauseScrolling); tableContainer.value.addEventListener('mouseleave', resumeScrolling); // 利用 vue-use 库获取当前鼠标的坐标状态 const mousePosition = useMouse({ type: 'client' }); watchEffect(() => { if (!isPaused && mousePosition.x > 0 && mousePosition.y > 0 && mousePosition.x < window.innerWidth && mousePosition.y < window.innerHeight) { clearInterval(intervalId); setTimeout(resumeScrolling, 5000); // 鼠标静止一段时间后重新启动滚动 } }); }); function startAutoScroll() { let scrollTop = 0; const containerHeight = tableContainer.value.clientHeight; intervalId = setInterval(() => { scrollTop += 1; if (scrollTop >= containerHeight || isPaused) return; tableContainer.value.scrollTop = scrollTop; }, 20); } function pauseScrolling() { isPaused = true; clearInterval(intervalId); } function resumeScrolling() { isPaused = false; startAutoScroll(); } </script> ``` 这段增强版脚本不仅保留了原有的自动滚动特性,还增加了对用户的友好互动体验——当光标位于表格区域内时停止滚动;一旦检测到长时间无操作则自动重启滚动过程。此外,也考虑到了边界条件以防止越界错误的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值