svg和css实现波浪动效

效果:

截图有点模糊~

实现:

《svg教程》

//html
<body>
  <svg class="wave-container" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none">
    <defs>
      <path id="gentle-wave" d="M-160 44c30 0
    58-18 88-18s
    58 18 88 18
    58-18 88-18
    58 18 88 18
    v44h-352z">
    </path>
    </defs>
    <g class="parallax">
      <use xlink:href="#gentle-wave" x="50" y="0" fill="rgba(224,233,239,.5)"></use>
      <use xlink:href="#gentle-wave" x="50" y="3" fill="rgba(224,233,239,.5)"></use>
      <use xlink:href="#gentle-wave" x="50" y="6" fill="rgba(224,233,239,.5)"></use>
    </g>
  </svg>
</body

 

//css
*{
  margin:0;
  }
  body{
    background: #2196f3;
  }
  .wave-container{
    margin-top:200px;
    width: 100%;
    height: 150px;
  }
  .parallax>use {
      animation: wave-move 12s linear infinite
  }

  .parallax>use:nth-child(1) {
      animation-delay: -2s
  }

  .parallax>use:nth-child(2) {
      animation-delay: -2s;
      animation-duration: 5s
  }

  .parallax>use:nth-child(3) {
      animation-delay: -4s;
      animation-duration: 3s
  }
  @keyframes wave-move {
    0% {
        transform: translate(-90px,0)
    }

    100% {
        transform: translate(85px,0)
    }
  }

  

 

-----------------------------------------

 

 

<style>
    .svg-wrapper {
        height: 80px;
        margin: 60px auto 0;
        position: relative;
        width: 255px;
        background:#ddd;
    }
    .shape {
        fill: transparent;
       /* stroke-dasharray: 208 540;
        stroke-dashoffset: -359;
        stroke-width: 8px;*/
        stroke-width: 0;
        stroke: red;
    }
    .svg-wrapper:hover .shape {
        -webkit-animation: 0.5s draw linear forwards;
        -moz-animation: 0.5s draw linear forwards;
        animation: 0.5s draw linear forwards;
    }

    @keyframes draw{
        0% {
          stroke-dasharray: 140 540;
          stroke-dashoffset: -474;
          stroke-width: 8px;
        }
        100% {
            stroke-dasharray: 760;
            stroke-dashoffset: 0;
            stroke-width: 8px;
        }
    }      
  </style>



<div class="svg-wrapper">
   <svg height="80" width="255" xmlns="http://www.w3.org/2000/svg">
      <rect class="shape" height="80" width="255"></rect>
  </svg>
</div> 

  

 

三、原形进度条 

<svg width="150px" height="150px" class="svg" xmlns="http://www.w3.org/2000/svg" >
    <circle r="70" cy="75" cx="75" stroke-width="8" stroke="#EAEFF4" stroke-linejoin="round" stroke-linecap="round" fill="none"/>
    <circle class="progress" r="70" cy="75" cx="75" stroke-width="8" stroke="#1593FF" stroke-linejoin="round" stroke-linecap="round" fill="none" stroke-dashoffset="0px"  stroke-dasharray="471px" />
</svg>


   <style>
    svg {
       transform: rotate(-90deg);
    }
    .progress {
        animation: rotate 15000ms linear both;
    }
    @keyframes rotate {
        from {
            stroke-dashoffset: 471px;
        }
        to {
            stroke-dashoffset: 0px;
        }
    }
    </style>

  

posted @ 2018-03-26 12:14  leaf+  阅读(2592)  评论(0编辑  收藏  举报