まず、HTMLを修正する必要がありました。(div
ブロックレベルの要素)は、または要素(どちらもインライン要素)の有効な子ではありません。したがって、HTMLを次のように修正しました。span
a
<span class="row_1">
<a href="#">
<span class="caption">testing</span>
<img class="img_link" src="http://davidrhysthomas.co.uk/img/dexter.png" />
</a>
</span>
そうは言っても、可能であれば、これにはプレーンCSSを使用することをお勧めします。
a {
display: inline-block;
position: relative;
}
.caption {
display: none;
position: absolute;
top: 0;
left: 0;
right: 0;
background-color: #333; /* for browsers that don't understand rgba() notation */
background-color: rgba(0,0,0,0.6);
color: #f90;
font-weight: bold;
line-height: 1.1em;
}
a:hover .caption {
display: block;
}
JSフィドルデモ。
CSS3トランジションを使用すると、フェードイントランジションも実装できます(この例では、古いIEに準拠するために、Microsoft独自のフィルターを使用する必要がある場合がありますが、トランジションを理解/実装しないブラウザーでは正常に機能が低下します。 )::
a {
display: inline-block;
position: relative;
}
.caption {
opacity: 0;
position: absolute;
top: 0;
left: 0;
right: 0;
background-color: #333; /* for browsers that don't understand rgba() notation */
background-color: rgba(0,0,0,0.6);
color: #f90;
font-weight: bold;
line-height: 1.1em;
-webkit-transition: all 1s linear;
-o-transition: all 1s linear;
-ms-transition: all 1s linear;
-moz-transition: all 1s linear;
transition: all 1s linear;
}
a:hover .caption {
opacity: 1;
-webkit-transition: all 1s linear;
-o-transition: all 1s linear;
-ms-transition: all 1s linear;
-moz-transition: all 1s linear;
transition: all 1s linear;
}
JSフィドルデモ。
jQueryを使用する必要がある場合は、非常にシンプルに保つことをお勧めします。
$('.row_1 a').hover(
function(){
$(this).find('.caption').fadeIn(1000);
},
function(){
$(this).find('.caption').fadeOut(1000);
});
JSフィドルデモ。
参照: