ふと、思ったのでちょっとした忘備録。
よくCSSでリストナビゲーションを見るが、「>」このような矢印ボタンをよく見ます。以前は画像にして背景画像にしてロールオーバーで切り替えるなんて事やってた時期もありますが、現在はCSSも発展してきているので、CSSのみで「>」を作ってロールオーバー時にアニメーションさせてみた。
今回の目的とサンプル
では実際に作ったサンプルですが、今回はこんな流れです。
- CSSの疑似要素を使って「>」のような矢印を作成する
- 疑似要素にCSSのTransitionでTransformを指定する
- aタグをロールオーバーしたら疑似要素をアニメーションで下向きにする
See the Pen 疑似要素で矢印作ってロールオーバーでアニメーションさせてみよう by kiriyama (@kirikirimai) on CodePen.
ソースコードの解説
それでは、簡単にhtmlとCSSのソースコードに関して説明していきます。
HTML
htmlに関しては、ごく普通にありふれたソースなので説明は特に不要かと。
CSS
ul li a::after{ content:""; display:block; width:10px; height:10px; border-top:2px solid #333; border-right:2px solid #333; position:absolute; top:40%; right:10px; transform:rotate(45deg); transition:transform 0.3s ease; } ul li a:hover:after{ transform:rotate(135deg); }
CSSに関しては、今回のタイトルに関係ある部分だけ載せています。
他は普通の設定なのでCodepenで確認してみてください。
疑似要素(after)で三角形を作る
まずは疑似要素(今回はafterですが、beforeでも構いません)で、displayをblockにして縦横10pxの空の要素を作りpositionで絶対配置にして位置を右側に調整しています。
ポイントはその空の要素にborderでtopとrightで線を付けてtransformのrotateプロパティで45度回転させます。すると三角形の矢印ができます。
transitionによるアニメーション
あとは、ロールオーバーでこの三角形の矢印をアニメーションで回転させたいので、transitionでtransformを設定しておきます。
そしてaタグのロールオーバー時に疑似要素をtransformで下向きに135度回転させています。
これで完成です。
まとめ
ざっと説明しましたが、ここでもCSSのtransitionが出てきました。
CSSのtransitionについては「CSSのtransitionによるアニメーションを勉強してみる」を参照してみてください。