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

vue-封装上下(垂直方向)轮播

需求:没有找到特别好的上下轮播插件-所以自己写了一个简单的demo

一.上下平滑轮播-移入停止-移出继续轮播

<!--* 消息滚动
-->
<template><div class="news"><div id="roll" class="InfoBox" @mouseover="this.mouseOver" @mouseout="this.mouseOut"><div v-for="item in 5" :key="item" class="item">{{ item }}</div></div></div>
</template><script>
export default {mounted() {var area = document.getElementById("roll");// 多加了一组area.innerHTML += area.innerHTML;this.area = area;setInterval(this.scroll, 50);},data() {return {area: {},stop: false,scrollItemNumber: 0,};},methods: {scroll() {if (!this.stop) {// this.area.scrollHeight / 2 这是滚动所有元素的高度if (this.area.scrollTop >= this.area.scrollHeight / 2) {this.area.scrollTop = 0;} else {this.area.scrollTop++;}}},mouseOver() {this.stop = true;},mouseOut() {this.stop = false;},},
};
</script>
<style lang="scss" scoped>
.news {margin: 20px;height: 300px;background: aqua;text-align: center;.InfoBox {width: 300px;height: 300px;margin: 0 auto;overflow: hidden;background: rgb(94, 163, 233);.item {margin-top: 30px;padding: 10px;background: rgb(54, 230, 83);text-align: center;cursor: pointer;}}
}
</style>

二.加了控制条件的上下轮播-我只是写了个demo(我这个控制条件是5s停顿一次 接着轮播)

<!--* 消息滚动
-->
<template><div class="news"><div id="roll" class="InfoBox" @mouseover="this.mouseOver" @mouseout="this.mouseOut"><div v-for="item in 5" :key="item" class="item">{{ item }}</div></div></div>
</template><script>
export default {mounted() {var area = document.getElementById("roll");// 多加了一组area.innerHTML += area.innerHTML;this.area = area;setInterval(this.scroll, 50);},data() {return {area: {},stop: false,scrollItemNumber: 0,};},methods: {scroll() {// 控制什么时间 停顿一下 我用的是 5s停顿一次 这个可以根据自己需求if (this.scrollItemNumber !== 0 && this.scrollItemNumber % 100 === 0) {this.stop = true;setTimeout(() => {this.stop = false;this.scrollItemNumber = 0}, 1000)}if (!this.stop) {this.scrollItemNumber++console.log(this.scrollItemNumber);// this.area.scrollHeight / 2 这是滚动所有元素的高度if (this.area.scrollTop >= this.area.scrollHeight / 2) {this.area.scrollTop = 0;} else {this.area.scrollTop++;}}},mouseOver() {this.stop = true;},mouseOut() {this.stop = false;},},
};
</script>
<style lang="scss" scoped>
.news {margin: 20px;height: 300px;background: aqua;text-align: center;.InfoBox {width: 300px;height: 300px;margin: 0 auto;overflow: hidden;background: rgb(94, 163, 233);.item {margin-top: 30px;padding: 10px;background: rgb(54, 230, 83);text-align: center;cursor: pointer;}}
}
</style>

http://www.lryc.cn/news/351579.html

相关文章:

  • 海外私人IP和原生IP有什么区别,谁更有优势?
  • 主流容器工具对比以及重点推荐学习的企业级工具
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版在线编辑word文件,同时保存数据和文件
  • 个人感觉对Material设计有用的几个网址
  • ubuntu18 安装sudo
  • 【力扣一轮】202.快乐数 1.两数之和
  • Vue小程序项目知识积累(二)
  • RK3588 Android13 预安装自己的apk应用及把这个应用设置为默认桌面
  • NLP(16)--生成式任务
  • 直播回放| 机器人任务挑战赛线上培训资料合集
  • flask Web应用的接口调试
  • 简单易懂的 API 集成测试方法
  • leetcode 239. 滑动窗口最大值、347.前 K 个高频元素
  • npm常用指令
  • 数字孪生技术在管理中有哪些实际应用?
  • LeetCode/NowCoder-链表经典算法OJ练习3
  • 如何理解HTML语义化
  • Solved problem: The number of elements in the character array
  • Flume Channels简介及官方用例
  • 【AI】如何用非Docker方法安装类GPT WebUI
  • 2024年ai知识库:特点、应用与搭建
  • 查询一个字符串在另一个字符串中出现的次数(java)
  • Docker in Docker 原理与实战
  • Rust学习心得
  • K8s deployment 进阶
  • python实现二叉搜索树(AVL树)简单样例
  • Day47 打家劫舍123
  • OceanBase 开源社区新进展|obdiag SIG成立
  • React类组件生命周期详解
  • 智能车竞赛指南:从零到一,驶向自动驾驶的未来