如何让div的高度等于宽度


今天在开发时遇到一个问题,如何使高度等于百分比的宽度。原本的想法是通过js获取,但是这个方法感觉太麻烦,希望能用css做的事情就不要js去做。

完美的方案是通过padding来实现的。

原理

padding的定义:

padding属性设置一个元素的内边距,padding 区域指一个元素的内容和其边界之间的空间,该属性不能为负值。

取值
<长度>
可指定非负的固定宽度. See <length> for details.
<百分比>
相对于包含块的宽度

看最后一句话“相对于包含块的宽度”,意思是padding的百分比基数是包含块的宽度(父元素的宽度),如果父元素是100px,padding-top: 20%;就相当于padding-top: 20px。

应用

接下来根据这一特性开始实现让div的高度等于宽度。

假设是一个div占据屏幕中间90%的区域显示,图片比例是1:1。

首先画一个90%宽,比例为1:1的区域

1 div{
2     width: 90%;
3     height: 0;
4     margin: 0 auto;
5     padding-top: 90%;
6 }

图片要放置在这个区域,但是发现高度为0,通过绝对定位实现,

1 div>img{
2     position: absolute;
3     width: 100%;
4     height: 100%;
5     top: 0;
6     left: 0;
7 }

假设现在的图片比例是4:3,我们要怎么计算呢 90% / 4 * 3 = 67.5%,其他比例安装这个公式去计算就好。

下面是完整的代码和截取的一个小例子:

1 <div class="banner">
2   <img src="xxx.jpg"/>
3 </div>
 1 .banner{
 2   width: 90%;
 3   height: 0;
 4   margin: 0 auto;
 5   padding-bottom: 90%; 
 6   padding-bottom: 67.5%; /*4:3*/
 7   position: relative;
 8 }
 9 .banner > img{
10   position: absolute;
11   width: 100%;
12   height: 100%;
13 }

 

 038

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM