Js跑马灯效果 && 在Vue中使用
DEMO:
<!DOCTYPE html>
<html>
<head>
<title>滚动播报</title>
<meta charset="UTF-8">
<style>
.content {
height: 60px;
background-color: #2c2c34;
overflow: hidden;
}
.content ul {
white-space: nowrap;
}
.content ul li {
position: relative;
font-size: 14px;
vertical-align: middle;
line-height: 35px;
padding: 0 8px;
white-space: nowrap;
display: inline-block;
color: #fff
}
#scrollBox {
overflow: hidden;
}
#scrollBox .scrollWrap {
width: 500%
}
.scrollCont {
float: left;
}
</style>
</head>
<body>
<div class="content">
<ul>
<div id="scrollBox">
<div class="scrollWrap">
<div id="scrollContOne" class="scrollCont">
<li>我是第一条数据</li>
<li>我是第二条数据</li>
<li>我是第三条数据</li>
<li>我是第四条数据</li>
<li>我是第五条数据</li>
<li>我是第六条数据</li>
<li>我是第七条数据</li>
<li>我是第八条数据</li>
</div>
<div id="scrollContTwo" class="scrollCont"></div>
</div>
</div>
</ul>
</div>
<script>
let speed = 40
let scrollBox = document.getElementById("scrollBox");
let scrollContOne = document.getElementById("scrollContOne");
let scrollContTwo = document.getElementById("scrollContTwo");
scrollContTwo.innerHTML = scrollContOne.innerHTML;
scrollBox.scrollLeft = 0;
function scrollRadio() {
if (scrollBox.scrollLeft >= scrollContTwo.offsetWidth) {
scrollBox.scrollLeft -= scrollContOne.offsetWidth
} else {
scrollBox.scrollLeft += 2;
}
}
let MyScrollRadio = setInterval(scrollRadio, speed);
scrollBox.onmouseover = function() {
clearInterval(MyScrollRadio)
};
scrollBox.onmouseout = function() {
MyScrollRadio = setInterval(scrollRadio, speed)
};
</script>
</body>
</html>
在Vue中使用:
<template>
<div class="content">
<ul>
<div id="scrollBox">
<div class="scrollWrap">
<div id="scrollContOne" class="scrollCont">
<li v-for="item in items">
<a href="{{item}" target="_blank"></a>
</li>
</div>
<div id="scrollContTwo" class="scrollCont"></div>
</div>
</div>
</ul>
</div>
</template>
<style scoped>
.content {
height: 60px;
background-color: #2c2c34;
overflow: hidden;
}
.content ul {
white-space: nowrap;
}
.content ul li {
position: relative;
font-size: 14px;
vertical-align: middle;
line-height: 35px;
padding: 0 8px;
white-space: nowrap;
display: inline-block;
}
.content ul li a {
text-decoration: none;
color:#fff;
}
#scrollBox {
overflow: hidden;
margin-left: 36px;
}
#scrollBox .scrollWrap {
width: 500%
}
.scrollCont {
float: left;
}
</style>
<script>
export default {
data: () => ({
canScrollTimer: 0
}),
vuex: {
getters: {
scrollLists: state => state.scrollLists
}
},
watch:{
scrollLists:{
deep:true,
handler(v,ov){
if(v.length){
this.run();
}
}
}
},
methods: {
run() {
let speed = 40;
let scrollBox = document.getElementById("scrollBox");
let scrollContOne = document.getElementById("scrollContOne");
let scrollContTwo = document.getElementById("scrollContTwo");
scrollContTwo.innerHTML = scrollContOne.innerHTML;
scrollBox.scrollLeft = 0;
function scrollRadio() {
if (scrollBox.scrollLeft >= scrollContTwo.offsetWidth) {
scrollBox.scrollLeft -= scrollContOne.offsetWidth
} else {
scrollBox.scrollLeft += 2;
}
}
let MyScrollRadio = setInterval(scrollRadio, speed);
scrollBox.onmouseover = function() {
clearInterval(MyScrollRadio)
};
scrollBox.onmouseout = function() {
MyScrollRadio = setInterval(scrollRadio, speed)
};
}
},
ready() {
//接口调用
}
}
</script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义