Vue3 列表自动滚动播放 vue3-seamless-scroll


父组件data

javascript 复制代码
<script setup>
  import { getCurrentInstance, onMounted } from "vue";
  onMounted(() => {
   let data = [
        {
      "id": 25,
      "content": "设备离线",
      "is_recovery": 1,
      "trigger_time": "2024.04.19 16:48",
      "recovery_name": "已恢复"
    },
    {
      "id": 24,
      "content": "设备离线",
      "is_recovery": 1,
      "trigger_time": "2024.04.19 16:48",
      "recovery_name": "已恢复"
    }
  ]

  const { proxy } = getCurrentInstance();
  proxy.$refs["dsRealWarn"].initData(data); 
});

</script>

子组件 vue3-seamless-scroll 常用说明如下:

limitScrollNum 多少条才开始滚动

hover-stop="true" 鼠标悬浮暂停滚动

step 滚动的速度

滚动的列表所在容器必须设置样式 overflow: hidden;

javascript 复制代码
npm install vue3-seamless-scroll --save
javascript 复制代码
<template>
  <div class="warningInfo">
    <HomeTitle title="报警信息"></HomeTitle>
    <div class="content" v-if="items?.length > 0">
      <vue3-seamless-scroll hover-stop="true" hover="true" step="0.2" limitScrollNum="4" :list="items" class="scroll"
        v-if="items?.length > 0">
        <div class="item" v-for="item in items" :key="item.id">
          <div>
            <div class="top">
              <span :class="[
                item.is_recovery === 0 ? 'warningBg' : 'normalBg',
                'WaterMonitor',
              ]">{{ item.recovery_name }}</span>
              <span class="time">{{ item.trigger_time }}</span>
            </div>
            <div :class="[
              item.is_recovery === 0 ? 'warningRemark' : 'normalRemark',
              'remark',
            ]">{{ item.content }}</div>
          </div>
        </div>
      </vue3-seamless-scroll>
    </div>
    <HomeNoData class="scroll" :isBlackText="true" v-else />
  </div>
</template>
<script setup>
import { ref, reactive, getCurrentInstance } from "vue";
import HomeTitle from "./DsHomeTitle.vue";
import HomeNoData from "@/components/homeNoData/index.vue";
import { Vue3SeamlessScroll } from "vue3-seamless-scroll";

const items = ref([]);

const initData = (data) => {
  items.value = data;
};


defineExpose({ initData });
</script>
<style lang="scss" scoped>
.warningInfo {
  width: 100%;
  height: calc((100vh - 160px) / 3 - 10px);
  background: #f0f9ff;
  border: 1px solid #fff;
  border-radius: 6px;
  margin-top: 10px;

  .content {
    width: 100%;
    height: calc((100vh - 160px) / 3 - 10px - 60px);
    overflow-y: auto;

    .item {
      width: 100%;
      // padding-left: 24px;
      padding: 0 12px;
      margin-top: 16px;

      .top {
        width: 100%;
        height: 21px;
      }

      .WaterMonitor {
        border-radius: 4px;
        font-size: 12px;
        margin-right: 6px;
        color: #fff;
        padding: 1px 4px;
      }

      .warningBg {
        background: linear-gradient(180.00deg, #b23535 0%, #d33232 100%);
      }

      .normalBg {
        background: linear-gradient(180.00deg, #00af75 0%, #008d5e 100%);
      }

      .time {
        font-size: 13px;
        color: #295574;
      }

      .remark {
        width: 100%;
        height: 25px;
        line-height: 25px;
        margin-top: 10px;
        font-weight: 500;
        font-size: 15px;
        text-align: left;
        color: #003558;
        padding: 0 8px;
      }

      .warningRemark {
        background: linear-gradient(260.36deg, #f0f9ff 0%, #ebd0d0 100%);
      }

      .normalRemark {
        background: linear-gradient(260.36deg, #f0f9ff 0%, #c9ecffe6 100%)
      }
    }
  }
}

.scroll {
  width: 100%;
  height: calc((100vh - 160px) / 3 - 10px - 60px);
  box-sizing: border-box;
  overflow: hidden;
}
</style>

参考管网
https://www.npmjs.com/package/vue3-seamless-scroll

相关推荐
FIRE28 分钟前
uniapp小程序分享使用canvas自定义绘制 vue3
前端·小程序·uni-app
四喜花露水28 分钟前
vue elementui el-dropdown-item设置@click无效的解决方案
前端·vue.js·elementui
jokerest1231 小时前
web——sqliabs靶场——第五关——报错注入和布尔盲注
前端
谢尔登1 小时前
前端开发调试之 PC 端调试
开发语言·前端
每天吃饭的羊1 小时前
在循环中只set一次
开发语言·前端·javascript
_默_4 小时前
adminPage-vue3依赖DetailsModule版本说明:V1.2.1——1) - 新增span与labelSpan属性
前端·javascript·vue.js·npm·开源
也无晴也无风雨6 小时前
深入剖析输入URL按下回车,浏览器做了什么
前端·后端·计算机网络
Martin -Tang7 小时前
Vue 3 中,ref 和 reactive的区别
前端·javascript·vue.js
FakeOccupational8 小时前
nodejs 020: React语法规则 props和state
前端·javascript·react.js
放逐者-保持本心,方可放逐8 小时前
react 组件应用
开发语言·前端·javascript·react.js·前端框架