遇到一個題目:一個div寬度是固定百分比的情況下,如何設定高度是寬度的80%
看到題目的第一反應是用js控制,獲取到div的寬度之後再用寬度的80%來設定div的高度,但是如何在不用js的情況下,只用CSS來實現呢
下面是示例程式碼:
HTML程式碼:
<div class="outer"></div>
CSS程式碼:
.outer{
width: 30%;
background: #eee;
}
.outer:after{
content: '';
display: block;
padding-top: 80%;
}
效果如圖:
上圖中,寬度是高度的80%,那麼實現原理是什麼呢?
因為div的寬度是30%而沒有設定高度,當設定div的偽類padding-top是80%時,本該以高度為標準的,但是沒有高度便會預設以寬度為標準,
偽類的padding-top設定成80%便會把父元素撐開,此時div就算沒有設定高度也會被撐開,並且高度是寬度的80%;
那麼想實現一個響應式的正方形就容易多了,只要設定div的偽類padding-top是100%即可,這樣div將一直是一個正方形
最後總結一下:padding-top & padding-bottom 這兩個css屬性,父節點沒有固定高度,他們就會參照父節點的寬度來設定自己的百分比;
(組內大神總結出來的解決辦法,by新手小白的記錄)