“填充水”效果,无限重复包裹

时间:2016-08-23 15:15:48

标签: css css3 svg css-animations

我一直试图在圆圈中实现一个波浪所见的效果: http://www.jquery-az.com/css/demo.php?ex=131.0_1

不幸的是,我一直无法使用我自己的svg顺利重复动画,如下所示:http://jsbin.com/diserekigo/1/edit?html,css,output。您还会注意到底部的“矩形”部分也未填充。

我的css如下:

.circle {
  border-radius: 100%;
  border: 1px solid black;
  width: 200px;
  height: 200px;
  overflow: hidden;
  position: relative;
  perspective: 1px;
}
.liquid {  
  position: absolute;
  left: 0;
  top: 0;
  z-index: 2;
  width: 100%;
  height: 100%;
  -webkit-transform: translate(0, 80%);
  transform: translate(0, 80%);
}
.wave {
  left: 0;
  width: 400%;
  position: absolute;
  bottom: 100%;
  margin-bottom: -1px;
  -webkit-animation: wave-front .7s infinite linear;
  animation: wave-front 0.7s infinite linear;
}

@-webkit-keyframes wave-front {

  100% {
    -webkit-transform: translate(-100%, 0);
            transform: translate(-100%, 0);
  }
}



@keyframes wave-front {
  100% {
    -webkit-transform: translate(-100%, 0);
            transform: translate(-100%, 0);
  }
}

如何改善重复行为,以及让波浪填满其下方的整个空间?

1 个答案:

答案 0 :(得分:0)

您在原始演示中遗漏了很多。为什么不只是复制和粘贴,并根据您想要的大小和位置进行任何本地更改?你的大多数问题都是因为没有所有SVG元素 - 原始演示有3个,而不仅仅是1.我已经将它们添加到你的jsbin中以使其工作:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" style="display: none;">
  <symbol id="wave">
    <path d="M420,20c21.5-0.4,38.8-2.5,51.1-4.5c13.4-2.2,26.5-5.2,27.3-5.4C514,6.5,518,4.7,528.5,2.7c7.1-1.3,17.9-2.8,31.5-2.7c0,0,0,0,0,0v20H420z"></path>
    <path d="M420,20c-21.5-0.4-38.8-2.5-51.1-4.5c-13.4-2.2-26.5-5.2-27.3-5.4C326,6.5,322,4.7,311.5,2.7C304.3,1.4,293.6-0.1,280,0c0,0,0,0,0,0v20H420z"></path>
    <path d="M140,20c21.5-0.4,38.8-2.5,51.1-4.5c13.4-2.2,26.5-5.2,27.3-5.4C234,6.5,238,4.7,248.5,2.7c7.1-1.3,17.9-2.8,31.5-2.7c0,0,0,0,0,0v20H140z"></path>
    <path d="M140,20c-21.5-0.4-38.8-2.5-51.1-4.5c-13.4-2.2-26.5-5.2-27.3-5.4C46,6.5,42,4.7,31.5,2.7C24.3,1.4,13.6-0.1,0,0c0,0,0,0,0,0l0,20H140z"></path>
  </symbol>
</svg>
<div class="circle">
  <div class="liquid"></div>
  <div id="water" class="water">
    <svg viewBox="0 0 560 20" class="water_wave water_wave_back">
      <use xlink:href="#wave"></use>
    </svg>
    <svg viewBox="0 0 560 20" class="water_wave water_wave_front">
      <use xlink:href="#wave"></use>
    </svg>
  </div>
</div>

您还需要JavaScript来填充水。

http://jsbin.com/pinowufeqe/edit?html,css,js,output