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

一、背景:可视化大屏通常需要用到自动滚动的效果,本文主要采用的是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>
相关推荐
老前端的功夫2 小时前
Vue 3 vs Vue 2 深度解析:从架构革新到开发体验全面升级
前端·vue.js·架构
狗哥哥2 小时前
Vue 3 动态菜单渲染优化实战:从白屏到“零延迟”体验
前端·vue.js
青青很轻_2 小时前
Vue自定义拖拽指令架构解析:从零到一实现元素自由拖拽
前端·javascript·vue.js
蜗牛攻城狮3 小时前
Vue 中 `scoped` 样式的实现原理详解
前端·javascript·vue.js
q_19132846953 小时前
基于SpringBoot2+Vue2的行业知识答题考试系统
java·vue.js·spring boot·mysql·毕业设计·计算机毕业设计·演示文稿
方安乐4 小时前
vue3 el-select懒加载以及自定义指令
javascript·vue.js·elementui
老华带你飞5 小时前
二手商城|基于springboot 二手商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring
老华带你飞5 小时前
酒店预约|基于springboot 酒店预约系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring
代码续发5 小时前
自定义指令
javascript·vue.js·ecmascript
Irene19916 小时前
Vue 3 项目创建方式对比(npm create vue@latest -- --typescript --eslint --prettier 自带格式化)
vue.js