【问题标题】:Growing "blast" of light animation from center of page从页面中心开始“爆炸”的轻动画
【发布时间】:2019-10-31 07:25:58
【问题描述】:

我想使用 CSS 制作一个径向渐变圆的动画以扩展页面的全长和全宽(全白),然后反转此动画(返回原始状态)。这应该看起来像从中心逐渐“爆炸”的白色,一旦达到全宽/全高,就会逐渐变成全白,但是我的白色背景过早开始过渡。我如何做到这一点?

scss

    .container {
      display: flex;
      justify-content: center;
      flex-direction: column;
      text-align: center;
      background: black;
      height: 100vh;
    }

    .flash-container {
        animation: grow 5s 2s linear forwards;
        width: 20px;
        height: 20px;
        z-index: 4;

        #flash {
            background: radial-gradient(circle, white, transparent 10%);
            width: 100%;
            height: 100%;
            position: absolute;
            border-radius: 100%;
        }
    }

    @keyframes grow {
        to {
            transform: scale(1000);
            background: white;
        }
    }

html

      <div class="container">
        <div class="flash-container">
          <div class="flash"></div>
        </div>
      </div>

Jsfiddle:https://jsfiddle.net/zv3bmw8j/2/

【问题讨论】:

  • 您是否尝试过简单地为渐变而不是框设置动画?您当前正在尝试调整元素的大小,这在响应式环境中可能会受到严重限制。
  • 这是一个 codepen 用户完全按照我的建议进行操作的示例。接受他正在为一个盒子阴影制作动画,这会更好,更容易制作动画。 codepen.io/mpsinghk/pen/JBVQbp
  • 也许你想要jsfiddle.net/Lpjb10rn

标签: css css-animations keyframe


【解决方案1】:

我更新了您的 CSS 以使用上面引用的 box-shadow 方法。由于它是基于悬停方法构建的,因此需要进行更多调整。只需将百分比值从 0% 更改为 100%,您就应该很稳定。我还对 HTML 格式进行了更改,并删除了内部 flash div。

https://jsfiddle.net/q9n6adLp/

.flash-container {
    animation: grow 5s 2s linear forwards;
    width: 20px;
    height: 20px;
    z-index: 4;
  margin: 0 auto;
  box-shadow: 0 0 30vw 40vw rgba(241,244,0,1);
  .flash {
        background: radial-gradient(circle, white, transparent 10%);
    width: 100%;
    height: 100%;
        position: absolute;
        border-radius: 100%;
    }


}

【讨论】:

  • 这似乎是正确的做法——不使用径向渐变。谢谢。
  • 很高兴它有帮助!
猜你喜欢
  • 2011-12-25
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
  • 2017-07-16
  • 2016-01-16
  • 1970-01-01
相关资源
最近更新 更多