8

任何人都有一些关于如何使 div 内的文本以“新闻自动收报机”方式从右到左水平滚动而无需使用插件的技巧。这是我正在尝试完成的一个示例(这是一个插件解决方案:http: //www.maaki.com/scrollingText.html)。

4

4 回答 4

11

这是一个快速的解决方案:http: //jsfiddle.net/4mTMw/8/

var marquee = $('div.marquee');
marquee.each(function() {
    var mar = $(this),indent = mar.width();
    mar.marquee = function() {
        indent--;
        mar.css('text-indent',indent);
        if (indent < -1 * mar.children('div.marquee-text').width()) {
            indent = mar.width();
        }
    };
    mar.data('interval',setInterval(mar.marquee,1000/60));
});​

使用text-indentcss 属性,您可以很简单地做到这一点。

于 2012-09-29T23:08:38.873 回答
10

我最近用 CSS 关键帧动画解决了这个问题。

本质上,您的股票代码需要一个隐藏了溢出的包装 div。包含项目的代码应该显示 inline-block 以便它们在一行中:

<div class="ticker-wrap">
    <div class="ticker">
        <div class="ticker__item">Letterpress chambray brunch.</div>
        <div class="ticker__item">Vice mlkshk crucifix beard chillwave meditation hoodie asymmetrical Helvetica.</div>
        <div class="ticker__item">Ugh PBR&B kale chips Echo Park.</div>
    </div>
</div>

示例 CSS:

.ticker-wrap {
    position: fixed;
    bottom: 0;
    width: 100%;
    overflow: hidden;
    height: 4rem;
    background-color: rgba(51, 51, 51, 0.5);
    padding-left: 100%; // offsets items to begin
}

.ticker {
    display: inline-block;
    height: 4rem;
    line-height: 4rem;
    white-space: nowrap;
    padding-right: 100%; // taken from container as display inline-block
}

.ticker__item {
    display: inline-block;
    padding: 0 2rem;
    font-size: 2rem;
    color: white;
}

我有一个演示,它使用 css 关键帧动画然后将内容从一侧无限地转换到另一侧。nb 未显示供应商前缀版本。

@keyframes ticker {
    0% {
        -webkit-transform: translate3d(0, 0, 0);
                transform: translate3d(0, 0, 0);

    }
    100% {
        -webkit-transform: translate3d(-100%, 0, 0);
                transform: translate3d(-100%, 0, 0);
    }
}

您需要的唯一调整是设置动画持续时间并将其应用于 .ticker。

.ticker {
    animation-name: ticker;
    animation-iteration-count: infinite;
    animation-timing-function: linear;
    animation-duration: 25s; // tweak based on number of items/desired speed
}

你可以看到完整的演示

于 2015-05-17T20:43:27.037 回答
0

要使其从下到上滚动,请将 left 属性替换为 top。这对我有用

于 2020-06-29T06:48:34.337 回答
-1

你可以做这样的事情

<div id="scrollcontainer" style="postion:relative; overflow:hidden; width:100%;">
  <span id="scrolltext" style="position:absolute; white-space:nowrap">this is the scrolling text</span>
</div>

和一个js函数

function scroll() {
  $('#scrolltext').css('left', $('#scrollcontainer').width());
  $('#scrolltext').animate({
    left: '-='+($('#scrollcontainer').width()+$('#scrolltext').width())
  }, 2000, function() {
    scroll();
  });
}

scroll();

测试。可以在这里找到:http: //jsfiddle.net/zrW5q/85/

于 2012-09-29T22:52:50.150 回答