【发布时间】:2020-10-14 21:40:22
【问题描述】:
我想让 Text 在循环中从左到右运行。这是我尝试的小提琴: https://jsfiddle.net/9Lruxym8/33/
我从 css @keyframes 开始,但如果我希望文本无缝运行,我认为我需要文本本身的宽度。我的想法是写下文本两次,一旦带有文本的 div 运行到一半,动画就会重新开始。
@keyframes 不起作用后,我尝试了 jQuery 动画。它确实工作了一些,但运行并不顺利。现在我想通过过渡来做到这一点。我认为间隔和超时的组合可以解决问题,但我仍然无法正常工作 - 现在,我不知道为什么。有人喜欢我吗?
function runText() {
var text_width = $('#runningP').width()/2;
console.log(text_width)
setInterval(function(){
console.log("interval");
$('.text').css({'transition':'margin-left 5s'});
$('.text').css({'margin-left':'-' + text_width + 'px'});
moveBack();
}, 3000);
function moveBack() {
console.log("timeout")
setTimeout(function(){
$('.text').css({'transition':'none'});
$('.text').css({'margin-left': 0});
}, 3000);
}
}
runText();
【问题讨论】:
-
这能回答你的问题吗? How can I create a marquee effect?
-
如果您坚持使用jQuery解决方案,请参阅jQuery-Marquee插件。
-
感谢您的回复!问题是我不想要任何空白。文本通过后应立即重新开始。因此我需要处理文本块的宽度。如果我没记错的话,如果没有 javascript/jquery,我将无法做到这一点。我去看看插件!
-
插件应该能够使用
duplicated属性来做到这一点。
标签: javascript jquery settimeout setinterval