トップへ(mam-mam.net/)

CSSのclip-pathプロパティと@keyframesとanimationを使う

検索:

clip-pathプロパティはCSSでSVGのパス指定を行い、エレメントから切り抜き(クリッピング)ができます。
clip-path:circle(半径 at 中心X 中心Y) や
clip-path:ellipse(半径横 半径縦 at 中心X 中心Y) や
clip-path:polygon(x1 y1, x2 y2, x3 y3, ・・・) のように指定します。

animationプロパティは@keyframesとセットで使用します
セレクタ {
animation:キーフレームの名前 適用時間(1s等) 変化の度合い(ease等) 開始までの待ち時間(1s等) 繰返し回数(infinite等) 再生方向(normal等) 開始前後の適用(both等) 再生か停止か(running等);
}
@keyframes キーフレームの任意の名前 {
0%{CSSプロパティ名:値;}
100%{CSSプロパティ名:値;}
}

アニメーション開始

HTML、CSS

<div class="frame-ani">
  <img class="frame-ani-main" src="./imgs/c001.jpg">
  <div class="frame-ani-sub"></div>
</div>

<style>
  .frame-ani{
    position:relative;
    display:inline-block;
  }
  .frame-ani-main{
    width:100vw;
    max-width:600px;
    animation: frame-ani-main 2.0s linear 0.00s 1 normal both running;
  }
  .frame-ani-sub{
    position:absolute;
    left:0;top:0;
    right:0;bottom:0;
    background:#fcc;
    animation: frame-ani-sub 2.0s linear 0.00s 1 normal both running;
  }
@keyframes frame-ani-main {
    0%{clip-path:polygon(  0%   0%,   0% 100%,   0% 100%,   0%   0%);}
   20%{clip-path:polygon(  0%   0%,   0% 100%,   0% 100%,   0%   0%);}
   80%{clip-path:polygon(  0%   0%,   0% 100%,  80% 100%,  80%   0%);}
  100%{clip-path:polygon(  0%   0%,   0% 100%, 100% 100%, 100%   0%);}
}
@keyframes frame-ani-sub {
    0%{clip-path:polygon(  0%   0%,   0% 100%,   0% 100%,   0%   0%);}
   20%{clip-path:polygon(  0%   0%,   0% 100%,  20% 100%,  20%   0%);}
   80%{clip-path:polygon( 80%   0%,  80% 100%, 100% 100%, 100%   0%);}
  100%{clip-path:polygon(100%   0%, 100% 100%, 100% 100%, 100%   0%);}
}
</style>