HTML+CSS:波纹扩散效果

这次给大家分享的是用html+css写出波纹扩散的效果。

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>HTML+CSS:波纹扩散效果</title>
  <link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css">
  <link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/fonts/fontawesome-webfont.svg">

  <style type="text/css">
    body {
      margin: 0;
    }
    .wrapp {  
      position: absolute;
      top: 10%;
      left: 50%;
    }
    /************以下为具体实现************/    
    .wave {
      position: relative;
      width: 100px;
      height: 100px;
      text-align: center;
      line-height: 100px;
      font-size: 28px;
    }
    .wave .circle {
      position: absolute;
      border-radius: 50%;
      opacity: 0;
    }
    /* 波纹效果 */
    .wave.ripple .circle {
      width: calc(100% - 6px); /* 减去边框的大小 */
      height: calc(100% - 6px);/* 减去边框的大小 */
      border: 3px solid #fff;
    }
    .wave.ripple .circle:first-child {
      animation: circle-opacity 2s infinite;
    }
    .wave.ripple .circle:nth-child(2) {
      animation: circle-opacity 2s infinite;
      animation-delay: .3s;
    }
    .wave.ripple .circle:nth-child(3) {
      animation: circle-opacity 2s infinite;
      animation-delay: .6s;
    }
    .wave.ripple.danger {
      color: red;
    }
    .wave.ripple.danger .circle {
      border-color: red;
    }
    .wave.ripple.warnings {
        color: orange;
    }
    .wave.ripple.warnings .circle {
        border-color: orange;
    }
    /* 波动效果 */
    .wave.solid .circle{
      width: 100%;
        height: 100%;
        background: #fff;
    }
    .wave.solid .circle:first-child {
      animation: circle-opacity 2s infinite;
    }
    .wave.solid.danger {
      color: red;
    }
    .wave.solid.danger .circle{
      background: red;
    }
    .wave.solid.warnings {
      color: orange;
    }
    .wave.solid.warnings .circle{
      background: orange;
    }
    @keyframes circle-opacity{
        from {
            opacity: 1;
            transform: scale(0);
        }
        to {
            opacity: 0;
            transform: scale(1);
        }
    }
  </style>
</head>
<body>
  <div class="wrapp">
    // 涟漪扩散
    <div class="wave ripple danger">
      <div class="circle"></div>
      <div class="circle"></div>
      <div class="circle"></div>
      
      <i class="fa fa-bell"></i>
      
    </div>
    // 波纹扩散
    <div class="wave solid warnings">
      <div class="circle"></div>
      
      <i class="fa fa-bell"></i>
      
    </div>
  </div>
</body>
</html>

 效果如下:

实现原理:

在 div 里定义圆形,使用 css 的动画,让圆形的大小由小到大进行变化。
① 涟漪扩散:
定义了3个带边框的空圆,让这3个圆形由小到大进行变化,为了体现渐进扩散的效果,使用动画延时,规定;
每个圆形延时时间;

② 波动扩散:
定义了1个带背景色的圆,让这个圆形由小到大进行变化;

发表评论

评论已关闭。

相关文章

猜你喜欢