组件库中的 table组件实现自动上下滚动

<el-table
  :data="tableData"
  stripe
  class="swiper-page-table"
  ref="table"
  height="83%"
  <el-table-column type="index" label="序号" width="50"> </el-table-column>
  <el-table-column prop="date" label="公司名称" width="120">
  </el-table-column>
  <el-table-column prop="date" label="所属行业" width="140">
  </el-table-column>
  <el-table-column prop="name" label="经营类目" width="140">
  </el-table-column>
  <el-table-column prop="address" label="商品数量" min-width="220">
  </el-table-column>
  <el-table-column prop="date" label="联系人"> </el-table-column>
  <el-table-column prop="date" label="联系电话"> </el-table-column>
</el-table>
 mounted() {
    // 拿到表格挂载后的真实DOM
    const table = this.$refs.table;
    // 拿到表格中承载数据的div元素
    const divData = table.bodyWrapper;
    // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
    setInterval(() => {
      // 元素自增距离顶部1像素
      divData.scrollTop += 1;
      // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
      if (divData.clientHeight + divData.scrollTop == divData.scrollHeight) {
        // 重置table距离顶部距离
        divData.scrollTop = 0;
        //滚动到底部后,也可以从下向上滚动
        //divData.scrollTop -= 1;
      }
    }, 30);  // 滚动速度
  },
如果您在使用 Vue.js 框架,可以使用 Element UI 的 `el-table` 组件实现自动滚动显示的表格。具体的步骤如下: 1. 引入 Element UI 库,在代码中注册 `el-table` 组件。 2. 在 `el-table` 组件中使用 `max-height` 和 `height` 属性设置表格的高度。 3. 在 `el-table` 组件中使用 `scroll` 属性启用横向和纵向滚动条。 4. 在 `el-table` 组件中使用 `header-fixed` 和 `footer-fixed` 属性设置固定的表头和表尾。 5. 在 `el-table` 组件中使用 `v-loading` 属性设置加载状态。 例如,以下是一个实现自动滚动显示的 `el-table` 组件的示例代码: ```html <template> <div> <el-table :data="tableData" style="width: 100%; max-height: 200px; height: auto;" :header-fixed="true" :footer-fixed="true" :scroll="{ x: '100%', y: 200 }" v-loading="loading"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> </div> </template> <script> import { reactive } from 'vue' export default { setup() { const state = reactive({ loading: true, tableData: [] }) // 模拟异步数据加载 setTimeout(() => { state.tableData = [ { name: '张三', age: 20, address: '北京市海淀区' }, { name: '李四', age: 25, address: '上海市浦东新区' }, { name: '王五', age: 30, address: '广州市天河区' }, { name: '赵六', age: 35, address: '深圳市南山区' }, { name: '钱七', age: 40, address: '成都市武侯区' } ] state.loading = false }, 2000) return { ...state } } } </script> ``` 希望这个回答能够解决您的问题!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值