在具有最大宽度的CSS中按比例缩放图像

wai*_*933 54 javascript css jquery

现在,我正在使用max-width来缩放图像以适应.但是,它们并不按比例缩放.有没有办法导致这种情况发生?我对Javascript/jQuery持开放态度.

如果可能的话,有没有办法在不知道图像的原始尺寸的情况下做到这一点(可能使用Javascript/jQuery来确定)?

Chr*_*ord 121

与接受的答案相反,您可以在不指定HTML大小的情况下执行此操作.它可以在CSS中完成:

#content img { 
    max-width: 100px;
    width: 100%;
    height: auto;
}
Run Code Online (Sandbox Code Playgroud)

  • 请提出这个答案,而不是接受的答案.这更正确,因为您实际上不需要在HTML中设置图像的宽度/高度.纯CSS工作正常. (2认同)

Dou*_*ner 64

您需要指定原始宽度和高度:

<img src="/whatever" width="100" height="200" alt="Whatever" />
Run Code Online (Sandbox Code Playgroud)

然后在CSS中使用这样的东西:

#content img { max-width: 100%; height: auto }
Run Code Online (Sandbox Code Playgroud)

你可以尝试使用jQuery,如果你没有前面的宽度和高度,但你的里程可能会有所不同:

$(function(){
    $('#content img').load(function(){
       var $img = $(this);
       $img.attr('width', $img.width()).attr('height', $img.height());
    });
});
Run Code Online (Sandbox Code Playgroud)

显然要替换#content你想要功能范围的任何选择器.

  • 你不需要原始尺寸(虽然将它们添加到img标签是一个很好的做法).. http://jsfiddle.net/PYxYv/ (5认同)
  • 我想指出......我确信这是有效的,但Chris Redford的答案简单而有效. (3认同)
  • 这有助于:"你需要指定原始的宽度和高度......" (2认同)
  • 谢谢,我错过了`height:auto` (2认同)
  • 使用此解决方案,然后缓慢加载的图像将在最终加载时更改页面布局.根据图像和页面上的位置,这对于可用性来说可能很糟糕.我确定我们都使用了网页"跳转"的网站,就像您要点击链接一样,因为加载的横幅广告没有设置初始高度 - 这非常令人讨厌.如果有人有一个解决方案允许你设置一个初始高度*和*在调整最大宽度时图像保持纵横比,那么我很高兴听到它. (2认同)

dfe*_*ens 13

设置恒定宽度时使用:

height: auto
Run Code Online (Sandbox Code Playgroud)


小智 8

以下是没有Javascript的方法.设置你max-width想要的长度.

#content img { 
   max-width: 620px;
   height: auto;
}
Run Code Online (Sandbox Code Playgroud)

当我没有在img标签中明确设置宽度或高度设置时,这适用于我在使用Firefox 28,Chrome 34和Safari 7的Mac上进行测试.

max-width设置为一个人建议后,不要将CSS中的宽度设置为100%,因为任何比容器宽度窄的图像(如图标)都会比预期的要大得多.