Css &引用;充水“;无限重复包装效果

Css &引用;充水“;无限重复包装效果,css,svg,css-animations,Css,Svg,Css Animations,我一直在尝试实现一个圆圈中的一个波的效果: 不幸的是,我无法使用我自己的svg使动画平稳地重复,如下所示:。您还会注意到底部的“矩形”部分也没有填充 我的css如下: .circle { border-radius: 100%; border: 1px solid black; width: 200px; height: 200px; overflow: hidden; position: relative; perspective: 1px; } .liquid

我一直在尝试实现一个圆圈中的一个波的效果:

不幸的是,我无法使用我自己的svg使动画平稳地重复,如下所示:。您还会注意到底部的“矩形”部分也没有填充

我的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);
  }
}

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

原始演示中缺少了很多内容。为什么不直接复制粘贴并对您想要的大小和位置进行任何本地更改呢?您的大多数问题都是由于没有包含所有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来让水充满


如果能确切地了解我做错了什么,那就更好了,但我还是听从了你的建议。原来我没有设置正确的viewBox,周围的div也需要背景色。