javascript - 动画之间有延迟的 CSS Newsticker(和其他问题)

标签 javascript css css-animations marquee ticker

首先:我对 CSS 不是很熟练。我设法让 CSS Newsticker 起作用(来源:Pure CSS ticker without absolute positioning)。但不幸的是,它没有按预期工作。

  • 如何消除动画完成和重新启动之间的延迟?
  • 如何避免在运行完整的 Ticker-Wrap 之前 Ticker-Text 消失?编辑:看这里https://jsfiddle.net/uLvzrtg0/ - 它似乎以固定宽度发生?
  • 使动画时间根据输入文本的长度变化的最佳方法是什么? (我试过 Javascript,它工作得很好——除了在 IE 中)

    <script>
    var vSpeed = (5+params[0].length*.18)+"s";
        if(params[0]=="")
        {
          document.getElementById("tickerwrap").style.display="none";
        }else{
        document.getElementById("ticker").style["-webkit-animation-duration"] = vSpeed;  
        document.getElementById("ticker").style["animation-duration"] = vSpeed;  
        }
    

JSFiddle 示例:https://jsfiddle.net/08921sek/

<p>Content before ticker</p>
  <div id="tickerwrap">
    <div id="ticker">
This is some Text. This is some more Text1. This is some more Text2. This is some more Text3. This is some more Text4. This is some more Text5. This is some more Text6. This is some more Text7. This is some more Text8. This is some more Text9. This is some more Text10.
    </div>
  </div>
<p>Content after ticker</p>
<style>
@keyframes customticker {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }
  100% {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}


/* Formatting the full-width ticker wrapper background and font color */
#tickerwrap {
  width: 100%;
  overflow: hidden;
  background-color: rgba(0, 0, 0, 0.5);
  color: #fff;
}


/* Formatting the ticker content background, font color, padding and exit state */
#ticker {
  display: inline-block;
  white-space: nowrap;
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  -webkit-animation-name: customticker;
  animation-name: customticker;
  -webkit-animation-duration: 15s;
  animation-duration: 15s;
}

</style>

感谢您的建议!抱歉,如果我没有遵守一些规则!

最好的问候 购物

最佳答案

您可以从 transform: translate3d(0, 0, 0); 开始动画,为此您可能需要进行其他更改,例如制作 ticker padding-right: 100%; 和 tickerwrap padding-left: 100%;。对于第二个问题(避免文本消失),您可能需要再添加一个容器并将其设为 overflow:hidden;

请参阅下面的代码段:

/* Specifying the name for animation keyframes and keyframes themselves */
@keyframes customticker {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  100% {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}


/* Formatting the full-width ticker wrapper background and font color */
#tickerwrap {
  width: 100%;
  overflow: hidden;
  background-color: rgba(0, 0, 0, 0.5);
  color: #fff;
  padding-left: 100%;
}


/* Formatting the ticker content background, font color, padding and exit state */
#ticker {
  display: inline-block;
  white-space: nowrap;
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  -webkit-animation-name: customticker;
  animation-name: customticker;
  -webkit-animation-duration: 7s;
  animation-duration: 7s;
  padding-right: 100%;
}

#container {
  overflow:hidden;
  width:100%;
}
<p>Content before ticker</p>
  <div id="container">
  
  <div id="tickerwrap">
    <div id="ticker">This is some Text. This is some more Text1. This is some more Text2. This is some more Text3. This is some more Text4. This is some more Text5. This is some more Text6. This is some more Text7. This is some more Text8. This is some more Text9. This is some more Text10.</div>
  </div>
  </div>
<p>Content after ticker</p>

也可以测试一下here .

希望这对您有所帮助! :)

关于javascript - 动画之间有延迟的 CSS Newsticker(和其他问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53503156/

相关文章:

css - CSS3 动画和线性渐变的日出和日落不平滑

javascript - 错误 : write EPIPE

php - 获取用户输入值并重定向

javascript - 为什么我的脚本只将最后一张图像上传到我的 ftp 和数据库?

javascript - 点击()不工作

jquery - CSS Outset/Inset、边框和轮廓

html - 使 bootstrap 导航栏可滚动,包含很多元素

javascript - 为 self.location 的两个 ID 设置值

css - IE10 中 0% 和负 % 之间的 translate3d

javascript - 如何在 css 中使用@keyframes 交叉淡入淡出图像库?