我希望我的div能够调整其高度以始终等于其宽度。宽度是百分比。当父级宽度减小时,框应该通过保持其宽高比来减少。
如何做到这一点是CSS?
答案 0 :(得分:174)
适用于几乎所有浏览器。
您可以尝试将padding-bottom
作为百分比。
<div style="height:0;width:20%;padding-bottom:20%;background-color:red">
<div>
Content goes here
</div>
</div>
外部div正在制作一个正方形,而内部div包含内容。这个解决方案多次为我工作。
这是jsfiddle
答案 1 :(得分:158)
要实现您的目标,您可以使用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;
}
我确信还有很多其他方法可以做到这一点,但这种方式对我来说似乎是最好的。
答案 2 :(得分:43)
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;
}
答案 3 :(得分:31)
指定填充底部的宽度与宽度的百分比一样简单。因此,如果您的宽度为50%,请使用下面的示例
id or class{
width: 50%;
padding-bottom: 50%;
}
这是一个jsfiddle http://jsfiddle.net/kJL3u/2/
带有自适应文字的已修改版本:http://jsfiddle.net/kJL3u/394
答案 4 :(得分:5)
另一种方法是在width: 100%
中使用带有height: auto
,div
的透明1x1.png,并在其中使用绝对定位的内容:
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;
}
答案 5 :(得分:2)
这就是我想出的。这是a fiddle。
首先,我需要三个包装元素用于方形和居中文本。
<div><div><div>Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat
volutpat.</div></div></div>
这是样式表。它使用了两种技术,一种用于square shapes,另一种用于centered text。
body > div {
position:relative;
height:0;
width:50%; padding-bottom:50%;
}
body > div > div {
position:absolute; top:0;
height:100%; width:100%;
display:table;
border:1px solid #000;
margin:1em;
}
body > div > div > div{
display:table-cell;
vertical-align:middle; text-align:center;
padding:1em;
}