vue的表格实现轮播表

如何在el-table表格中实现轮播表,每一列数据上向自动滚动?

一、思路:我们只需要获取到表格的数据数组,然后设置一个定时器即可,每秒将第一个元素添加至数组末尾,在将第一位元素删除。
二、代码:

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="jquery.min.js"></script>
		<script src="../Echarts/vue.min.js"></script>
		<script src="../Echarts/element.js"></script>
		<link rel="stylesheet" type="text/css" href="css/element.css" />
	</head>

	<body>
		<div id="box">
			<el-table :data="tableData" style="width: 100%;height:300px;">
				<el-table-column prop="date" label="日期" width="180">
				</el-table-column>
				<!--<el-table-column prop="name" label="姓名" width="180">-->
				</el-table-column>
				<el-table-column prop="address" label="地址">
				</el-table-column>
		</div>

		<script>
			new Vue({
				el: '#box',
				data: {
//					animate: false,
					tableData: [{
						date: '1',
						name: '王小虎',
						address: '上海市普陀区金沙江路 1518 弄'
					}, {
						date: '2',
						name: '王小虎',
						address: '上海市普陀区金沙江路 1517 弄'
					}, {
						date: '3',
						name: '王小虎',
						address: '上海市普陀区金沙江路 1519 弄'
					}, {
						date: '4',
						name: '王小虎',
						address: '上海市普陀区金沙江路 1516 弄'
					}, {
						date: '5',
						name: '王小虎',
						address: '上海市普陀区金沙江路 1516 弄'
					}, {
						date: '6',
						name: '王小虎',
						address: '上海市普陀区金沙江路 1516 弄'
					}, {
						date: '7',
						name: '王小虎',
						address: '上海市普陀区金沙江路 1516 弄'
					}, {
						date: '8',
						name: '王小虎',
						address: '上海市普陀区金沙江路 1516 弄'
					}, {
						date: '9',
						name: '王小虎',
						address: '上海市普陀区金沙江路 1516 弄'
					}, {
						date: '10',
						name: '王小虎',
						address: '上海市普陀区金沙江路 1516 弄'
					}, {
						date: '11',
						name: '王小虎',
						address: '上海市普陀区金沙江路 1516 弄'
					}, {
						date: '12',
						name: '王小虎',
						address: '上海市普陀区金沙江路 1516 弄'
					}]
				},
				created() {
					setInterval(this.scroll, 1000)
				},
				methods: {
					scroll(){
					      let el = document.querySelector('.el-table__body-wrapper')
					      el.addClassName = 'anim'
					       setTimeout(()=>{ 
					              // console.log(this.items[0])
					              this.tableData.push(this.tableData[0]);  // 将数组的第一个元素添加到数组的
					              this.tableData.shift();    //删除数组的第一个元素
					       },1000)
					    }
				}

			})
		</script>
		<style scoped>
		.anim{
		  animation: mymove 1s linear;
		}
		 
		@keyframes mymove
		{
		from {
		  transform: translateY(0px) ;
		}
		to {
		  transform: translateY(-20px) ;
		}
		}
		</style>

	</body>

</html>

在这里插入图片描述

这样就ok了,但是存在缺陷,就是轮播不是缓缓的,是突然的向上,但是总归是实现了循环轮播!如果想无缝缓缓的轮播,那就比较麻烦了,网上很多方法都试过,放在el-table上感觉有点问题,如果是普通的table就成功了!

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用 Vue 的 transition 组件来实现表格上下轮播图的效果。具体实现步骤如下: 1. 在表格中添加一个 div 容器,用于包裹需要轮播的图片。 2. 使用 CSS 将这个容器设置为固定高度,同时设置 overflow 属性为 hidden,以便实现上下滚动的效果。 3. 在 Vue 中定义一个变量,用于记录当前显示的图片索引。 4. 使用 setInterval 函数定时切换图片,同时在切换时使用 transition 组件实现过渡效果。 下面是代码示例: ```html <template> <div class="table-container"> <table> <thead> <tr> <th>序号</th> <th>名称</th> <th>图片</th> </tr> </thead> <tbody> <tr v-for="(item, index) in dataList" :key="index"> <td>{{ index + 1 }}</td> <td>{{ item.name }}</td> <td> <div class="img-container"> <transition name="slide-up"> <img :src="item.images[currentIndex]" :key="currentIndex"> </transition> </div> </td> </tr> </tbody> </table> </div> </template> <script> export default { data() { return { dataList: [ { name: '图片1', images: ['image1-1.jpg', 'image1-2.jpg', 'image1-3.jpg'] }, { name: '图片2', images: ['image2-1.jpg', 'image2-2.jpg', 'image2-3.jpg'] }, { name: '图片3', images: ['image3-1.jpg', 'image3-2.jpg', 'image3-3.jpg'] } ], currentIndex: 0 } }, mounted() { // 每 3 秒钟切换一次图片 setInterval(() => { this.currentIndex = (this.currentIndex + 1) % 3 }, 3000) } } </script> <style> .table-container { max-height: 300px; overflow-y: auto; } .img-container { height: 100px; overflow: hidden; } .slide-up-enter-active, .slide-up-leave-active { transition: transform 0.5s; } .slide-up-enter, .slide-up-leave-to { transform: translateY(100%); } </style> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值