css中如何规定某一元素高度等于其宽度

假设我定义某元素的宽度为父元素的50%,而父元素的宽度是可变化的,我想让该元素的高度等于其宽度,如果不用js,要如何实现?

.attr{
  width:50%;
}
阅读 71.9k
5 个回答

可以这样试试

html<style type="text/css">
#container {
    width: 80%;
    height: 500px;
}

.attr {
    width: 50%;
    height: 0;
    padding-bottom: 50%;
    background-color: #008b57;
}
</style>



<div id='container'>
    <div class='attr'></div>
</div>



可以用css3的calc

.attr{
  width:50%;
  height: calc(width);
}

我建议你去看一下CSS3的弹性盒 http://segmentfault.com/a/1190000000707526

之前理解错你的意思了,如果不用JS的话,并没有想到好的解决办法

建议还是用JS实现吧,一行代码就解决了

<script type="text/javascript">
$(document).ready(function(){
    $('#box1').css('height',$('#box1').css('width'));
})
</script>
<style type="text/css">
#box{
    width: 900px;
    height: 400px;
    border:1px solid red;
}
#box1{
    width:50%;
    border:1px solid green;
}
</style>
<body>
<div id='box'>
    <div id='box1'></div>
</div>
</body>
新手上路,请多包涵

width:50vw;
height:50vw;

推荐问题
宣传栏