我有方形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图像无法拉伸,必须缩放
答案 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"});
}
});