jQuery:在悬停时更改图像宽度

时间:2012-05-21 06:06:53

标签: javascript jquery

我有两张并排的照片。当用户将鼠标悬停在图像上时,它应该展开。

HTML:

<a href="#"><div id="skinny"></div></a>
<a href="#"><div id="room9"></div></a>

jQuery的:

$('#skinny').hover(function() {
    $(this).animate({width: '220px'}, 'fast');
    $('#room9').animate({width: '80px'}, 'fast');
}, function() {
    $(this).animate({width:'150px'},'fast');
    $('#room9').animate({width: '150px'}, 'fast');
});

jsFiddle: http://jsfiddle.net/G4q4q/

它与左图像一起“工作”,但我无法使用右图。我目前的方法效率很低,所以如果你有任何优化建议,请告诉我。

2 个答案:

答案 0 :(得分:2)

好吧,我做了一个非常粗略的例子,不允许扩展/多个图像,但你应该明白这个想法。要转到CSS中的clip元素,只需overflow: hidden

jsFiddle:http://jsfiddle.net/G4q4q/10/

HTML

<div id="wrap">
    <a href="#" id="skinny">
        <img class="image" src="http://www.theexoticvet.com/images/content_1.jpg" />
    </a>
    <a href="#" id="room9">
        <img class="image" src="http://www.theexoticvet.com/images/content_2.jpg" />
    </a>
</div>​

CSS

#wrap {
    position: relative;
    width: 300px;
    height: 300px;
    overflow: hidden;
}

a {
    display: block;
    float: left;
    top: 0;
    width: 50%;
    height: 300px;
    overflow: hidden;
}

的Javascript

$(function() {
    $('a').hover(function() {
        $(this).stop().animate({width: '80%'}, 'fast')
        $('a').not(this).stop().animate({width: '20%'}, 'fast');
    }, function() {
        $('a').stop().animate({width:'50%'},'fast');
    });
});

编辑笔记:我编辑了这个,使它比我的第一次尝试好一点。

答案 1 :(得分:1)

我花了很多时间为此制作一个更通用的方法 - 所以无论你是否使用它,至少要看看这个。我知道克里斯蒂安会让我重新发明轮子,但是,在他撰写评论之前我就开始了......顺便说一下,你想知道这些东西是如何运作的吗?为此,我在这里创建了这个插件(基督教该死的我):http://jsfiddle.net/hHzkS/

我评论过它......如果在评论中有任何疑问......