【发布时间】:2016-10-09 09:01:31
【问题描述】:
我想没有什么比这更好的解释了:
我几乎用纯 CSS 完成了我想要的,但是......
- 我必须手动设置每个单词的“位置”
- 如果再加一个字,我得重新计算一遍
- 我无法设置每个单词的 1 秒时间,只能设置动画总时间
- 响应?就当我重新计算一切
代码是一个带有overflow: hidden 的div 和一个带有negative margin-top(和动画)的孩子。
现场演示:
body {
font-size: 2em;
font-family: sans-serif;
}
.animation {
vertical-align: sub;
height: 1em;
overflow: hidden;
display: inline-block;
line-height: 2em;
}
ul {
animation: animation 10s infinite;
padding: 0;
margin-top: -0.55em;
list-style: none;
}
@keyframes animation {
0% { margin-top: -0.55em }
12.5% { margin-top: -2.54em }
25% { margin-top: -4.55em }
37.5% { margin-top: -6.55em }
50% { margin-top: -8.5em }
62.5% { margin-top: -6.55em }
75% { margin-top: -4.55em }
87.5% { margin-top: -2.54em }
100% { margin-top: -0.55em }
}
Lorem ipsum dolor sit
<div class="animation">
<ul>
<li>golfish</li>
<li>dog</li>
<li>cat</li>
<li>hamster</li>
<li>fox</li>
</ul>
</div>
, consectetur adipiscing elit.
那么...
我认为我无法解决我的问题,因为它们是 CSS 限制,所以... 可以用 jQuery 来解决这个问题吗?
【问题讨论】:
-
这可以通过 jQuery 实现。只需将第一项附加到 (inline-block) 列表即可进行无限循环。之后可以添加动画。
-
@JoostS 这种方法的问题在于,几乎在每个屏幕上,(真实)文本都有 2 行,因此这会导致“动画错误”。我无法准确解释,但结果并不顺利。
-
我知道您可以在
href中添加一个元素,它会使其聚焦于点击...这有帮助吗? -
我真的无法理解那些对可行的解决方案投反对票并且不发表评论的人。真的很难过。可能它一定只是一个卑鄙的傻瓜。 :)
标签: javascript jquery html css animation