今天在開發時遇到一個問題,如何使高度等於百分比的寬度。原本的想法是通過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 }