当浏览器宽度/高度发生变化时,如何使用CSS动态调整图像大小?

时间:2011-01-13 19:25:40

标签: css image browser resize window

我想知道如何使图像与浏览器窗口一起调整大小,here是我到目前为止所做的(或下载the whole site in a ZIP)。

这在Firefox中运行正常,但在Chrome中存在问题:图片并不总是调整大小,它在某种程度上取决于加载页面时窗口的大小。

这在Safari中也可以正常工作,但有时图像会以最小宽度/高度加载。也许这是由图像尺寸引起的,我不确定。 (如果加载正常,请尝试刷新几次以查看错误。)

关于如何使这更加防弹的任何想法? (如果需要JavaScript,我也可以使用它,但CSS更可取。)

9 个答案:

答案 0 :(得分:166)

可以使用纯CSS完成,甚至不需要媒体查询。

  

要使图片更加灵活,只需添加max-width:100%height:auto即可。图像max-width:100%height:auto适用于IE7,但不适用于IE8(是的,另一个奇怪的IE错误)。要解决此问题,您需要为IE8添加width:auto\9

     

来源:http://webdesignerwall.com/tutorials/responsive-design-with-css3-media-queries

CSS:

img {
    max-width: 100%;
    height: auto;
    width: auto\9; /* ie8 */
}

如果您想强制执行图像的固定最大宽度,只需将其放在容器中,例如:

<div style="max-width:500px;">
    <img src="..." />
</div>

JSFiddle example here。无需JavaScript。适用于最新版本的Chrome,Firefox和IE(我已经测试过)。

答案 1 :(得分:12)

window.onresize = function(){
    var img = document.getElementById('fullsize');
    img.style.width = "100%";
};

在IE onresize事件中,每次像素更改(宽度或高度)都会触发事件,因此可能会出现性能问题。使用javascript的window.setTimeout()。

延迟图像调整大小几毫秒

http://mbccs.blogspot.com/2007/11/fixing-window-resize-event-in-ie.html

答案 2 :(得分:9)

2018解决方案:

使用视口相对单位应该让您的生活更轻松,因为我们有猫的形象:

cat

现在我们希望在我们的代码中使用这只猫,同时尊重宽高比:

img {
  width: 100%;
  height: auto;
}
<img src="https://www.petmd.com/sites/default/files/petmd-cat-happy-10.jpg" alt="cat">

到目前为止还不是很有趣,但是如果我们想将猫的高度改为视口最大值的50%呢?

img {
  width: 100%;
  height: auto;
  /* Magic! */
  max-width: 50vw;
}
<img src="https://www.petmd.com/sites/default/files/petmd-cat-happy-10.jpg" alt="cat">

相同的图片,但现在仅限于 50vw的最大宽度 vw(=视口宽度)表示图像将是视口的X宽度,具体取决于提供的数字。这也适用于身高:

img {
  width: auto;
  height: 100%;
  max-height: 20vh;
}
<img src="https://www.petmd.com/sites/default/files/petmd-cat-happy-10.jpg" alt="cat">

这会将图像的高度限制为视口的最大值的20%。

答案 3 :(得分:6)

将resize属性设置为两者。然后你可以像这样改变宽度和高度:

.classname img{
  resize: both;
  width:50px;
  height:25px;
}

答案 4 :(得分:5)

您使用的是jQuery吗?

因为我快速搜索了jQuery插件并且他们似乎有一些插件来执行此操作,请检查这个,应该工作:

http://plugins.jquery.com/project/jquery-afterresize

编辑:

这是CSS解决方案,我只需添加 style =“width:100%”,并且至少在chrome和Safari中为我工作。我没有ie,所以只是在那里测试,让我知道,这是代码:

            <div id="gallery" style="width: 100%">
                <img src="images/fullsize.jpg" alt="" id="fullsize" />
                <a href="#" id="prev">prev</a>
                <a href="#" id="next">next</a>
            </div>

答案 5 :(得分:3)

您可以使用CSS3 scale属性来使用css:

调整图像大小
.image:hover {
  -webkit-transform:scale(1.2); 
          transform:scale(1.2);
}
.image {
  -webkit-transition: all 0.7s ease; 
          transition: all 0.7s ease;
}

进一步阅读

答案 6 :(得分:3)

最初,我使用的是以下html / css:

img {
  max-width: 100%;
  height: auto;
  width: auto\9; /* ie8 */
}
<div> 
  <img src="..." />
</div>

然后我将class="img"添加到<div>,就像这样:

<div class="img">
  <img src="..." />
</div>

一切都开始好起来了。

答案 7 :(得分:0)

只需使用此代码。最忘记的是将max-width指定为图片的最大宽度

img {   
    height: auto;
    width: 100%;
    max-width: 300px;
}

检查此演示 http://shorturl.at/nBKVY

答案 8 :(得分:0)

尝试

.img{
   width:100vw; /* Matches to the Viewport Width */
   height:auto;
   max-width:100% !important;
}

仅适用于显示块和内联块,这对弹性项目没有影响,因为我花了很长时间试图找出答案。