我希望我的图像在窗口高度变化时调整大小,同时保持包含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属性,它实际上就会这样做。
以下是fiddle(尝试调整结果面板的大小)
更新
现在这很奇怪。自从我第一次发布此问题以来,浏最初(Chrome),当我调整窗口大小时,图像将按预期成比例缩小,但包装div将保持其原始宽度。现在发生了什么(Chrome更新?)是图像不会水平缩小,而div也是。
我尝试使用最新的Safari和Firefox。两者缩小图像但保持原始div宽度。所以请善待在其他浏览器上查看您的解决方案。
更新#2:
div必须保持块类型,因为我需要在图像的角落放置其他元素。
答案 0 :(得分:3)
我猜你不得不诉诸JavaScript:
$(window).on('resize', function (){
$('div').width($('img').width());
});
<强> JSFIDDLE 强>
答案 1 :(得分:3)
您只需将图片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%;
}
修改强>
更新了CSS
类的img
,使图片适合完整的div。
这是working solution for the edit。
img {
max-height: 100%;
max-width: 100%;
height: 100%;
display:block;
}
希望这有助于。
答案 2 :(得分:1)
我对你的小提琴有一点了解,但我不认为浏览器会根据图像宽度改变宽度来改变div
的宽度,我尝试了一些事情,但无法让它工作。
但是,我可以提出另一种方法,将元素放置在自动调整大小的图像的角落。您可以只浮动图像并将一些固定宽度的div
浮动到图像的右侧和左侧,而不是将这些元素放置在同时保持图像的div
内。然后通过设置一些负边距将这些div
剪切成图像。
这是一个示例 jsFiddle ,演示了这种方法。当您调整结果窗口的大小(从而改变主图像的大小)时,您会看到图像停留在主图像的角落。
<强> HTML 强>
<div class="right">
<img src="..." />
<img src="..." />
</div>
<img src="http://akamaicovers.oreilly.com/images/9780596806767/cat.gif" alt="" />
<div class="left">
<img src="..." />
<img src="..." />
</div>
<强> CSS 强>
html, body {
height: 100%;
width: 100%;
}
img {
height: 90%;
float: left;
}
div {
float: left;
width: 40px;
position: relative;
z-index: 1;
height: 90%;
}
div.left {
margin-left: -40px;
}
div.right {
margin-right: -40px;
}
div > img {
padding: 3px;
border: 2px dashed blue;
width: 30px;
height: 30px;
}
div > img:last-child {
bottom: 0px;
right: 0px;
position: absolute;
}
答案 3 :(得分:0)
您希望将图片宽度设置为100%。使用它。
img {
height: 100%;
width: 100%;
}
答案 4 :(得分:0)
当您以%为单位提供div的宽度和高度时,它会根据页面大小调整大小。并且图像大小(%)相对于div的宽度和高度。我将div高度保持在可用空间的90%,宽度保持在50%。图像的高度和宽度均为90%,因此您可以看到图像和div部分的重新调整大小。
html, body {
height: 100%;
width: 100%;
}
div {
height: 90%;
background-color: black;
width:50%;
}
img {
height: 90%;
width: 90%;
}
答案 5 :(得分:0)
您必须更新为图像目的而编写的CSS
img {
max-height: 100%;
max-width:100%;
}
答案 6 :(得分:0)
如果我理解正确,你想按高度调整图像大小但保持比例大小?
如果是这样,请使用:
img {
height: 100%;
display: inline-block;
}
您可能想要使用display:block;同样,根据您的需要。
答案 7 :(得分:0)
我更新了fiddle
,Img代码自我关闭,可能会导致错误...,
并且如果图像具有指定的尺寸高度和宽度,那么它也将调整大小,并且当我放大/缩小时相应的div高度增加/减少90%
我希望这是答案,因为我已经理解了包装和重新调整尺寸, 请回复,如果不工作..
答案 8 :(得分:0)
添加这个小黑客对我有用。根据我的理解,它强制浏览器重绘/重排其内容。 Fiddle。我无法弄清楚为什么这不是由浏览器自动完成的。在Firefox,Chrome和Safari上测试。
window.onresize = function() {
$(".thumb").each(function() {
this.style.display = "none";
this.offsetWidth;
this.style.display= "inline-block";
})
}