日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

div 自定义拉宽_纯Css实现Div高度根据自适应宽度(百分比)调整

發(fā)布時間:2024/3/13 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 div 自定义拉宽_纯Css实现Div高度根据自适应宽度(百分比)调整 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在如今響應(yīng)式布局的要求下,很多能自動調(diào)整尺寸的元素能夠做到高寬自適應(yīng),如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)自適應(yīng)

div{width:50px;heigth:50px;zoom:1.1;}

這樣能達到初步的等寬高div,但是局限性太大,PASS!

2,通過js動態(tài)判斷div的寬度來設(shè)置高度

div{width:50%;}

window.onresize = function(){div.height(div.width);}

也能實現(xiàn)等寬高div,但是總覺得有點別扭,PASS!

3,通過寬高單位來設(shè)置

div{width:20vw;height:20vw;/*20vw為viewport width的20%*/}

但是很多設(shè)備不支持這個屬性,兼容性太差,PASS!

4,通過float來設(shè)置

#aa{background:#aaa;;}

#bb{background:#ddd;;float:left}

#cc{background:#eee;;float:right}

父div 子div 子div 就是這個用于clear錯誤的

能夠讓父級元素aa根據(jù)子元素的高度自動改變高度(在子元素里放置自適應(yīng)元素)來調(diào)整高寬比一致,然而太麻煩,PASS!

5,終于到最終大殺器了,通過padding來實現(xiàn)此功能

通過以上幾個方案的實驗,發(fā)現(xiàn)寬度的自適應(yīng)是根據(jù)viewport的width來調(diào)整的,比如{width:50%}就是瀏覽器可視區(qū)域的50%,resize之后也會自動調(diào)整。

而height指定百分比后,他會自行找到viewport的height來調(diào)整,跟width一毛錢關(guān)系沒有,自然兩者不能達到比例關(guān)系了。通過這個思路,要找到一個能跟viewport的width扯上裙帶關(guān)系的屬性,就能解決這個問題了。

這個屬性就是padding,padding是根據(jù)viewport的width來調(diào)整的,巧就巧在padding-top和padding-bottom也是根據(jù)viewport的width來計算的,那么通過設(shè)置這個屬性就能跟width達成某種比例關(guān)系了,

我們首先指定元素的width為父級元素的50%(父級元素為任意有高寬的元素,不能指定特定父級元素,否則影響此方案的通用性)

.father{width:100px;height:100px;background:#222}

.element{width:50%;background:#eee;}

這個時候我們再設(shè)置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的子元素的定位,一樣可以正常顯示

這樣就可以通過設(shè)定父級元素father、我們需要的元素element、子級元素datail來實現(xiàn)任意情況下該需求(div寬高定比例)。

參考:http://zihua.li/2013/12/keep-height-relevant-to-width-using-css/

總結(jié)

以上是生活随笔為你收集整理的div 自定义拉宽_纯Css实现Div高度根据自适应宽度(百分比)调整的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。