CSS 文本选取框问题
CSS text marquee issues
一位客户请求了选取框样式的滚动文本横幅(是的)
尝试过使用 css 动画,但有一些我无法解决的怪癖。
https://jsfiddle.net/u2f6qdya/
问题是列表元素刚好 'knocked' 超出行并堆叠到最后一个。 parent 是绝对定位的,所以不确定为什么会这样。
下一个问题是关键帧,我希望项目从左侧开始,但在它们完成屏幕右侧的动画之前再次开始进入并滚动。
CSS 的代码:
.sliding-marquee {
width: 100%;
height: 44px;
background-color: #000;
opacity: 0.6;
color: white;
line-height: 44px;
margin: 0 auto;
position: relative;
overflow: hidden;
margin-top: 10px;
}
.sliding-marquee ul {
left: 0;
top: 0;
position: absolute;
animation: marquee 20s linear infinite;
}
.sliding-marquee ul li {
display: inline-block;
font-size: 20px;
text-transform: uppercase;
}
.sliding-marquee ul li i {
margin-right: 20px;
}
.sliding-marquee ul li + li {
margin-left: 40px;
}
@keyframes marquee {
0% { left: -100% }
100% { left: 100% }
}
和标记:
<div class="sliding-marquee">
<ul>
<li>TEXT 1</li>
<li>LONGER TEXT 2</li>
<li>EVEN LONGER TEXT 3</li>
</ul>
</div>
这里有一个fiddle纯CSS。希望对你有帮助。
https://jsfiddle.net/d946h29g/
我的想法是使用 Chrome 元素检查器获取文本宽度。
@keyframes marquee {
0% {
left: -556px;
}
100% {
left: 100%;
}
}
问题 #1:仅添加 position: absolute;
是不够的,您还需要 width: 100%;
或类似的东西添加到 .sliding-marquee ul
。如果您不将 width
设置为 100%
,则默认值为 right: 0;
,这意味着您的 width
将从 100%
变为 0%
当您的动画正在播放时。
修改版本,修复问题#1:https://jsfiddle.net/wtm_w/0hp144r0/
一位客户请求了选取框样式的滚动文本横幅(是的)
尝试过使用 css 动画,但有一些我无法解决的怪癖。
https://jsfiddle.net/u2f6qdya/
问题是列表元素刚好 'knocked' 超出行并堆叠到最后一个。 parent 是绝对定位的,所以不确定为什么会这样。
下一个问题是关键帧,我希望项目从左侧开始,但在它们完成屏幕右侧的动画之前再次开始进入并滚动。
CSS 的代码:
.sliding-marquee {
width: 100%;
height: 44px;
background-color: #000;
opacity: 0.6;
color: white;
line-height: 44px;
margin: 0 auto;
position: relative;
overflow: hidden;
margin-top: 10px;
}
.sliding-marquee ul {
left: 0;
top: 0;
position: absolute;
animation: marquee 20s linear infinite;
}
.sliding-marquee ul li {
display: inline-block;
font-size: 20px;
text-transform: uppercase;
}
.sliding-marquee ul li i {
margin-right: 20px;
}
.sliding-marquee ul li + li {
margin-left: 40px;
}
@keyframes marquee {
0% { left: -100% }
100% { left: 100% }
}
和标记:
<div class="sliding-marquee">
<ul>
<li>TEXT 1</li>
<li>LONGER TEXT 2</li>
<li>EVEN LONGER TEXT 3</li>
</ul>
</div>
这里有一个fiddle纯CSS。希望对你有帮助。
https://jsfiddle.net/d946h29g/
我的想法是使用 Chrome 元素检查器获取文本宽度。
@keyframes marquee {
0% {
left: -556px;
}
100% {
left: 100%;
}
}
问题 #1:仅添加 position: absolute;
是不够的,您还需要 width: 100%;
或类似的东西添加到 .sliding-marquee ul
。如果您不将 width
设置为 100%
,则默认值为 right: 0;
,这意味着您的 width
将从 100%
变为 0%
当您的动画正在播放时。
修改版本,修复问题#1:https://jsfiddle.net/wtm_w/0hp144r0/