2017-02-02 5 views
4

私は水のように見えるようにワイプアニメーションを取得して、ドロップの中にいっぱいです。現在のところ、ドロップロゴの上に波アニメーションを含む正方形です。それは波のアニメーションを正しく行いますが、私はそれをドロップの中に留まらせて、いっぱいにすることはできません。SVGウォーターフィルアニメーション

私は近づいていますが、私はまだ実際のロゴが円の内側にある必要があります。

私の進捗状況:

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 

 
    <meta charset="UTF-8" /> 
 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 

 
    <title>SVG Line Animation Demo</title> 
 

 
</head> 
 
<body> 
 
<style> 
 

 
    .st0{fill:none;stroke:#000000;stroke-width:4;stroke-miterlimit:5;} 
 
    .st1{fill:none;stroke:#000000;stroke-width:3;stroke-miterlimit:5;} 
 

 
    #logo2 { 
 
     width: 150px !important; 
 
     height: 150px !important; 
 
     position: relative; 
 
     margin-top: -100px; 
 
    } 
 

 
    #banner { 
 
     border-radius: 50%; 
 
     width: 150px; 
 
     height: 150px; 
 
     background: #fff; 
 
     overflow: hidden; 
 
     backface-visibility: hidden; 
 
     transform: translate3d(0, 0, 0); 
 
     z-index: -1; 
 
     margin-bottom: -50px; 
 
    } 
 

 
    #banner .fill { 
 
     animation-name: fillAction; 
 
     animation-iteration-count: 1; 
 
     animation-timing-function: cubic-bezier(.2, .6, .8, .4); 
 
     animation-duration: 4s; 
 
     animation-fill-mode: forwards; 
 
    } 
 

 
    #banner #waveShape { 
 
     animation-name: waveAction; 
 
     animation-iteration-count: infinite; 
 
     animation-timing-function: linear; 
 
     animation-duration: 0.5s; 
 
     width:300px; 
 
     height: 150px; 
 
     fill: #04ACFF; 
 
    } 
 

 
    @keyframes fillAction { 
 
     0% { 
 
      transform: translate(0, 150px); 
 
     } 
 
     100% { 
 
      transform: translate(0, -5px); 
 
     } 
 
    } 
 

 
    @keyframes waveAction { 
 
     0% { 
 
      transform: translate(-150px, 0); 
 
     } 
 
     100% { 
 
      transform: translate(0, 0); 
 
     } 
 
    } 
 

 
</style> 
 

 
<div> 
 
    <div id="banner"> 
 
     <div class="fill"> 
 

 
      <svg version="1.1" id="logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 
 
    viewBox="0 0 136 195" style="enable-background:new 0 0 136 195;" xml:space="preserve"> 
 

 
       <path fill="#04ACFF" id="waveShape" d="M300,300V2.5c0,0-0.6-0.1-1.1-0.1c0,0-25.5-2.3-40.5-2.4c-15,0-40.6,2.4-40.6,2.4 
 
    c-12.3,1.1-30.3,1.8-31.9,1.9c-2-0.1-19.7-0.8-32-1.9c0,0-25.8-2.3-40.8-2.4c-15,0-40.8,2.4-40.8,2.4c-12.3,1.1-30.4,1.8-32,1.9 
 
    c-2-0.1-20-0.8-32.2-1.9c0,0-3.1-0.3-8.1-0.7V300H300z"/> 
 
      </svg> 
 
     </div> 
 
    </div>   
 

 
    <svg version="1.1" id="logo2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 
 
    viewBox="0 0 136 195" style="enable-background:new 0 0 136 195;" xml:space="preserve"> 
 

 
     <path class="st0" d="M68.2,6.7c0,0-62.4,70.9-62.4,124.7c0,32.3,28,58.4,62.4,58.4s62.4-26.2,62.4-58.4 
 
    C130.7,77.6,68.3,6.7,68.2,6.7z"/> 
 
     <g><path class="st1" d="M61,77.5c0.8,0,1.5,0.7,1.5,1.5v20.6c2.7-3.6,7.6-5.7,13.1-5.7c12.2,0,19.4,6.9,19.4,18.7v37.2 
 
     c0,0.8-0.7,1.5-1.5,1.5H75.6c-0.8,0-1.5-0.7-1.4-1.5v-32c0-4.1-1.8-6.4-5-6.4c-5.8,0-6.7,5.7-6.7,5.7v32.7c0,0.8-0.7,1.5-1.5,1.5 
 
     H43.1c-0.8,0-1.5-0.7-1.5-1.5V79c0-0.8,0.7-1.5,1.5-1.5H61z"/></g> 
 
    </svg> 
 
</div> 
 
</body> 
 
</html>

+0

波Iが降下波をクリップ場合、ドロップは、単にそれが上昇するにつれて常に満杯であることが表示され、完全にドロップ以上です。ここで見たいものをもっと明確に説明してください。 –

+0

基本的には、アニメーション全体のドロップを埋めるようにします。このスレッドの "SVG Deliciousness"セクションで見られるように、http://stackoverflow.com/questions/29738787/filling-water-animation/29740828#_=_ – user3029128

+0

波の効果なしで上に移動する青いドロップがほしい? –

答えて

7

は、以下のようにコードを変更します。

  • ビューポートを削除し、(私はそれが簡単にtransformを使用することを見つける。)
  • ドロップと "h"の両方の文字をコピーしてください。
  • <g class="fill">
  • 群の周りに囲む<g>素子場所
  • <svg><defs>素子内部<clipPath>素子内部パスをマージし、それをIDを与える
  • 場所(「ドロップ」)、単一パスにコピーをマージ、「ドロップ」を用い<g>要素、及び
  • スケールとを囲む
  • クリップと同じ量だけ黒接さドロップアンドHならびにクリップパスドロップと-Hの両方を変換するように、それら波形の中心に配置されます。

clipPath on MDNを読むことができます。

ちなみに、波形のアニメーションは、もはやあなたが望むものではないが、私がこの厳密にチェックしていないのに、それ以上スロッシングが見えなくても、永遠に続くかもしれないことに注意してください。

<!DOCTYPE html> 
 
<html lang="en"> 
 

 
<head> 
 

 
    <meta charset="UTF-8" /> 
 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 

 
    <title>SVG Line Animation Demo</title> 
 

 
</head> 
 

 
<body> 
 
    <style> 
 
    .st0 { 
 
     fill: none; 
 
     stroke: #000000; 
 
     stroke-width: 4; 
 
     stroke-miterlimit: 5; 
 
    } 
 
    .st1 { 
 
     fill: none; 
 
     stroke: #000000; 
 
     stroke-width: 3; 
 
     stroke-miterlimit: 5; 
 
    } 
 
    #logo2 { 
 
     width: 150px !important; 
 
     height: 150px !important; 
 
     position: relative; 
 
     margin-top: -100px; 
 
    } 
 
    #banner { 
 
     border-radius: 50%; 
 
     width: 150px; 
 
     height: 150px; 
 
     background: #fff; 
 
     overflow: hidden; 
 
     backface-visibility: hidden; 
 
     transform: translate3d(0, 0, 0); 
 
     z-index: -1; 
 
     margin-bottom: -50px; 
 
    } 
 
    #banner .fill { 
 
     animation-name: fillAction; 
 
     animation-iteration-count: 1; 
 
     animation-timing-function: cubic-bezier(.2, .6, .8, .4); 
 
     animation-duration: 4s; 
 
     animation-fill-mode: forwards; 
 
    } 
 
    #banner #waveShape { 
 
     animation-name: waveAction; 
 
     animation-iteration-count: infinite; 
 
     animation-timing-function: linear; 
 
     animation-duration: 0.5s; 
 
     width: 300px; 
 
     height: 150px; 
 
     fill: #04ACFF; 
 
    } 
 
    @keyframes fillAction { 
 
     0% { 
 
     transform: translate(0, 150px); 
 
     } 
 
     100% { 
 
     transform: translate(0, -5px); 
 
     } 
 
    } 
 
    @keyframes waveAction { 
 
     0% { 
 
     transform: translate(-150px, 0); 
 
     } 
 
     100% { 
 
     transform: translate(0, 0); 
 
     } 
 
    } 
 
    </style> 
 

 

 
    <div> 
 
    <div id="banner"> 
 
     <div> 
 
     <svg version="1.1" id="logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" xml:space="preserve"> 
 

 
      <defs> 
 
      <clipPath id="drop"> 
 
       <path transform="scale(0.75), translate(32,0)" d="M68.2,6.7c0,0-62.4,70.9-62.4,124.7c0,32.3,28,58.4,62.4,58.4s62.4-26.2,62.4-58.4 
 
    C130.7,77.6,68.3,6.7,68.2,6.7z M61,77.5c0.8,0,1.5,0.7,1.5,1.5v20.6c2.7-3.6,7.6-5.7,13.1-5.7c12.2,0,19.4,6.9,19.4,18.7v37.2 
 
     c0,0.8-0.7,1.5-1.5,1.5H75.6c-0.8,0-1.5-0.7-1.4-1.5v-32c0-4.1-1.8-6.4-5-6.4c-5.8,0-6.7,5.7-6.7,5.7v32.7c0,0.8-0.7,1.5-1.5,1.5 
 
     H43.1c-0.8,0-1.5-0.7-1.5-1.5V79c0-0.8,0.7-1.5,1.5-1.5H61z" /> 
 
      </clipPath> 
 
      </defs> 
 

 
      <g clip-path="url(#drop)"> 
 
      <g class="fill"> 
 
       <path fill="#04ACFF" id="waveShape" d="M300,300V2.5c0,0-0.6-0.1-1.1-0.1c0,0-25.5-2.3-40.5-2.4c-15,0-40.6,2.4-40.6,2.4 
 
    c-12.3,1.1-30.3,1.8-31.9,1.9c-2-0.1-19.7-0.8-32-1.9c0,0-25.8-2.3-40.8-2.4c-15,0-40.8,2.4-40.8,2.4c-12.3,1.1-30.4,1.8-32,1.9 
 
    c-2-0.1-20-0.8-32.2-1.9c0,0-3.1-0.3-8.1-0.7V300H300z" /> 
 
      </g> 
 
      </g> 
 
      <g transform="scale(0.75), translate(32,0)"> 
 
      <path class="st0" d="M68.2,6.7c0,0-62.4,70.9-62.4,124.7c0,32.3,28,58.4,62.4,58.4s62.4-26.2,62.4-58.4 
 
    C130.7,77.6,68.3,6.7,68.2,6.7z" /> 
 
      <path class="st1" d="M61,77.5c0.8,0,1.5,0.7,1.5,1.5v20.6c2.7-3.6,7.6-5.7,13.1-5.7c12.2,0,19.4,6.9,19.4,18.7v37.2 
 
     c0,0.8-0.7,1.5-1.5,1.5H75.6c-0.8,0-1.5-0.7-1.4-1.5v-32c0-4.1-1.8-6.4-5-6.4c-5.8,0-6.7,5.7-6.7,5.7v32.7c0,0.8-0.7,1.5-1.5,1.5 
 
     H43.1c-0.8,0-1.5-0.7-1.5-1.5V79c0-0.8,0.7-1.5,1.5-1.5H61z" /> 
 
      </g> 
 
     </svg> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</body> 
 

 
</html>

+0

私はあなたの借金に永遠にいる。ありがとうございました。 – user3029128