效果

实现思路


在vue中如何复制一份列表出来呢且不能丢失绑定的事件,很简单使用slot插槽,使用两个插槽我们就拥有了两个列表

<div class="listScroll" ref="box"><slot></slot><slot></slot></div>

组件完整代码

<template><div class="listScroll" ref="box"><slot></slot><slot></slot></div>
</template><script>
export default {name: "listScroll",created() {},mounted() {//在盒子内容高度小于可视高度时不滚动if (this.boxHeight < this.ele0.clientHeight) {this.start(this.height);this.setEvet();} else {this.isScroll = false;}},props: {speed: {default: 1,type: Number,},},computed: {//第一个slotele0() {return this.$refs.box.children[0];},//第二个slotele1() {return this.$refs.box.children[1];},//盒子的可视高度boxHeight() {return this.$refs.box.clientHeight;},},data() {return {height: 0,isScroll: true,};},methods: {//鼠标移入停止滚动 移出继续滚动setEvet() {this.$refs.box.onmouseenter = () => {this.isScroll = false;// this.height = 0;};this.$refs.box.onmouseleave = () => {this.isScroll = true;this.$nextTick(() => {this.start(this.height);});};},//滚动方法start(height) {this.ele0.style = `transform:translateY(-${height}px);`;this.ele1.style = `height:${this.boxHeight}px;transform:translateY(-${height}px);overflow: hidden;`;if (height >= this.ele0.clientHeight) {this.height = 0;} else {this.height += this.speed;}if (!this.isScroll) return;window.requestAnimationFrame(() => {this.start(this.height);});},},
};
</script><style lang="less" scoped>
.listScroll {overflow: hidden;
}
.hover {overflow-y: auto;
}
.hide {display: none;
}
</style>

使用

<template><div class="scroll"><list-scroll class="box" :speed="1"><div class="list"><div class="item" v-for="item in list" :key="item.xh"><span>{{ item.xh }}</span><span>{{ item.label }}</span></div></div></list-scroll></div>
</template><script>
import ListScroll from "@/components/listScroll";
export default {name: "scroll",components: { ListScroll },data() {return {list: new Array(10).fill(1).map((s, i) => ({ xh: i + 1, label: "hello wrold" })),};},
};
</script><style lang="less" scoped>
.box {height: 300px;
}
.list {padding: 0 10px;width: 300px;.item {display: flex;justify-content: space-between;padding: 5px 0;cursor: pointer;&:hover {background-color: #95a5a6;}}
}
</style>

至此一个简单的无缝滚动就完成了(vue2和vue3通用)

vue简单实现无缝滚动相关推荐

  1. Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理

    Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理 目录 Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事 ...

  2. vue简单的数字滚动动画

    vue简单的数字滚动,使用transform:translateY()来实现滚动,简陋且粗暴 效果 代码 <div><div class="record"> ...

  3. vue 自定义marquee无缝滚动组件

    今天介绍一下,上下,左右无缝滚动的公告栏信息组件的开发. 首先上效果: 看起来有点卡顿,实际上还是挺顺畅的... 代码: 左右滚动的组件:marqueeX <template><di ...

  4. vue 上实现无缝滚动播放文字系统公告

    首先实现效果,当时的需求做的系统公告框设定一个宽度,超宽滚动播放,没超宽则静态展示, 有了需求,想了下实现原理,最开始打算js更改字体内容的方式,但是想了下感觉会有点麻烦,想起之前做了表格的左侧边固定 ...

  5. vue 自定义marquee无缝滚动组件

    首先上效果: 看起来有点卡顿,实际上还是挺顺畅的... 代码: 左右滚动的组件:marqueeX <template><div class="my-outbox" ...

  6. js php滚动图代码,JavaScript_JS实现的N多简单无缝滚动代码(包含图文效果),本文实例讲述了JS实现的N多简 - phpStudy...

    JS实现的N多简单无缝滚动代码(包含图文效果) 本文实例讲述了JS实现的N多简单无缝滚动代码.分享给大家供大家参考,具体如下: 实现原理很简单,注册事件之后,立即将元素的innerHTML累加一次. ...

  7. vue实现轮播图(跑马灯、无缝滚动、无限切换效果)

    Vue简简单单实现无缝滚动轮播图效果,不依赖任何第三方插件或组件,复制粘贴开箱即用,简简单单,干净卫生 主页里还有淡入淡出轮播图,地址如下: https://blog.csdn.net/m0_5922 ...

  8. JS——offsetWidth与offsetLeft用法之无缝滚动

    知识讲解: (1)offsetWidth是什么? 答:它可以获取物体宽度的数值:offsetWidth实际获取的是盒模型(width+border + padding)的宽度. 如图: (2)offs ...

  9. 【原生js】详解轮播图之无缝滚动

    前言:轮播图,是网站首页中最常见的一种图片切换特效,作为前端开发者,我相信很多开发者都直接调用了JQuery中的封装好的方法实现图片轮播,省事简单.所以我今天想介绍一下原生js代码实现的图片轮播. 结 ...

最新文章

  1. 牛客多校8 - Interesting Computer Game(并查集)
  2. 实战|简单绕过waf拿下赌博网站
  3. idea在分屏拖不回来_朋友圈赏花晒照新玩法,宫格分屏视频!
  4. 请问染色浴比对染色性能有影响吗?浴比对染色的哪些性能有影响?染色亲和力测定有哪些实际应用意义
  5. 服务器日志监控系统怎么解决,服务器日志监控系统
  6. 游戏玩家的图形显示设置指南(12)(The Gamer's Graphics Display Settings Guide)
  7. 如何对CAD中的曲线进行测量?
  8. 5gwifi信道哪个最好,wifi信道在哪里设置如何检测哪个路由器信道最快
  9. 知识产权(笔记 1-3章)
  10. 自己的IP地址可以被随便查到吗?
  11. (c#)int类型和枚举类型的相互转换
  12. cocoscreator html5,Cocos Creator H5支持剪贴板复制功能
  13. 2022/10/10-10/15周报
  14. qlabel 里内容字体颜色位置不同样式设置_OR视觉丨这4款应用就是我手机里必备的修图APP...
  15. 【PHPWord】PHPWord生成图表-柱形图 | 设置数值类别展示、展示多组数据
  16. CHAPTER 2 目录及文件
  17. 11条职场潜规则助你爱上工作
  18. Ubuntu实用工具/软件汇总
  19. mysql where 位子,mysql中 地里位置搜索 (抄)
  20. grafana bar gauge使用问题

热门文章

  1. 定积分求旋转体的体积
  2. 英语流利说效率计算机制,英语流利说 懂你英语 10天效率从60到90经验
  3. 云原生架构下的微服务选型和演进
  4. RabbitMQ之消息模式简单易懂,超详细分享
  5. P_sensor 距离感应器 阈值如何设置
  6. C语言练习-day29
  7. 大数据培训技术使用spark对phoenix的读写
  8. 仿菁优网首页动画效果
  9. 学习-编写判断一个正整数是否为素数的函数
  10. ArcGis配色心得