我希望我的图像随着窗口高度的变化而调整大小,同时保持包含div收缩包装图像。我试着使用:
<div>
<img src="http://akamaicovers.oreilly.com/images/9780596806767/cat.gif" alt="">
</div>
html, body {
height: 100%;
width: 100%;
}
div {
height: 90%;
background-color: black;
display: inline-block;
}
img {
height: 100%;
width: auto;
}
但它似乎没有像预期的那样工作。div
不会收缩。当我在调试器中使用css属性时,它实际上是这样做的。
这是小提琴(尝试调整结果面板的大小)
更新:
这就奇怪了。自从我第一次发布这个问题,浏览器的行为改变了。原来(Chrome),当我调整窗口的大小,图像将按比例缩小,但包装div将保持其原有的宽度。现在发生了什么(Chrome更新?)是图像不会水平缩小,和div也。
我用最新的Safari和Firefox试过。两者都缩小图像,但保持原来的div宽度。所以请在其他浏览器上检查一下你的解决方案。
更新# 2:
div必须保持块类型,因为我需要在图像的角落放置其他元素。
我想你不得不求助于JavaScript:
$(window).on('resize', function (){
$('div').width($('img').width());
});
JSFIDDLE
你只需要保持你的图像max-height
为100%。这是它。
这是工作解决方案
HTML:
<div>
<img src="http://akamaicovers.oreilly.com/images/9780596806767/cat.gif" alt="">
</div>
CSS:
html, body {
height: 100%;
width: 100%;
}
div {
height: 90%;
background-color: black;
display: inline;
}
img {
max-height: 100%;
max-width: 100%;
height: 100%;
}
编辑
为img
类更新了CSS
,使图像适合完整的div。以下是编辑的工作解决方案。
img {
max-height: 100%;
max-width: 100%;
height: 100%;
display:block;
}
我有一点去你的fiddle,但我不认为浏览器会改变一个div
的宽度基于图像内部的宽度改变它的宽度,我已经尝试了一些事情,但不能让它工作。
div
里面,它也保存着图像,你可以浮动图像,浮动一些div
的固定宽度到图像的左右,然后让这些div
通过设置一些负边距切入图像。
下面是一个示例jsFiddle来演示这种方法。当您调整结果窗口的大小(从而改变主图像的大小)时,您将看到图像保留在主图像的角落里。