javascript 调整窗口大小时修改图像大小 (jQuery)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/21134853/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Modify image size when window is resized (jQuery)
提问by Michael Ruta
I'm trying to resize images when a page is loaded and when the browser is resized. Some images will be portrait and some landscape, and they will be in a container div that also may be portrait/landscape (depending on browser size). It doesn't matter if the image should be stretched to fill the box (either 100% width or 100% height) and if the ratio's do not match then clipping will occur (through CSS overflow:hidden
).
我正在尝试在加载页面和调整浏览器大小时调整图像大小。一些图像将是纵向的,一些是横向的,并且它们将位于也可能是纵向/横向(取决于浏览器大小)的容器 div 中。图像是否应该被拉伸以填充框(100% 宽度或 100% 高度)并不重要,如果比例不匹配,则会发生剪裁(通过 CSS overflow:hidden
)。
My method was to get the ratio of the container box (ie portrate or landscape) and get the image ratio (portrait or landscape), compare them and adjust the CSS width/height accordingly.
我的方法是获取容器框的比例(即纵向或横向)并获取图像比例(纵向或横向),比较它们并相应地调整CSS宽度/高度。
Note: all the containers will have a class of mr_our-dest-img-container
and will all only contain 1 img element (and some different elements).
注意:所有容器都将有一个类,mr_our-dest-img-container
并且都只包含 1 个 img 元素(和一些不同的元素)。
Here is the code I have, which doesn't work. It doesn't do anything, and I can't figure it out. Could anyone help me fix this?
这是我的代码,它不起作用。它没有任何作用,我无法弄清楚。谁能帮我解决这个问题?
$(document).ready(function () {
updateImageSize();
$(window).resize(function() {
updateImageSize();
});
});
function updateImageSize() {
$(".mr_our-dest-img-container").each(function(){
var ratio_cont = jQuery(this).width()/jQuery(this).height();
var $img = jQuery(this).find("img");
var ratio_img = $img.width()/$img.height();
if (ratio_cont > ratio_img)
{
$img.css({"width": "100%", "height": "auto"});
}
else if (ratio_cont < ratio_img)
{
$img.css({"width": "auto", "height": "100%"});
}
}
};
采纳答案by qqfish
It is an syntax error just as the console said. You miss a )
after the each
function end.
正如控制台所说,这是一个语法错误。你)
在each
函数结束后错过了一个。
function updateImageSize() {
$(".mr_our-dest-img-container").each(function(){
var ratio_cont = jQuery(this).width()/jQuery(this).height();
var $img = jQuery(this).find("img");
var ratio_img = $img.width()/$img.height();
if (ratio_cont > ratio_img)
{
$img.css({"width": "100%", "height": "auto"});
}
else if (ratio_cont < ratio_img)
{
$img.css({"width": "auto", "height": "100%"});
}
}); //missing )
};