可视化大屏-实现自动滚动

一、背景:可视化大屏通常需要用到自动滚动的效果,本文主要采用的是vue-seamless-scroll 组件来实现(可参考官方文档

二、实现效果:

自动滚动

三、代码实现:

解题思路:

1.先安装依赖包

复制代码
npm install vue-seamless-scroll --save
或
yarn add vue-seamless-scroll
或
<script src="vue-seamless-scroll.min.js"></script>

2.完整源码实现如下:

复制代码
<template>
  <div class="mb-1" v-if="props.title">
    <span class="eq-blue-button">{{ props.title }}</span>
  </div>
  <vue3-seamless-scroll
  class="scroll"
  :class="heightClass"
  :list="list" 
  :hover="scrollOption.hover"
  :step="scrollOption.setp"
  :direction="scrollOption.direction"
  :limitScrollNum="scrollOption.limitScrollNum"
  >
  <!-- <slot name="slotScroll" :list="list"></slot> 注:如果想要封装成组件可以使用插槽方式 -->
  <!-- 下面代码为具体业务的页面显示代码-->
  <div class="eq-list" v-for="(item, index) in list" :key="index">
    <div class="eq-tr">{{ item.name }}</div>
    <div
      class="eq-tr2 flex" :class="[isShowUnit? 'justify-between': 'justify-center']"
      :style="{
        color: textColor,
        'font-Weight': props.fontWeight,
        'font-size': props.fontSize,
      }"
      >
      <span>{{ item.value }}</span>
      <span>{{ item.unit }}</span>
    </div>
  </div>
  </vue3-seamless-scroll>
</template>
<script lang="ts" setup>
import { ref,computed } from 'vue';
import { Vue3SeamlessScroll } from 'vue3-seamless-scroll';
const props = defineProps({
  list: {  //数据源  自动滚动 必传 
    type: Array,
    default: () => [],
  },
  scrollOptions: {  // 滚动的配置 比如 滚动方向、滚动达到什么数量开始滚动等
    type: Object,
    default: () => ({}),
  },
   heightClass: { // 滚动的高度 可以自己写 比如换成 .名称{height: '对应的高度'}
    type: String,
    default: "heightMidel"
  },
  title: {
    type: String,
    default: '',
  },
  textColor: {
    type: String,
    default: '#3cc094',
  },
  fontSize: {
    type: String,
    default: '',
  },
  fontWeight: {
    type: String,
    default: '500',
  },
  key: {
    type: String,
    default: '0',
  },
  isShowUnit: {
    type: Boolean,
    default: false,
  }
});
const scrollOption = ref({
  hover: true,  // 鼠标经过触发的事件 默认是true
  setp: 0.3, // 数值越大速度滚动越快
  limitScrollNum: 8,  // 开始无缝滚动的数据量 默认5
  hoverStop: true, // 是否开启鼠标悬停stop
  direction: 'up', // down向下 up向上 left 向左 right向右
  openWatch: true, // 开启数据实时监控刷新dom
  singleHeight: 10, //单步运动停止的高度(默认值0是无缝不停止的滚动)
  ...props.scrollOptions
})
</script>
<style lang="less" scoped>
.scroll {
  overflow: hidden;
}
.heightMidel {
  height: 36vh;
}
.heightLarge {
  height: 51vh;
}
.eq-box {
  color: #fff;
  margin: 0.6rem 0.3rem;
}
.eq-border-box {
  border: 1px solid #135daf;
  padding-right: 4px;
}
.eq-center {
  margin: 0px 5px;
  border: 1px solid #135daf;
}
.eq-blue-button {
  background: #2047b8;
  padding: 4px 16px;
  font-size: 0.8rem;
  font-weight: 500;
}
.eq-list {
  display: flex;
  border: 1px solid #1857f133;
  width: 100%;
}
.eq-tr {
  width: 60%;
  padding: 5px 8px;
  border-right: 1px solid #1857f133;
  font-size: 0.8rem;
  text-align: center;
}
.eq-tr2 {
  width: 40%;
  padding: 5px 8px;
  font-size: 0.8rem;
}
.text-green {
  color: #3de5ad;
}
.border-left {
  border-left: 1px solid #1857f133;
}

</style>
相关推荐
无人生还21 分钟前
从 Vue3 到 React · 快速上手系列第 5 篇:事件处理与表单(受控组件 vs v-model)
前端·vue.js·react.js
乌夷28 分钟前
vue知识点
前端·javascript·vue.js
daols881 小时前
vue vxe-context-menu 通用右键菜单组件使用
前端·javascript·vue.js·vxeui
腻害兔2 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:MES 制造执行模块,一个被严重低估的「工业级 ERP 核心」
vue.js·产品经理·制造
勇往直前plus11 小时前
Vue3(篇一) 核心概念——响应式模板语法与组件基础
前端·javascript·vue.js
咩咩啃树皮11 小时前
第43篇:Vue3计算属性(computed)完全精讲——缓存机制、依赖计算、业务最优解
前端·vue.js·缓存
郝亚军16 小时前
webstorm如何创建vue 3.js
javascript·vue.js·webstorm
用户831348593069818 小时前
Cesium 实现行政区内部遮罩
vue.js·webgl·cesium
卤蛋fg619 小时前
vxe-table 自定义复制粘贴逻辑:精确控制单元格数据转换
vue.js
张人玉21 小时前
基于 Vue 3 + ECharts + Express + SQLite 构建的新能源汽车销量数据分析与可视化平台——新能源汽车销量数据分析系统
数据库·vue.js·sqlite·echarts