【问题标题】:CSS3 background gradient animation - background-size:cover not working?CSS3 背景渐变动画 - 背景大小:封面不起作用?
【发布时间】:2012-01-31 00:26:06
【问题描述】:

我对 CSS3 动画还很陌生,所以这对我来说很难。我正在尝试在我网站的顶部栏上创建一种反射效果,以使用户了解该栏。

所以我实际上想要从栏的左侧到右侧快速且轻松地进行反射。

我有两个问题…… 1.) 我不知道为什么这个想法不适用于background-size:cover;background-size:100% 100%?当我指定像素宽度时,它确实有效,但我只希望它始终为 100%,因为条本身始终为 100% 宽。

2.) 我不知道如何让这件事暂停 3 秒钟。所以反射效果应该在页面加载的时候开始,然后暂停3秒再重复。

这可能吗?

<div class="masked">
    <span class="inner">
    This is some Text
    </span>
</div>

background: linear-gradient(-45deg,  rgba(85,85,85,1) 0%,rgba(85,85,85,1) 48%,rgba(255,255,255,1) 50%,rgba(85,85,85,1) 52%,rgba(85,85,85,1) 100%);
    background-size:1500px 20px;
    animation-name: masked-animation;
    animation-duration: 2s;
    animation-delay: 1s;
    animation-iteration-count: 1;
    animation-timing-function: ease-in-out;

演示 http://jsfiddle.net/7Akwf/

有人可以帮我吗?

【问题讨论】:

  • div 本身没有宽度或高度。所以 0 的 100% 就是 0。

标签: animation css css-transitions css-animations


【解决方案1】:

要让动画暂停 3 秒并继续播放,您必须先设置 animation-iteration-count: infinite;,然后使用 @keyframes 定义通过使用百分比作为暂停来控制延迟。

在下面的演示中,我使用0%-50% 作为完整的动画。然后我使用%50-%100 作为暂停。

如果你想使用background-size: 100% 100%;,你需要设置你的background-position: -2000px 0;,这样如果你想让你的动画滚动,它就完全不在屏幕的左侧。您还需要调整您的@keyframes,以便在完成后完全滚动到右侧。由于这个额外的距离,您需要相应地调整您的持续时间以获得您正在寻找的效果。

演示:http://jsfiddle.net/ThinkingStiff/jaRW3/

@keyframes masked-animation {
    0% {background-position: -2000px 0;}
    50% {background-position: 2000px 0;}
    100% {background-position: 2000px 0;}
}

这里我使用6s 持续时间,其中50% 将是暂停,%50 将是动画,或者每个3 秒。它还在开始前等待 3 秒。这使用了节省大量空间的简写语法。

animation: masked-animation 6s ease-in-out 3s infinite;
background-position: -2000px 0;
background-repeat: no-repeat;
background-size: 100% 100%;

【讨论】:

  • 正是我想要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-19
  • 2011-03-15
  • 2023-03-08
  • 2015-02-07
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
相关资源
最近更新 更多