我认为这应该是一件简单的事情,但我没有看到一个明确的方法来做到这一点。
我想这样当用户将鼠标悬停在图像上时,图像会变大 10%,然后当用户将鼠标移开时返回到其原始大小。
我想我会想要使用 jQueryhover
函数,但我不知道要传递给hover
.
$('.resizableImage').hover(makeBigger, returnToOriginalSize);
我认为这应该是一件简单的事情,但我没有看到一个明确的方法来做到这一点。
我想这样当用户将鼠标悬停在图像上时,图像会变大 10%,然后当用户将鼠标移开时返回到其原始大小。
我想我会想要使用 jQueryhover
函数,但我不知道要传递给hover
.
$('.resizableImage').hover(makeBigger, returnToOriginalSize);
jQuery 让您可以使用+=
和%
. 所以这两个人一起做你想做的事。
$('.resizableImage').hover(makeBigger, returnToOriginalSize);
function makeBigger() {
$(this).css({height: '+=10%', width: '+=10%'});
}
function returnToOriginalSize() {
$(this).css({height: "", width: ""});
}
演示:http: //jsfiddle.net/rZaAE/
例如,您可以使用 CSS3 转换属性来做到这一点
$('.resizableImage').hover(function(){
$(this).css("transform", "scale(1.1, 1.1)");
}, function(){
$(this).css("transform", "none");
});
如果没有 CSS3,您可以简单地使用.width()
和.height()
方法获取原始大小,将其存储在数据属性中并调整大小。在 mouseout 上只需恢复原始值。
var hoverRatio = 1.1;
$('.resizableImage').hover(function() {
$(this).data('width', $(this).width());
$(this).data('height', $(this).height());
$(this).css({
width: $(this).width() * hoverRatio,
height: $(this).height() * hoverRatio
});
}, function() {
$(this).css({
width: $(this).data('width'),
height: $(this).data('height')
});
});
见演示。
您还应该在动画上使用停止,这样当用户在动画完成之前移出时它不会被打断
html:
<img src="http://placehold.it/350x150" class="resizableImage" width="350" height="150" />
js:
$('.resizableImage').mouseenter(function() {
$(this).stop().animate({ width: "+=10%", height: "+=10%" });
});
$('.resizableImage').mouseleave(function() {
var x = $(this).attr('width'),
y = $(this).attr('height');
$(this).stop().animate({ width: x, height: y });
});
</p>
这是一个小提琴:http: //jsfiddle.net/tWdAK/1/
你不能只用css做到这一点:
CSS
.resizable_img {
position: relative; // needed for z-index to work
width: 100%;
height: auto; // will resize image proportionally
}
.resizable_img:hover {
width: 120%;
z-index: 1; // place image on top
}
.img_container {
width: 25%;
position: relative;
overflow: visible; // stops images being shifted
float:left;
}
HTML
<div class="contents">
<div class="img_container">
<img class="resizable_img" src="img.jpg">
</div>
</div>
在这里提琴
如果您不使用内联样式,则可以省略将旧值保存在数据中并使用样式 attr 代替。
$('.element').hover(function() {
var el = $(this);
el.attr('style','width:'+el.width() * 1.1 + 'px;height:'+el.height() * 1.1 + 'px;');
}, function() {
$(this).removeAttr('style');
});