0

マウスを画像の上に置くと、画像がぼやけ、画像の上にテキストが表示されます。以下のコードを使用して自分で試してみましたが、ホバーすると「テキスト」が画像の外側に移動するように見えました...誰かに理由を教えてもらえますか?

コード:

HTML:

<span class ="row_1">
<a href="#">
<div class = "caption"> testing </div>
<img class = "img_link" src="image/food/food1.jpg" />
</a>
</span>

CSS:

.caption
{
display: none;
}

Jquery:

    $('a').hover(
    function(){
    var image = $(this).find('img'),
     caption = $(this).find('div');
     caption.width(image.width());
     caption.height(image.height());
     caption.fadeIn();
    },
    function(){
     var image= $(this).find('img'),
        caption = $(this).find('div');

    caption.width(image.width());
    caption.height(image.height());
    caption.fadeOut();
});
4

2 に答える 2

6

まず、HTMLを修正する必要がありました。(divブロックレベルの要素)は、または要素(どちらもインライン要素)の有効な子ではありません。したがって、HTMLを次のように修正しました。spana

<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フィドルデモ

参照:

于 2012-04-16T20:33:19.183 に答える
1

このためにJavascriptは必要ありません。以下のこのスニペットは、キャプションを表示するのに十分です。

a:hover .caption { display: block; }

ただし、最初にキャプションを正しく配置する必要があります。

デモ

于 2012-04-16T20:36:22.257 に答える