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/