vue数据大屏表格无限滚动

这篇文章介绍了如何使用Vue.js和CSS创建一个动态的表格,展示车辆的车牌号码、公司名称、在线/下线状态以及时间,通过CSS动画控制行的显示和隐藏。
摘要由CSDN通过智能技术生成
          <div class="distance">
            <el-table class="th" border empty-text=" ">
              <el-table-column label="车牌号码" align="center" />
              <el-table-column label="公司名称" align="center" />
              <el-table-column label="状态" align="center" width="60" />
              <el-table-column label="时间" align="center" />
            </el-table>
            <div
              class="box"
              @mouseover="pauseAnimation"
              @mouseout="resumeAnimation"
            >
              <el-table
                :data="tableData"
                :show-header="false"
                style="width: 100%"
                class="table"
                empty-text=" "
                ref="table"
              >
                <el-table-column
                  prop="license"
                  label="车牌号码"
                  align="center"
                />
                <el-table-column
                  prop="orgName"
                  label="公司名称"
                  align="center"
                />
                <el-table-column
                  prop="onoff"
                  label="状态"
                  align="center"
                  width="60"
                >
                  <template #default="scope">
                    <div class="on" v-if="scope.row.onoff">在线</div>
                    <div class="off" v-else>下线</div>
                  </template>
                </el-table-column>
                <el-table-column prop="time" label="时间" align="center" />
              </el-table>
              <el-table
                :data="tableData"
                :show-header="false"
                style="width: 100%"
                class="table"
                empty-text=" "
              >
                <el-table-column
                  prop="license"
                  label="车牌号码"
                  align="center"
                />
                <el-table-column
                  prop="orgName"
                  label="公司名称"
                  align="center"
                />
                <el-table-column
                  prop="onoff"
                  label="状态"
                  align="center"
                  width="60"
                >
                  <template #default="scope">
                    <div v-if="scope.row.onoff" class="on">在线</div>
                    <div class="off" v-else>下线</div>
                  </template>
                </el-table-column>
                <el-table-column prop="time" label="时间" align="center" />
              </el-table>
            </div>
          </div>
    pauseAnimation() {
      const tables = document.querySelectorAll('.table');
      tables.forEach((table) => {
        table.style.animationPlayState = 'paused';
      });
    },
    resumeAnimation() {
      const tables = document.querySelectorAll('.table');
      tables.forEach((table) => {
        table.style.animationPlayState = 'running';
      });
    },
.box {
  /* overflow: hidden; */
  /* border: 1px solid #eaeef2; */
  height: 25vh;
  overflow: hidden;

  @media (max-width: 1560px) {
    height: 23vh;
    /* border: 1px solid #eaeef2; */
  }
}

.table {
  animation: table 15s infinite linear;
}

@keyframes table {
  0% {
    transform: translateY(0);
  }

  100% {
    transform: translateY(-100%);
  }
}
:deep .th .el-table__empty-block,
:deep .th .el-table__body-wrapper {
  height: 0px !important;
  min-height: 0px !important;
  display: none;
}
.rightFirst :deep .el-table tr .cell,
.rightSecond :deep .el-table tr .cell {
  padding: 15px !important;
  background-color: #1d2775 !important;
}
:deep .th thead {
  box-sizing: border-box;
  height: 7vh !important;
  background-color: #1d2775;
}
:deep .th thead tr .cell {
  color: #05c4e3;
}
.box :deep .cell {
  color: #f2f2f2;
}

Vue.js 是一个流行的前端JavaScript框架,用于构建用户界面。在Vue 2中,要实现大屏数据列表的滚动效果,可以通过结合使用内置指令和第三方库来完成。以下是实现这一功能的基本步骤: 1. **使用`v-for`指令渲染列表**:首先,使用Vue的`v-for`指令来渲染列表数据。这将在页面上生成对应数量的列表项。 2. **CSS样式设置**:给列表项添加CSS样式,以确保它们能够适应大屏布局。可能需要设置固定的高度、宽度,并适当使用`overflow-y: auto;`属性来控制垂直滚动。 3. **使用滚动监听库**:可以使用第三方库如`vue-smooth-dnd`或者`vue-infinite-scroll`等,这些库可以帮助实现平滑滚动无限滚动的效果。 4. **滚动事件处理**:如果需要对滚动事件做额外处理,可以在Vue组件中监听滚动事件,并根据需要执行相应的逻辑。 5. **虚拟滚动**:对于大量数据的列表,使用虚拟滚动技术可以提高性能。这涉及到只渲染视口中的元素,而不是整个列表,从而减少DOM操作和提升滚动流畅性。 实现示例代码可能如下所示: ```html <template> <div class="scroll-list" @scroll="handleScroll"> <div class="list-item" v-for="(item, index) in listData" :key="index"> {{ item }} </div> </div> </template> <script> export default { data() { return { listData: [...], // 大量的数据列表 scrollHeight: 0, // 列表容器的高度 }; }, methods: { handleScroll(event) { // 滚动事件处理逻辑 console.log(event.target.scrollTop); }, }, }; </script> <style> .scroll-list { height: 500px; /* 设置列表容器的高度 */ overflow-y: auto; /* 开启垂直滚动 */ } .list-item { height: 50px; /* 设置每个列表项的高度 */ line-height: 50px; /* 设置行高与高度相同,使得文本垂直居中 */ } </style> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值