1

当用户将鼠标悬停在图像上时,我正在尝试放大图片并在用户鼠标移出图像后减小图像的大小。

我有以下代码

$('#image_layout').on('hover','img',function(){
    $(this).css('width','110%');
})

$('#image_layout').on('mouseout','img',function(){
    $(this).css('width','90%');
})

我想从图像的中心位置放大图像,而不是从图像的左上角位置放大图像。

我有一个:

 ----        ------
|    |  ->  |      |
 ----       |      |
             ------

我想要的:(从图像中心放大图片)

               ------
   ----       |      | 
  |    |  --> |      |
   ----       |      |
               ------

我不确定如何实现这一目标。有小费吗?非常感谢!

4

5 回答 5

2

避免将 JavaScript 用于可以通过简单的 CSS 调整来处理的任务,不要让 JavaScript 在页面上的重量过重。

#image_layout 
{
   width : /* initial width value */ 
   height: /* initial height value */
}


#image_layout : hover
{
   width : /* new width value */ 
   height: /* new height value */
   /* use of multiple tranistions */
   transition : all 0.2s ease-out 
}

关于 jQuery 方式,无需应用 .css() 两次,只需将包含属性及其值的对象传递给它:

$('#image_layout').on('mouseout','img',function(){
    $(this).css({'width':'90%', 'height':'100%'});
});
于 2012-08-06T22:49:26.233 回答
1

你想要达到的目标并不像看起来那么容易。如果要将原点保持在容器的中心,则需要将图像相对于容器进行绝对定位。试试这个 lil' 插件,它可能不适用于所有情况,但值得一试。

$.fn.centerIt = function(){

    var height = this.outerHeight(),
        width = this.outerWidth();

    this.css({
        position: 'absolute',
        top: '50%',
        left: '50%',
        marginTop: -(height/2),
        marginLeft: -(width/2)
    })
    .parent()
    .css('position', 'relative');

    return this;    
};

$('img').css('width', '90%').centerIt();

演示:http: //jsfiddle.net/elclanrs/RMsSh/

于 2012-08-06T22:45:13.493 回答
1

当你改变了width并且你还没有定义 时height,浏览器会自动保持它们之间的比例,所以height也将是110%90%

试试这个代码:

$('#image_layout').on('hover','img',function(){
    $(this).css('width','110%')
        .css('height','100%')
});
$('#image_layout').on('mouseout','img',function(){
    $(this).css('width','90%')
        .css('height','100%');
});
于 2012-08-06T22:40:32.717 回答
0

您需要使图像水平和垂直居中才能做到这一点。

于 2012-08-06T22:44:18.977 回答
0

在 JQuery 中更改图像大小非常容易。您可以使用 .CSS() 采用这种方法或 CSS 方法

$('#imageId').width(150).height(100);
于 2012-08-06T22:39:16.480 回答