如何调整图像大小以适应DIV jQuery

时间:2013-03-12 01:54:00

标签: jquery html web

我有方形DIV和大型肖像和风景图像。

我需要将图像放在DIV中,并将额外的部分放到overflow:hidden

例如。如果纵向设置宽度= div高度的宽度:auto

对面是Lanscape。

我尝试过这个脚本,但它没有工作

        $('.magic').each(function(){
        if($(this).css('width')>$(this).css('height')){
            $(this).css('height', '300px');
            $(this).css('width', 'auto');                
        }
        else{
            $(this).css('width', '300px');
            $(this).css('height', 'auto');


        }
    });

PS图像无法拉伸,必须缩放

3 个答案:

答案 0 :(得分:5)

使用像这样的CSS

.magic.portrait {
    height: 300px;
    width: auto;
}

.magic.landscape {
    width: 300px;
    height: auto;
}

只需用JS添加一个类

$('.magic').each(function(){
    if($(this).width() > $(this).height()){
        $(this).addClass('landscape');
    }else{
        $(this).addClass('portrait');
    }
});

这也有助于保持应用程序逻辑和样式的完美分离。更好的是,添加这些类服务器端,并完全避免使用JavaScript。

答案 1 :(得分:1)

如果您真的想要一个javascript / jquery解决方案,请查看jQuery AnyStretch插件。它只是做你想要的。

答案 2 :(得分:0)

如果事先知道图像尺寸,您可以使用CSS完成所有操作。

如果您决定必须使用javascript,那么当前代码的问题是$(this).css('width')检索类似"300px"的字符串,而不是数字,因此两个字符串的比较不能正常工作你希望数字比较能够发挥作用。

您可以将其转换为数字,也可以使用$(this).width()返回一个以像素为单位的数字。

工作示例:

$('.magic').each(function(){
    var self = $(this);
    var width = self.width();
    var height = self.height();
    if (width > height) {
        self.css({height: "300px", width: "auto"});
    } else {
        self.css({width: "300px", height: "auto"});
    }
});

演示:http://jsfiddle.net/jfriend00/B7hVp/