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

一、背景:可视化大屏通常需要用到自动滚动的效果,本文主要采用的是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>
相关推荐
风之舞_yjf3 分钟前
Vue基础(26)_单文件组件
前端·vue.js
weixin_422201304 分钟前
Element Plus中el-tree组件默认选中第一个节点的实现方法
前端·javascript·vue.js
css趣多多7 分钟前
组件没有原生事件
前端·javascript·vue.js
小小弯_Shelby9 分钟前
el-form表单简洁有效地解决新增与查看详情共用一个页面问题,控制el-form的disabled设置和修改样式
前端·vue.js·elementui
json{shen:"jing"}31 分钟前
16_Vue引入路由配置 17.路由传递参数
前端·javascript·vue.js
奔跑的web.9 小时前
TypeScript 装饰器入门核心用法
前端·javascript·vue.js·typescript
pas13610 小时前
37-mini-vue 解析插值
前端·javascript·vue.js
十里-11 小时前
vue.js 2前端开发的项目通过electron打包成exe
前端·vue.js·electron
console.log('npc')12 小时前
vue2 使用高德接口查询天气
前端·vue.js
天天向上102412 小时前
vue3 实现el-table 部分行不让勾选
前端·javascript·vue.js