当前位置: 首页 > article >正文

前端滚动组件分享

分享一个前端可视化常用的卡片列表滚动组件,常用于可视化项目左右两侧的卡片列表的滚动。效果如下图所示:

在这里插入图片描述

组件描述
  1. 当鼠标移入滚动区域时,滚动行为停止当鼠标再次离开时,滚动继续
源码展示
<template>
  <div ref="moocBox" class="custom-scroll-content" @mouseout="mouseOut" @mouseover="mouseOver">
    <slot></slot>
  </div>
</template>
<script>
export default {
  name: 'CustomScroll',
  data() {
    return {
      speed: 50,
      myScroll: null
    };
  },
  created() {
  },
  mounted() {
    this.myScroll = setInterval(() => {
      this.scrollUp();
    }, this.speed);
  },
  destroyed() {
    clearInterval(this.myScroll);
    //  removeEventListener("scroll", this.myScroll);
  },
  beforeDestoryed() {
    clearInterval(this.myScroll);
    this.myScroll = null
  },
  methods: {
    /**
     * @description: 滚动
     * @return void 滚动
     */
    scrollUp() {
      this.$refs.moocBox.scrollTop += 1;
      // 判断滚动条是否到底
      if (this.$refs.moocBox.scrollTop + this.$refs.moocBox.clientHeight >= this.$refs.moocBox.scrollHeight) {
        this.$refs.moocBox.scrollTop = 0;
      }
    },
    /**
     * @description: 鼠标滑过暂停滚动
     * @return void 清除定时器,实现暂停
     */
    mouseOver() {
      clearInterval(this.myScroll);
    },
    /**
     * @description: 鼠标移开重新滚动
     * @return void 设定定时器,实现滚动
     */
    mouseOut() {
      this.myScroll = setInterval(() => {
        this.scrollUp();
      }, this.speed);
    },
  }
};
</script>
<style>
.custom-scroll-content {
  height: 100%;
  overflow: auto;
}
</style>

使用指南
<template>
  <div class="home">
    <div class="container__div_height-500">
      <CustomScroll>
        <div class="item__div_height-100" v-for="i in 10" :key="i">{{ i+1 }}</div>
      </CustomScroll>
    </div>
  </div>
</template>
import CustomScroll from '../components/customScroll.vue';

export default {
  name: 'Home',
  components: {
    CustomScroll,
  },
}
</script>
<style>
.home {
  height: 100%;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.container__div_height-500 {
  height: 500px;
  width: 400px;
}
.item__div_height-100 {
  height: 100px;
  width: 100%;
  background-color: pink;
  margin-bottom: 12px;
  cursor: pointer;
}
.item__div_height-100:last-child {
  margin-bottom: 0;
}
::-webkit-scrollbar {
  width: 0!important;
}
</style>
属性说明
属性属性值类型
speed设置滚动速度,默认50Number

http://www.kler.cn/a/232356.html

相关文章:

  • [Admin] Dashboard Filter for Mix Report Types
  • 麒麟系统下docker搭建jenkins
  • 关系型数据库和非关系型数据库详解
  • 鸿蒙next ui安全区域适配(刘海屏、摄像头挖空等)
  • 《FreeRTOS任务基础知识以及任务创建相关函数》
  • Postman接口测试(断言、关联、参数化、输出测试报告)
  • 深入理解Netty及核心组件使用—上
  • 机器学习10-特征缩放
  • 记录下ibus-libpinyin输入法的重新安装
  • three.js 箭头ArrowHelper的实践应用
  • Python第三方库国内下载镜像源地址
  • react中hook封装一个table组件
  • Java项目管理01-Maven基础
  • Mac安装nvm装完项目内node找不到
  • ChatGPT 变懒最新解释!或和系统Prompt太长有关
  • 自然语言学习nlp 六
  • 【flink状态管理(三)】StateBackend的整体设计、StateBackend创建说明
  • 从REPR设计模式看 .NET的新生代类库FastEndpoints的威力
  • 故障诊断 | 一文解决,TCN时间卷积神经网络模型的故障诊断(Matlab)
  • 设计模式理解:单例模式+工厂模式+建设者模式+原型模式
  • 怎么在Springboot启动的时候就启动一个永不停止的线程
  • 20240208作业
  • LeetCode-第28题-找出字符串中第一个匹配项的下标
  • Rust语言入门(第3篇)
  • Go Context -- 管理请求的上下文信息
  • vue3 之 商城项目—一级分类