CSSだけでhoverでキャプションがスライドして入ってくるアニメーションを作る方法
PR
CSS3のtransitionでhoverした時にアニメーションを設定して、画像等にマウスが乗った時にキャプションをスライド&フェードで表示するテクニック
このようなアニメーションになります
実際にDEMOで確認したもらったほうがより分かりやすいと思います
CSSだけでキャプションをスライドインで作る方法
原理はpositionで位置をずらして、hoverされたときに画像に覆いかぶさる様にしています
その動作をtransitionを使ってアニメーションにするというものです
HTMLコード
<div class="ho"> <a href=""> <img src="aaa.jpg" alt="" width="300" height="300"> <span class="demo1"><h1>創造Webの元の記事に戻る</h1></span> </a> </div>
HTMLはかなりシンプルです
CSSコード(必要最低限の部分だけ取り出しています)
.ho { position: relative; } img { width: 300px; height: 300px; } span { display: block; position: absolute; width:300px; height:300px; line-height: 300px; top:0; left:0; background: rgba(0,0,0,0.5); -webkit-transition: all 0.4s; -moz-transition: all 0.4s; -ms-transition: all 0.4s; -o-transition: all 0.4s; transition: all 0.4s; opacity: 0; } .demo1 { top:50px; } a:hover span { display: block; top:0; left:0; opacity: 1; } a { display: block; }
spanをimgと同じ大きさにして、positionをつかってimgと少しずれた位置にします
今回は左上を起点にtopとleftを使いましたがrightでもbottomでも好きな箇所を起点に出来ます
そしてhoverされるとtopを0、leftを0にすることでimgの真上に来るようになっています
またopacityで初期の透明度を最大にして見えなくします
hoverがあったときに透明度を1にして無効にします
あとはそれぞれの動作をアニメーション化するためにspanにtransitionを付けます
これで、positionの変動と透明度の変動がアニメーションで表示されるよう雄になりました
これだと、opacityで見えなくしているだけの部分にhoverしたときも動作しますので
.hoにoverflow:hiddenをつけると、そういうことはなくなりますが、アニメーションの見え方も変わります
PR
COMMENT