私は純粋なcssソリューションに行きました.jsは必要ありません. 私が使用した CSS トランジションは、完全にクロス ブラウザーではありませんが、適切に劣化するはずです。劣ったブラウザー (IE を参照) を使用する場合は、ブラウジング エクスペリエンスが劣ることが予想されます。
私のコードは次のようになります (もう少し読みやすくするために、HTML を少し単純化しました)。
<a class="hover-me">
<span class="caption">VIEW</span>
<img src="http://lorempixel.com/261/261/"/>
</a>
.hover-me {
position: relative;
width: 250px;
display: inline-block;
}
.hover-me img{
width:100%;
height:auto;
display: block;
}
.hover-me:after {
content: '';
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
z-index: 1;
background: rgba(255,0,0,.5);
transition: all .5s ease;
opacity: 0;
}
.hover-me .caption {
display: block;
height: 50%;
position: absolute;
top: 50%;
left: 0; right: 0;
margin-top: -10px;
text-align: center;
transition: all .5s ease;
opacity: 0;
z-index: 2;
color: #fff;
line-height: 20px;
}
.hover-me:hover:after , .hover-me:hover .caption {
opacity: 1;
}
お気づきかもしれませんが:
- キャプションとオーバーレイは不透明度を使用して隠され、css で変更できるようになっています。
- ストレッチは、bottom: 0;
またはを追加することによって行われheight: 100%;
ます - テキストは、上部を 50% に設定し、margin-top をテキストの高さの半分に設定することにより、垂直方向に中央揃えされます
- オーバーレイは:after
、リンクの で実現されます。今は完全な高さではありません。これが z-index がある理由でもあります。そうしないと、オーバーレイがキャプションの上に表示されます。
コードをprefixrのようなものを介して実行することを忘れないでください(または、持っている場合はless / sass mixinを使用して)、最大のクロスブラウザサポートを取得します(主に不透明度とトランジション用)
コードが明確であることを願っています。そうでない場合は、お気軽にお問い合わせください。また、実演するためにフィドルを更新しました:http://jsfiddle.net/5X7ub/25/