1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > html连续跑马灯无缝连接 无缝跑马灯实现(!marquee)

html连续跑马灯无缝连接 无缝跑马灯实现(!marquee)

时间:2022-09-26 08:30:55

相关推荐

html连续跑马灯无缝连接 无缝跑马灯实现(!marquee)

一般我们需要实现一个简单的跑马灯,我们可以使用标签,但是会存在一个问题,轮播的时候并不是连续的,循环播放的时候中间有段时间会出现白色空白。

image

那么有没有什么办法让循环播放的时候中途不出现空白呢?具体实现代码如下:

跑马灯

.wrapper{

overflow: hidden;

white-space: nowrap;

width: 500px;

border: solid 1px #000;

}

.content{

display: inline-block;

}

我是内容,可以是文字,也可以是图片,都行,但是注意此div中的内容加起来需要比滚动区域长

我是内容,可以是文字,也可以是图片,都行,但是注意此div中的内容加起来需要比滚动区域长

//定时器id

var timer;

//页面加载完成之后执行

window.οnlοad= init()

function init(){

console.log(document.getElementById("content").clientWidth)

var wrapper = document.getElementById("wrapper");

var content = document.getElementById("content");

var contentWidth = content.clientWidth;

timer = window.setInterval(function () {

wrapper.scrollLeft++;

console.log(wrapper.scrollLeft)

if (wrapper.scrollLeft >= contentWidth) {

wrapper.scrollLeft = 0;

}

}, 20)

}

//停止滚动

function stopQu(){

window.clearInterval(timer);

}

//重新滚动

function startQu(){

init();

}

注意:滚动区域的内容需要比滚动区域的大小大

以上是普通的html文件的写法,那如果是vue组件如何编写呢?在vue里面实现这个会有一个有关$refs的坑,巨坑!!!,下面我们来写一下在vue里的实现,跳过这个坑。(ref相关的内容请自行查看vue官网)

我是内容,可以是文字,也可以是图片,都行,但是注意此div中的内容加起来需要比滚动区域长

我是内容,可以是文字,也可以是图片,都行,但是注意此div中的内容加起来需要比滚动区域长

export default {

name: "marquee",

data(){

return {

timer: ''

}

},

mounted() {

/**

* 必须这样写!!!

* 原因是在mounted钩子函数中 console.log(this.$refs.wrapper) 结果为undifined,无法使用this.$refs

*/

setTimeout(() => {

this.marquee()

}, 1000)

},

methods:{

marquee(){

let wrapper = this.$refs.wrapper;

let content = this.$refs.content;

let contentWidth = content.clientWidth;

this.timer = window.setInterval(function () {

wrapper.scrollLeft++;

if (wrapper.scrollLeft >= contentWidth) {

wrapper.scrollLeft = 0;

}

}, 20)

}

//停止滚动

stopQu(){

window.clearInterval(timer);

}

//重新滚动

startQu(){

this.marquee();

}

}

}

这个坑是在mouted钩子函数中不能立即去使用this.$refs,所以使用setTimeout()函数停顿一秒后执行,下面是具体的官方介绍,详情请自行查看vue官网。

image.png

image.png

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。