【问题标题】:How do I delay the appearance of an animated scrolling background (CSS)?如何延迟动画滚动背景 (CSS) 的出现?
【发布时间】:2017-12-13 00:55:50
【问题描述】:

我有一系列动画,每个动画都延迟出现一个接一个。 顺序:

  1. 徽标
  2. h1
  3. 小时
  4. 背景开始向上滚动

使用animation-fill-mode: backwards,每个元素在动画化之前不会出现在页面上。我希望同样的事情发生在背景上。所以在所有其他动画完成之前它不会出现。然后背景将开始向上滚动。

/*Top Gif*/

.banner {
  position: relative;
  float: left;
  width: 100%;
  height: 400px;
  text-align: center;
}

.opening {
  display: block;
  background: url(http://subtlepatterns2015.subtlepatterns.netdna-cdn.com/patterns/footer_lodyas.png);
  animation: 100s scroll infinite linear;
  animation-delay: 3s;
  animation-fill-mode: background;
  margin: 2px 0 0 0;
}

.textBox {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.logo {
  width: 300px;
  margin-bottom: 20px;
}

.logo--animated {
  animation: popUp 1s ease-out;
}

.textBox h1 {
  color: #FFF;
  font-size: 60px;
  text-shadow: 0px 4px 3px rgba(0, 0, 0, 0.4), 0px 8px 13px rgba(0, 0, 0, 0.1), 0px 18px 23px rgba(0, 0, 0, 0.1);
  line-height: 50px;
  animation: moveInRight 0.7s ease-out;
  animation-delay: 1.2s;
  animation-fill-mode: backwards;
}

hr.style-two {
  border: 0;
  height: 3px;
  background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0));
  animation: moveInRight 0.4s ease-out;
  animation-delay: 1.9s;
  animation-fill-mode: backwards;
}

.textBox h4 {
  line-height: 10px;
  font-weight: normal;
  font-size: 20px;
  animation: moveInRight 0.6s ease-out;
  animation-delay: 2.3s;
  animation-fill-mode: backwards;
}


/*Animations*/

@keyframes scroll {
  100% {
    background-position: 0px -3000px;
  }
}

@keyframes popUp {
  0% {
    opacity: 0;
    transform: translateY(50px);
  }
  100% {
    opacity: 1;
    transform: translateY(0px);
  }
}

@keyframes moveInRight {
  0% {
    opacity: 0;
    transform: translateX(-80px);
  }
  100% {
    opacity: 1;
    transform: translate(0);
  }
}
<div class="row">
  <div class="col-lg-12">
    <div class="banner opening">
      <div class="opening">
        <div class="textBox">
          <img class="logo logo--animated" src="logo.png">
          <h1>Title</h1>
          <hr class="style-two">
          <h4>Sub-Title</h4>
        </div>
      </div>
    </div>
  </div>
</div>

【问题讨论】:

  • 背景是否只需要出现在原位然后滚动位置,还是实际从下向上滚动到位置?
  • 为此,只要出现就足够了。虽然我也有兴趣了解其他选项
  • 我添加了一个答案让它刚刚出现。如果没有一些 JS,我不确定其他选项是否可行。

标签: css animation


【解决方案1】:

如果你想让背景只出现,试试这个。

/*Top Gif*/

.banner {
  position: relative;
  float: left;
  width: 100%;
  height: 400px;
  text-align: center;
}

.opening {

  animation-delay: 5s;
  display: block;
  animation: 100s scroll infinite linear;
  animation-delay: 3s;
  animation-fill-mode: forwards;
  margin: 2px 0 0 0;
}

.textBox {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.logo {
  width: 300px;
  margin-bottom: 20px;
}

.logo--animated {
  animation: popUp 1s ease-out;
}

.textBox h1 {
  color: #FFF;
  font-size: 60px;
  text-shadow: 0px 4px 3px rgba(0, 0, 0, 0.4), 0px 8px 13px rgba(0, 0, 0, 0.1), 0px 18px 23px rgba(0, 0, 0, 0.1);
  line-height: 50px;
  animation: moveInRight 0.7s ease-out;
  animation-delay: 1.2s;
  animation-fill-mode: backwards;
}

hr.style-two {
  border: 0;
  height: 3px;
  background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0));
  animation: moveInRight 0.4s ease-out;
  animation-delay: 1.9s;
  animation-fill-mode: backwards;
}

.textBox h4 {
  line-height: 10px;
  font-weight: normal;
  font-size: 20px;
  animation: moveInRight 0.6s ease-out;
  animation-delay: 2.3s;
  animation-fill-mode: backwards;
}


/*Animations*/

@keyframes scroll {
0% {
  background-image: url(http://subtlepatterns2015.subtlepatterns.netdna-cdn.com/patterns/footer_lodyas.png);
}
  100% {
  background-image: url(http://subtlepatterns2015.subtlepatterns.netdna-cdn.com/patterns/footer_lodyas.png);
    background-position: 0px -3000px;
  }
}

@keyframes popUp {
  0% {
    opacity: 0;
    transform: translateY(50px);
  }
  100% {
    opacity: 1;
    transform: translateY(0px);
  }
}

@keyframes moveInRight {
  0% {
    opacity: 0;
    transform: translateX(-80px);
  }
  100% {
    opacity: 1;
    transform: translate(0);
  }
}
<div class="row">
  <div class="col-lg-12">
    <div class="banner opening">
      <div class="opening">
        <div class="textBox">
          <img class="logo logo--animated" src="logo.png">
          <h1>Title</h1>
          <hr class="style-two">
          <h4>Sub-Title</h4>
        </div>
      </div>
    </div>
  </div>
</div>

【讨论】:

  • 延迟的外观有效,但现在动画不是无限的。片刻后消失。
  • @mundaneMeta 我编辑了代码。抱歉,我没有等到 100 年代 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 2020-09-03
相关资源
最近更新 更多