KON BLOG

8/5/2021

CSSアニメーション入門

  • HTML/CSS

はじめに

CSSで簡単なアニメーションを作成する方法をボタンのアニメーションを作りながら解説します。
特に今回紹介するtransitionを用いたプロパティは比較的簡単に作成することができて、サイトの出来栄えをリッチに出来る方法の一つですので、雰囲気を掴んで使いこなしてみてください!

CSSでアニメーションをつくる方法

  • transitionプロパティを使用する → 比較的簡易なアニメーション
  • animationプロパティ(@keyframes)を → 複雑なアニメーション

※animationプロパティは一見複雑に見えますがtransitionプロパティを使ったアニメーションが分かると、理解がかなりスムーズになると思います。今回はtransitionプロパティを用いたアニメーションの解説を行います。

transitionの例


animation(@keyframse)の例


STEP1 シンプルなボタンをつくる

今回のデモで使用するファイルはこちらに格納してありますので、必要に応じてダウンロードして下さい。
まずは次の画像のようなシンプルなボタンを作ってみます。

  • paddingは上下に10px、左右に30px
  • borderは1pxで色は#333
  • font-sizeは1.2em


STEP2 擬似要素で背景色を追加する

次に擬似要素(:before)を使って背景色を追加してみます。
※今回はtransitionでアニメーションを追加するために「background-color」ではなく「擬似要素」を用います

  1.  ①positionプロパティで背景色の位置を決める
  2.  ②z-indexで文字の下に背景(擬似要素)を移動させる

.c-btn{
  padding: 10px 30px;
  cursor: pointer;
  border: 1px solid #333;
  font-size: 1.2em;
  background-color: transparent;
  /* 親要素にrelativeを設定 */
  position: relative;
  /* 文字色を白に */
  color:#fff
  }

.c-btn::before{
  content: "";
  /* 擬似要素にabsoluteを設定 */
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: blue;
  /* z-indexで文字の下に背景(擬似要素)を移動させる */
  z-index:-1
 }

STEP3 hoverした時にアニメーションさせる

最後にhoverした時にアニメーションする設定をしていきます。

  1.  ①文字色を黒→白にする
  2.  ②背景色のサイズをwidth:0 → widh:100%にする
  3.  ③transitionを設定

.l-main{
  width: 100%;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}
/* ここから下にボタンのスタイルを書いていきます */
.c-btn{
  padding: 10px 30px;
  cursor: pointer;
  border: 1px solid #333;
  font-size: 1.2em;
  background-color: transparent;
  position: relative;
  /* 文字色を黒に戻す */
  color: #333;
}

.c-btn::before{
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  /* widthを0%に */
  width: 0%;
  height: 100%;
  background-color: blue;
  z-index: -1;
  /* transitionでアニメーション */
  transition: 0.3s;
}

.c-btn:hover{
  /* ホバー時に白 */
  color: #fff;
}

.c-btn:hover:before{
  /* ホバー時に100% */
  width: 100%;
}


既存テーマの追加CSSで作成してみる

今回はWordPressブロックエディタ対応のSnowMonkeyで作成してみたいと思います。

.smb-btn {
    position: relative;
    background-color: transparent;
    border: 1px solid #333;
    color: #333;
}

.smb-btn:before {
    position: absolute;
    top: 0;
    left: 0;
    content: "";
    width: 0%;
    height: 100%;
    background-color: blue;
    z-index: -1;
    transition: 0.3s;
}

.smb-btn:hover {
    color: #fff;
}

.smb-btn:hover:before {
    width: 100%;
}