我想我的div调整它的高度,总是等于它的宽度。宽度是百分数。当父元素的宽度减小时,盒子应该通过保持其纵横比减小。
这是CSS怎么做的?
我想我的div调整它的高度,总是等于它的宽度。宽度是百分数。当父元素的宽度减小时,盒子应该通过保持其纵横比减小。
这是CSS怎么做的?
当前回答
另一种方法是在div中使用透明的1x1.png,宽度:100%,高度:auto,并在其中绝对定位内容:
html:
<div>
<img src="1x1px.png">
<h1>FOO</h1>
</div>
css:
div {
position: relative;
width: 50%;
}
img {
width: 100%;
height: auto;
}
h1 {
position: absolute;
top: 10px;
left: 10px;
}
Fidle: http://jsfiddle.net/t529bjwc/
其他回答
适用于几乎所有浏览器。
你可以试着按百分比给衬底。
<div style="height:0;width:20%;padding-bottom:20%;background-color:red">
<div>
Content goes here
</div>
</div>
外部div正在制作一个正方形,内部div包含内容。这个方法对我奏效过很多次。
这是jsfiddle
这就像指定一个与宽度相同大小的填充底部一样简单。所以如果你的宽度是50%,就使用下面的例子
id or class{
width: 50%;
padding-bottom: 50%;
}
这是一个jsfiddle http://jsfiddle.net/kJL3u/2/
编辑版本与响应文本:http://jsfiddle.net/kJL3u/394
HTML
<div class='square-box'>
<div class='square-content'>
<h3>test</h3>
</div>
</div>
CSS
.square-box{
position: relative;
width: 50%;
overflow: hidden;
background: #4679BD;
}
.square-box:before{
content: "";
display: block;
padding-top: 100%;
}
.square-content{
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
color: white;
text-align: center;
}
http://jsfiddle.net/38Tnx/1425/
为了达到你想要的效果,你可以使用viewport-percentage length vw。
下面是我在jsfiddle上做的一个快速示例。
HTML:
<div class="square">
<h1>This is a Square</h1>
</div>
CSS:
.square {
background: #000;
width: 50vw;
height: 50vw;
}
.square h1 {
color: #fff;
}
我相信有很多其他的方法可以做到这一点,但对我来说,这种方法似乎是最好的。
另一种方法是在div中使用透明的1x1.png,宽度:100%,高度:auto,并在其中绝对定位内容:
html:
<div>
<img src="1x1px.png">
<h1>FOO</h1>
</div>
css:
div {
position: relative;
width: 50%;
}
img {
width: 100%;
height: auto;
}
h1 {
position: absolute;
top: 10px;
left: 10px;
}
Fidle: http://jsfiddle.net/t529bjwc/