js实现文字超出范围滚动,为什么我这个滚动了一会就不动了,内容多点又不会了
该回答引用GPTᴼᴾᴱᴺᴬᴵ
你的代码有几个问题:
以下是已经修改过的代码:
<div id="scroll_div" class="fl">
<div id="scroll_begin">
<span class="pad right">刘一</span>
<span class="pad right">陈-</span>
<span class="pad right">张三</span>
<span class="pad right">李四</span>
<span class="pad right">王五</span>
<span class="pad right">赵六</span>
<span class="pad right">孙七</span>
<span class="pad right">周八</span>
<span class="pad right">吴九</span>
<span class="pad right">郑十</span>
</div>
<div id="scroll_end"></div>
</div>
#scroll_div {
height: 100%;
overflow: hidden;
white-space: nowrap;
display: flex;
align-items: center;
}
#scroll_begin, #scroll_end {
display: inline;
}
.pad.right {
padding-right: 2em;
}
function scrollText() {
var speed = 20;
var MyMar = null;
var scroll_begin = document.getElementById("scroll_begin");
var scroll_end = document.getElementById("scroll_end");
var scroll_div = document.getElementById("scroll_div");
scroll_end.innerHTML = scroll_begin.innerHTML;
function Marquee() {
if (scroll_end.offsetWidth - scroll_div.scrollLeft <= 0) {
scroll_div.scrollLeft -= scroll_begin.offsetWidth;
} else {
scroll_div.scrollLeft++;
}
}
MyMar = setInterval(Marquee, speed);
scroll_div.onmousedown = function () {
clearInterval(MyMar);
};
scroll_div.onmouseover = function () {
clearInterval(MyMar);
};
scroll_div.onmouseout = function () {
MyMar = setInterval(Marquee, speed);
};
}
scrollText();
这个代码会根据容器的宽度自适应,所以你不需要设置容器的宽度。注意在 HTML 中使用正确的 ID 名称来调用 scrollText() 函数。