仿DataV实现轮播表

本文介绍了如何使用原生HTML和CSS实现一个类似DataV的轮播表效果,包括鼠标悬停暂停滚动和动画效果。同时提及了如何将此实现迁移到Vue或React框架中。

原生HTML,仿DataV实现轮播表

  • 更新,鼠标移入暂停滚动,鼠标移出继续滚动。
  • html 实现,可以根据实现思路平移到 vue 或 react.

1 效果

轮播表效果

2 思路

  • 第一行设置高度0,实现隐藏效果
  • 等隐藏动画执行完成后,移除第一行,恢复样式后 append 到最后一行

3 实现代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>轮播表</title>
  <style>
    .wrap {
      position: relative;
      overflow: hidden;
      width: 300px;
      height: 200px;
    }

    .scroll-table {
      width: 100%;
      cursor: pointer;
    }

    .scroll-table .row {
      display: flex;
      justify-content: space-around;
      height: 38px;
      line-height: 38px;
      border-bottom: 1px solid rgba(0, 0, 44, .5);
      overflow: hidden;
      will-change: height;
      transition: height 0.3s ease-in-out;
    }

    .scroll-table .row span {
      flex: 1;
      text-align: center;
    }
  </style>
</head>

<body>
  <div class="wrap">
    <div class="scroll-table"></div>
  </div>
  <script>
    // 装数据
    const table = document.querySelector('.scroll-table');
    for (let i = 0; i < 12; i++) {
      const row = document.createElement('div');
      row.className = 'row'
      for (let j = 0; j < 5; j++) {
        const cell = document.createElement('span');
        cell.innerText = Math.floor(Math.random() * (200 - 1) + 1);
        row.appendChild(cell)
      }
      table.appendChild(row)
    }
    // row0 height 0px; remove row0; append row0
    let interval =null ;
    startScroll()
    table.addEventListener("mouseenter",() => {
      clearInterval(interval)
    });

    table.addEventListener("mouseleave",()=> {
      startScroll()
    });

    function startScroll() {
      interval = setInterval(() => {
      // 1. 第一行设置高度0,隐藏
      let hideRow = table.children[0];
      hideRow.style.height = 0
      hideRow.style.lineHeight = 0
      // 2. 等动画执行完;将第一行删除,恢复高度,移到最后一行
      setTimeout(() => {
        table.removeChild(hideRow)
        hideRow.style.height = '38px';
        hideRow.style.lineHeight = '38px'
        table.appendChild(hideRow)
      }, 300);
    }, 2000);
    }
  </script>
</body>

</html>
### 关于Datav 排名轮播表的使用方法 #### 功能概述 Datav 提供了丰富的组件用于创建动态可视化效果,其中`dv-scroll-board`是一个常用的轮播表格组件。该组件可以展示滚动的数据列表,并支持多种交互方式。 #### 添加移入显示tooltip功能实现思路 为了增强用户体验,在鼠标悬停时显示更多信息可以通过添加tooltip来完成。具体来说,当用户将指针移到某一行上时触发事件并弹出提示框[^1]。 ```javascript // JavaScript部分配置Tooltip逻辑 methods: { handleMouseEnter(index, row){ this.$refs.tooltip.show(row); }, handleMouseLeave(){ this.$refs.tooltip.hide(); } } ``` ```html <!-- HTML模板定义 --> <template> <div> <!-- dv-scroll-board 组件 --> <dv-scroll-board :config="boardConfig" @row-mouseenter="handleMouseEnter" @row-mouseleave="handleMouseLeave"/> <!-- Tooltip组件 --> <el-tooltip ref="tooltip"></el-tooltip> </div> </template> ``` #### 示例代码片段 下面给出一段简单的Vue.js项目中如何集成`dv-scroll-board`以及设置其基本属性的例子: ```javascript export default { data() { return { boardConfig: { header: ['排名', '名称', '分数'], data: [ [1,'张三',90], [2,'李四',87], ... ], index: true, columnWidth: [50, 200, 100], // 设置各列宽度 align: ["center", "left", "right"], // 对齐方式 evenRowBGC: '#f4f4f4', oddRowBGC: '#ebebeb' } }; } }; ``` #### 注意事项 - `dv-scroll-board`内部数据更新可能不会自动响应外部变化,因此如果需要实时刷新视图,则应考虑手动调用相应的方法或监听特定状态的变化。 - 当处理大量数据时要注意性能优化,比如分页加载或者懒加载策略的应用。 #### 结论 通过上述介绍可以看出,利用`dv-scroll-board`构建具有良好互动性的排行榜单并不复杂。只要掌握了基础配置选项及其扩展特性,就能轻松打造出满足需求的效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值