【发布时间】:2020-03-22 18:58:05
【问题描述】:
我正在寻找一种高性能且流畅的解决方案,用于在其内联块框内滚动文本的链接,就像选取框效果一样。
$(document).ready(function() {
function scroll(ele){
var s = $(ele).text().substr(1)+$(ele).text().substr(0,1);
$(ele).text(s);
}
scrollInterval = null;
function startScrolling(e) {
if (!scrollInterval) {
scrollInterval = setInterval(function(){
scroll(e)
},100);
}
}
function stopScrolling(e) {
clearInterval(scrollInterval);
scrollInterval = null;
}
$(".mali").hover(function(){
startScrolling($(this));
});
$(".mali").mouseout(function(){
stopScrolling($(this));
});
$(".mali").mousedown(function(){
stopScrolling($(this));
});
});
.mali {
display: inline-block;
background: black;
color: white;
padding: 10px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Something <a href="#" class="mali">something darkside</a>, Something something complete.
到目前为止,我的解决方案实际上是我在另一个线程的 stackoverlow 上找到的,并尝试使用它。
不过有两个问题。
1.) 由于这基本上是使用间隔来循环单个字母,因此效果不是很平滑。效果是口吃。
有没有人知道如何使这更顺畅?也许在那种情况下根本不使用这种方法,也许使用 CSS 过渡来为文本设置动画?
2.) 有没有人有一个聪明的解决方案来解决我悬停后如何返回到初始状态?我想要悬停效果,但是当将鼠标从链接上移开时,它应该动画回到初始文本状态。
谢谢, 马特
【问题讨论】:
标签: javascript jquery animation scroll marquee