[例]ボタンが光ったように見せる
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .btn{
      overflow: hidden;
      position: relative;
      padding: 10px 0;
      background-color: #ddd;
      text-align: center;
      color: #000;
      width: 200px;
      cursor: pointer;
      box-shadow: 0 5px #bbb;
      transition: 0.5s;
    }
    .btn:active{
      transform: translateY(5px);
      box-shadow: 0 0 #bbb;
    }
    .btn:before{
      position: absolute;
      content: "";
      display: inline-block;
      top: -180px;
      left: 0;
      width: 30px;
      height: 100%;
      background-color: #fff;
      transition: 0.5s;
      animation: btn 3s infinite;
    }
    @keyframes btn{
      0%{ transform: scale(0) rotate(45deg); opacity: 0;}
      50%{ transform: scale(0) rotate(45deg); opacity: 0.5;}
      80%{ transform: scale(4) rotate(45deg); opacity: 1;}
      100%{ transform: scale(50) rotate(45deg); opacity: 0;}
    }
  </style>
</head>
<body>
  <div class="btn">ここをクリック</div>
</body>
</html>
解説
.btn にCSSでアニメーションをつけた。
- クリックすると凹む
- 3秒毎に光ったような演出
CSSアニメーションの基本として動きをつけたい要素に transition: をつける。値は変化するまでの秒数。例えば .5s なら「0.5秒かけて変化させる」
クリック時の演出
クリックしたときの演出は :active で記述。
- .btn 要素の[ box-shadow: 0 5px #bbb; ]を :active の[ box-shadow: 0 0 #bbb; ]で消す
- 消えた box-shadow の高さ分を[ transform: translateY(5px); ]でボタンの位置をずらすことにより、ボタンを押したような演出になる。
光ったような演出
3秒毎に白い光が左上から右下に通り過ぎてゆく演出。
仕組みは .btn の上方に .btn:before で白い四角を作り45度傾ける。そして、拡大する動きで光っているように見せる。
- :before には content””; の記述は必須
- animation: は @keyframes とセットで使う。
animation: 呼び出すアニメーション名 何秒後に変化するか 繰り返し;
今回の animation は上記の順で記述している
@keyframes の使い方
@keyframes アニメーション名 { 0%{ } 50%{ } 100%{ } }
アニメーション名を使って呼び出して、各パーセンテージ毎の CSS を実行していく
今回の場合は
- transform: rotate(45deg) で 45度傾斜させる。
- transform: scale(0) で非表示にし、80%で 4倍 の大きさ、100%で 50倍の大きさにする
- opacity: 0 で 透過状態、opacity: 1 で非透過状態
上記3つを操作して実現する

 
	 
	