ログイン

問題2 おしゃれなボタンアニメーションを作ろう!

CSSAnimationの問題

CSSAnimation

おしゃれなボタンアニメーションを作ろう!

問題

今回はおしゃれなボタンの作り方です。
擬似要素before、afterを使っています。

自分の環境に書くコード

              <div class="btn">ここをクリック</div>
¥HTML¥
            
              body{
  padding: 30px;
}
.btn{
  position: relative;
  width: 200px;
  height: 40px;
  line-height: 40px;
  text-align: center;
  cursor: pointer;
}
.btn::before,.btn::after{
  position: absolute;
  content: "";
  width: inherit;
  height: inherit;
  border: 2px solid black;
  box-sizing: border-box;
  transition: .3s;
}
.btn::before{
  top: -5px;
  left: -5px;
  border-right: none;
  border-bottom: none;
}
.btn::after{
  top: 5px;
  right: -5px;
  border-top: none;
  border-left: none;
}
¥CSS¥
            

期待する画面

ログインして解答を見る
コードのアイコン

解答ソースコード

              .btn:hover::before{
  transform: translate(5px,5px);
  border-radius: 30px;
}
.btn:hover::after{
  border-radius: 30px;
  transform: translate(-5px,-5px);
}
¥CSS¥
            
答えのアイコン

解説

どうだったでしょうか。今回はいくつかの基礎的な知識の複合問題です。
まず、hover時にbeforeもafterも動いていますよね。これをtransformで実現します。これはtop、leftとかでできるんじゃない?と思われたと思います。やって見るとわかると思いますが、topが動いてからleftが動くと言った感じで別々の動作になりませんか?これだとちょっとブサイクなアニメーションになるので今回はtransformを利用しました。最後にborder-radiusで角を丸くすれば完成です。是非これを機会に自分で面白いボタンを作ってみてください。
完了にする!
LINEの友達追加でお役立ち動画をGET!!