【问题标题】:CSS text marquee issuesCSS 文本框问题
【发布时间】:2016-03-28 20:57:10
【问题描述】:

客户请求了一个选取框样式的滚动文本横幅(是的)

尝试过使用 css 动画,但有一些我无法解决的怪癖。

https://jsfiddle.net/u2f6qdya/

问题在于列表元素只是被“敲出”并堆叠到最后一个。父级是绝对定位的,所以不确定为什么会这样。

下一个问题是关键帧,我希望项目从左侧开始,但在它们完成动画离开屏幕右侧之前再次开始进入并滚动。

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>

【问题讨论】:

  • 您可以将white-space: nowrap 添加到您的ul 元素中以防止包装
  • @DirkPennings 不知道,看起来已经好多了。
  • 只是观察;在西方语言中从右到左滚动文本会更有意义。阅读滚动方式要困难得多。
  • 客户请求... :)

标签: html css css-animations keyframe


【解决方案1】:

这是一个纯 CSS 的小提琴。希望它会有所帮助。

https://jsfiddle.net/d946h29g/

这个想法是使用 Chrome Element Inspector 获取文本宽度。

@keyframes marquee {
    0% {
        left: -556px;
    }
    100% {
        left: 100%;
    }
}

【讨论】:

  • 这实际上是我几分钟前所做的,并且效果相同。 :)
【解决方案2】:

问题 #1:仅添加 position: absolute; 是不够的,您还需要将 width: 100%; 或类似的东西添加到 .sliding-marquee ul。如果您没有将width 设置为100%,则默认为right: 0;,这意味着您的width 将在您的动画播放时从100% 变为0%

修改版本,修复问题#1:https://jsfiddle.net/wtm_w/0hp144r0/

【讨论】:

    猜你喜欢
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 2011-08-05
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多