[CSS3] ロールオーバーで動きのあるメニューを作成

ロールオーバーエフェクト「上からかぶさるメニュー」

横並びのメニューを想定して作成してみる。

まず<li><a>タグで普通にメニューを作成したら、そこでposition:relative; z-index:2; overflow:hidden; を設定する。これははじめに見えている状態だ。overflow を hidden にしているところがミソで、この設定をしないとオーバーフローのカラーが上からかぶさるところから見えてしまう。ケースによっては面白いアクションとなるかもしれない。

次に前後の状態を設定するのだが、これは before と after で行う。position:absolute; z-index:-1; display:block; content:''; transition: all 0.5s; としてみた。z-indexは1と表記すると文字も消えてしまう。transition は少しゆっくり目の0.5秒とした。after の値をtop:-100%;とし、width:100%; height:100%; と幅と高さの指定もしておくことが重要。

hover::after の background をグラデーションに設定した場合、hover 時はうまくいきますが、戻りがパッと消えてしまい、transition の効果がきかない。hover::after の background は、単色がいいみたいだ。

ちなみに ::after で top:0; left:-100%、hover::after を top:0; left:0; に設定すると左からかぶさるアクションとなる。

ロールオーバーエフェクト「中心から広がってくるメニュー」

基本的な作りは「上からかぶさるメニュー」と同じで、ポイントは ::after の設定で transform: scale(); を使用する。
このサンプルでは、::after のとき transform: scale(0.5);、hover::after で transform:scale(1); と指定した。

また、transition の効果は hover::after でグラデーションを設定した場合、hover 時はOKでも、やはり戻りがパッと消えてしまう。どういう状態かわかるように、このサンプルではグラデーションの指定を残している。

前のページに戻る