如何创建字幕效果?

我正在使用CSS3动画创建字幕效果。

#caption {
    position: fixed;
    bottom: 0;
    left: 0;
    font-size: 20px;
    line-height: 30px;
    height:30px;
    width: 100%;
    white-space: nowrap;
    -moz-animation:  caption 50s linear 0s infinite;
    -webkit-animation:  caption 50s linear 0s infinite;
}
@-moz-keyframes caption { 
    0% { margin-left:120%; } 100% { margin-left:-4200px; }  
}
@-webkit-keyframes caption { 
    0% { margin-left:120%; } 100% { margin-left:-4200px; }  
}
<div id="caption">
    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. the quick brown fox jumps over the lazy dog.
</div>

现在,我可以获得基本的字幕效果,但是该代码对于此演示来说太具体了。

有没有一种方法可以避免使用诸如的特定值margin-left:-4200px;,以便它可以适应任何长度的文本?

这是一个类似的演示:http : //jsfiddle.net/jonathansampson/XxUXD/使用text-indent但仍具有特定值。

法布里佐·卡尔德兰(Fabrizio Calderan)

在更改标记后,这就是我的方法(我刚刚span在段落中插入了一个内部):

.marquee {
  width: 450px;
  margin: 0 auto;
  overflow: hidden;
  box-sizing: border-box;
}

.marquee span {
  display: inline-block;
  width: max-content;

  padding-left: 100%;
  /* show the marquee just outside the paragraph */
  will-change: transform;
  animation: marquee 15s linear infinite;
}

.marquee span:hover {
  animation-play-state: paused
}


@keyframes marquee {
  0% { transform: translate(0, 0); }
  100% { transform: translate(-100%, 0); }
}


/* Respect user preferences about animations */

@media (prefers-reduced-motion: reduce) {
  .marquee span {
    animation-iteration-count: 1;
    animation-duration: 0.01; 
    /* instead of animation: none, so an animationend event is 
     * still available, if previously attached.
     */
    width: auto;
    padding-left: 0;
  }
}
<p class="marquee">
   <span>
       When I had journeyed half of our life's way, I found myself
       within a shadowed forest, for I had lost the path that 
       does not stray. – (Dante Alighieri, <i>Divine Comedy</i>. 
       1265-1321)
   </span>
   </p>


没有插入硬编码的值(取决于段落宽度)。

该动画应用了CSS3transform属性(在需要时使用前缀),因此效果良好。

如果您只需要在开始时插入一次延迟,则还可以设置一个animation-delay如果您需要在每个循环中插入一个小的延迟,则尝试使用较高的延迟padding-left(例如150%

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何创建字幕效果?

来自分类Dev

如何创建定时准确的软视频字幕?

来自分类Dev

如何创建CSS阴影效果

来自分类Dev

如何创建GPUImage网格效果

来自分类Dev

如何创建SnapChat TableView效果

来自分类Dev

如何创建标记穿线效果?

来自分类Dev

如何创建CSS阴影效果

来自分类Dev

如何创建SnapChat TableView效果

来自分类Dev

如何在另一个动画背景内为字幕添加过渡效果

来自分类Dev

如何在另一个动画背景中为字幕添加过渡效果

来自分类Dev

如何使用HTML 5创建发光效果

来自分类Dev

如何使用ffmpeg创建放大效果

来自分类Dev

如何创建类似地图的Foursquare效果:

来自分类Dev

如何创建CSS3反弹效果

来自分类Dev

如何创建循环图像滚动效果

来自分类Dev

如何在Spritekit中创建风效果

来自分类Dev

如何创建类似Dribbble的图像悬停效果?

来自分类Dev

如何创建带有雕刻效果的文本?

来自分类Dev

如何为div创建阴影效果

来自分类Dev

如何创建文本填充波效果?

来自分类Dev

如何创建超出控件范围的WPF效果?

来自分类Dev

如何创建带有雕刻效果的文本?

来自分类Dev

如何创建门户效果?迅捷/ Spritekit

来自分类Dev

如何使用CSS创建图像叠加效果?

来自分类Dev

如何在圆上创建玻璃效果?

来自分类Dev

如何在处理中创建“脉冲”效果?

来自分类Dev

如何使用HTML 5创建发光效果

来自分类Dev

如何创建Qt标签悬停效果?

来自分类Dev

如何在选择上创建淡入效果?