我想让容器宽度缩小到图像的大小。高度以相对于浏览器窗口的百分比给出。
.img
{
width: auto;
height:100%;
}
.container
{
height:100%;
width:auto;
}
这是小提琴:
display:table
,就像在类似的情况下不起作用,因为作为表格单元格,图像始终显示其原始大小的 100%。
我想让容器宽度缩小到图像的大小。高度以相对于浏览器窗口的百分比给出。
.img
{
width: auto;
height:100%;
}
.container
{
height:100%;
width:auto;
}
这是小提琴:
display:table
,就像在类似的情况下不起作用,因为作为表格单元格,图像始终显示其原始大小的 100%。
自从我提出这个问题后,我取得了一些进展,解决方案非常简单:只需添加 float:left。
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html,
body {
height:100%;
width:100%;
}
.container {
background: green;
float: left;
height: 100%;
}
.img {
width:auto;
height:100%;
}
即使图像具有百分比高度,容器也会按预期缩小。 http://jsfiddle.net/EdgKr/74/
但它很容易被打破,例如,如果你添加填充。 http://jsfiddle.net/EdgKr/72/
我想我可以更好地解决这个问题。请检查我的代码:
<!DOCTYPE HTML>
<html>
<head>
<title>Knowledge is Power</title>
<style type="text/css">
* {
-webkit-box-sizing: border-box; /* Android = 2.3, iOS = 4 */
-moz-box-sizing: border-box; /* Firefox 1+ */
box-sizing: border-box; /* Chrome, IE 8+, Opera, Safari 5.1 */
}
html, body
{
height:100%;
width:100%;
padding:10px;
}
.container {
padding:0;
background:green;
}
.img {
display: inline;
height:100%;
}
</style>
</head>
<body>
<span class="container">
<img class="img" src="a.jpg"/>
</span>
</body>
</html>
我知道(或此刻能想到的)使容器与其内容的大小匹配的唯一方法是通过float
ing 它。如果这是一个选项,那可能会得到你想要的。(这是您更新的小提琴,已float:left;
添加到.vertainer
http://jsfiddle.net/EdgKr/61/)
如果你只是想让容器匹配图像的高度和宽度,也就是收缩包装,有几个选项:
浮动:左/右,显示:内联块,显示:表格,位置:绝对;
如果没有指定宽度,每一个都会导致收缩包装效果。
我建议为此使用 inline-block。
此外,似乎 display:table 工作得很好:
http://jsbin.com/isayar/1/edit
但是 IE7 不支持它,所以我个人会使用 inline-block 代替。