純Css實現(xiàn)Div高度根據(jù)自適應寬度(百分比)調(diào)整
在如今響應式布局的要求下,很多能自動調(diào)整尺寸的元素能夠做到高寬自適應,如img,通過{width:50%;height:auto;}實現(xiàn)圖片高度跟隨寬度比例調(diào)整。
然而,用的最多的標簽一哥Div卻不能做到自動調(diào)整(要么從父級繼承,要么自行指定px,要么給百分比!但是這個百分比是根據(jù)父級的高度來計算的,根本不是根據(jù)元素自身的寬度,那么就做不到Div的寬高達成一定的比例=-=)。
要實現(xiàn)這種功能(div的高度:寬度=1:1),通過各種加Buff,得知有以下幾種處理方式
1,直接指定div的寬高+zoom來實現(xiàn)自適應
div{width:50px;heigth:50px;zoom:1.1;}
這樣能達到初步的等寬高div,但是局限性太大,PASS!
2,通過js動態(tài)判斷div的寬度來設置高度
div{width:50%;}
window.onresize = function(){div.height(div.width);}
也能實現(xiàn)等寬高div,但是總覺得有點別扭,PASS!
3,通過寬高單位來設置
div{width:20vw;height:20vw;/*20vw為viewport width的20%*/}
但是很多設備不支持這個屬性,兼容性太差,PASS!
4,通過float來設置
#aa{background:#aaa;;}
#bb{background:#ddd;;float:left}
#cc{background:#eee;;float:right}
<div id="aa">父div
<div id="bb">子div</div>
<div id="cc">子div</div>
<div style="clear:both">就是這個用于clear錯誤的</div>
</div>
能夠讓父級元素aa根據(jù)子元素的高度自動改變高度(在子元素里放置自適應元素)來調(diào)整高寬比一致,然而太麻煩,PASS!
5,終于到最終大殺器了,通過padding來實現(xiàn)此功能
通過以上幾個方案的實驗,發(fā)現(xiàn)寬度的自適應是根據(jù)viewport的width來調(diào)整的,比如{width:50%}就是瀏覽器可視區(qū)域的50%,resize之后也會自動調(diào)整。
而height指定百分比后,他會自行找到viewport的height來調(diào)整,跟width一毛錢關系沒有,自然兩者不能達到比例關系了。通過這個思路,要找到一個能跟viewport的width扯上裙帶關系的屬性,就能解決這個問題了。
這個屬性就是padding,padding是根據(jù)viewport的width來調(diào)整的,巧就巧在padding-top和padding-bottom也是根據(jù)viewport的width來計算的,那么通過設置這個屬性就能跟width達成某種比例關系了,
我們首先指定元素的width為父級元素的50%(父級元素為任意有高寬的元素,不能指定特定父級元素,否則影響此方案的通用性)
.father{width:100px;height:100px;background:#222}
.element{width:50%;background:#eee;}
這個時候我們再設置element的height為0,padding-bottom:50%;
.element{width:50%;height:0;padding-bottom:50%;background:#eee;}
element就變成了一個寬度50%,高度為0(但是他有50%width的padding-bottom)的正方形了,效果如下圖灰白色的div

這個時候可能有人要問了,這個div的高度為0,那如果我要在element里放置元素呢,那豈不是overflow了,這里就要提到overflow屬性了,它的計算是包括div的content和padding的,也就是說,
原來你的div可能是個{width:50px;height:50px;padding:0}的div,現(xiàn)在變成{width:50px;height:0;padding-bottom:50px;}的div了,尺寸還是一樣的,通過指定這個div的子元素的定位,一樣可以正常顯示

這樣就可以通過設定父級元素father、我們需要的元素element、子級元素datail來實現(xiàn)任意情況下該需求(div寬高定比例)。
到此這篇關于純Css實現(xiàn)Div高度根據(jù)自適應寬度(百分比)調(diào)整的文章就介紹到這了,更多相關Css Div高度根據(jù)自適應寬度調(diào)整內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持腳本之家!
相關文章
css和css3彈性盒模型實現(xiàn)元素寬度(高度)自適應
這篇文章主要介紹了css和css3彈性盒模型實現(xiàn)元素寬度(高度)自適應的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋2019-05-15- 對象height:100%并不能直接產(chǎn)生效果,是因為跟其父對象有關,下面有個示例為大家詳細介紹下,感興趣的朋友可以參考下2013-09-04
CSS min-height IE6、IE7、FF下DIV自適應高度
IE6、IE7、FF下DIV自適應高度2010-05-13- 翻譯自Matthew James Taylor的Equal Height Columns with Cross-Browser CSS and No Hacks,有些部分根據(jù)我的理解改了,讓一些初心者更好理解。2009-11-12
- 用css控制textarea文本域的高度隨內(nèi)容的變化而變化,不出現(xiàn)滾動條.2009-07-11
- 今天有人問起,晚上試著寫出來,供參考; 以下代碼兼容主流瀏覽器IE6、IE7、Firefox、Opera。 從最簡單的開始………… 一、如何讓一個DIV水平居2009-04-04

CSS 實現(xiàn)高度自適應鋪滿整屏的實現(xiàn)
這篇文章主要介紹了CSS 實現(xiàn)高度自適應鋪滿整屏的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學2020-11-23

