日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

关于width: 100%的一些看法

發(fā)布時(shí)間:2023/12/6 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于width: 100%的一些看法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.position對width 設(shè)置為百分比的影響

<html><head><style type="text/css">img {width: 50%}body {margin: 8px;}</style> </head><body><div style=" min-height: 10px; background: red; "><div><img src="/i/eg_smile.gif" /></div></div></body></html>復(fù)制代碼

如下圖所示,首先我們有一個(gè)圖片被兩層div給包裹,而body有一個(gè)margin,圖片寬度為50%,最外層的div有一個(gè)最小高度(用于后面的測試,當(dāng)img設(shè)置了其他position之后可能高度塌陷);


1.當(dāng)不設(shè)置position的時(shí)候,img的50%是相對父元素(也就是第二層的div)的寬度的50%;因?yàn)樽钔鈱雍偷诙拥膶挾任丛O(shè)置,就是auto,就是自動鋪滿的2.對img的position進(jìn)行修改,發(fā)現(xiàn)當(dāng)為relative的時(shí)候,寬度不變(仍相對于父元素),但當(dāng)position為fixed和absolute的時(shí)候?qū)挾茸兇罅?因?yàn)檫@時(shí)候不是相對父元素了);經(jīng)驗(yàn)證當(dāng)為fixed的時(shí)候,相對于body;當(dāng)為absolute的時(shí)候?qū)挾仁窍鄬τ谧孑呍刂械谝粋€(gè)非static元素的寬度百分比直到body;
上面只是確定了是基于哪個(gè)元素的百分比.其實(shí)position為fixed和absolute時(shí),可能還會影響到其他的,先看第二點(diǎn).

二.border-box對width 設(shè)置為百分比的影響

<!DOCTYPE html> <html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title>測試border-box對百分比寬度的影響</title><style type="text/css">* {box-sizing: border-box;}.parent {background: steelblue;padding: 20px;width: 500px;}.child {background: wheat;height: 50px;width: 100%;padding: 10px;}</style> </head><body><div class="parent"><div class="child"></div></div> </body></html>復(fù)制代碼


1.如下圖所示,當(dāng)div都為border-box;時(shí),計(jì)算子元素的100%寬度,是相對于父元素的內(nèi)容的寬度;即: 子元素content width + 子元素padding width + 子元素border = 父元素content width * 百分比;(440px + 10px * 2 + 0 = 460px * 100%)所以當(dāng)都為border-box的時(shí)候,子元素在設(shè)置了width為100%,在不設(shè)置margin的情況下,子元素不會溢出父元素;
額外補(bǔ)充,當(dāng)元素為border-box時(shí),設(shè)置的寬度為內(nèi)容寬度+padding寬度+border寬度的總和,所以parent元素的總寬度為500px,內(nèi)容寬度為460px,padding寬度為40px;



2.如下圖,當(dāng)div都為content-box時(shí),子元素計(jì)算的100%寬度,是相對于仍然為父元素的內(nèi)容的寬度;雖然都是內(nèi)容的寬度并且width都通過樣式設(shè)置為了500px,但border-box設(shè)置的是盒子除去margin所占的總寬度(內(nèi)容寬度需要用500px減去padding),而content-box時(shí)設(shè)置的寬度為盒子的內(nèi)容寬度,所以child的寬度直接就為500px,但child所占的總寬度為600px(內(nèi)容寬度+padding寬度,為了更明顯padding設(shè)為了50px),導(dǎo)致child溢出
額外補(bǔ)充,,當(dāng)元素為content-box時(shí),設(shè)置的寬度為內(nèi)容寬度寬度,所以Parent元素的總寬度需要計(jì)算:內(nèi)容寬度+padding寬度+border寬度的總和,就是500px+40px+0=540px. 對content-box的盒子設(shè)置width時(shí),設(shè)置的是內(nèi)容寬度,而對border-box的盒子設(shè)置width時(shí),設(shè)置的是總的寬度(內(nèi)容寬度+padding寬度+border寬度)


3.最后再聲明一點(diǎn),寬度的計(jì)算方式都是根據(jù)父元素的內(nèi)容寬度來計(jì)算的,至于這個(gè)百分比寬度是否包括padding,就只和子元素的box-sizing有關(guān)了,父元素的box-sizing不同也沒有關(guān)系(但父元素的自身的box-sizing和自身寬度計(jì)算有關(guān),所以算是間接關(guān)系吧,也可以說沒關(guān)系);比如上面那個(gè)例子,如果我把child設(shè)置為border-box,那么child的寬度為500px,因?yàn)槭莃order-box,所以設(shè)置的是總的寬度,即500px=內(nèi)容寬度+padding寬度,所以可以推出內(nèi)容寬度為400px

三.position的其他影響

我們通過做第二個(gè)實(shí)驗(yàn)的時(shí)候,重新做第一個(gè)例子

<!DOCTYPE html> <html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title>測試border-box對百分比寬度的影響</title><style type="text/css">* {box-sizing: border-box;}.child {width: 100%;background: wheat;height: 20px;position: absolute;}.parent {padding: 20px;background: steelblue;width: 500px;position: relative;}.grad {padding: 20px;background: turquoise;}body {margin: 0px;}</style> </head><body><div class="grad"><div class="parent"><div class="child"></div></div></div> </body></html>復(fù)制代碼


我們發(fā)現(xiàn)child元素的總寬度為500px,內(nèi)容寬度為而Parent的總寬度為500px,內(nèi)容寬度卻只有460px,所以child的寬度不是我們說的集成父元素的內(nèi)容寬度,而是父元素的總的寬度

四.總結(jié)


0.什么時(shí)候起作用?子元素肯定要是塊級元素或則display為block等情況.1.基于誰?基于父元素或祖輩元素(跟當(dāng)前元素的position有關(guān)),position為absolute則基于第一個(gè)非static祖輩元素,為fixed則基于body2.子元素的寬度是基于父元素(或者說目標(biāo)元素)的內(nèi)容寬度還是總的盒子的寬度?當(dāng)子元素的position為absolute或fixed的時(shí)候,width為總的寬度(padding寬度+ 內(nèi)容寬度+border寬度),而其他情況都是基于目標(biāo)元素的內(nèi)容寬度3.子元素的百分比寬度樣式設(shè)置的是子元素的內(nèi)容寬度還是總的寬度?這個(gè)只跟子元素的box-sizing有關(guān),當(dāng)為border-box的時(shí),設(shè)置的是盒子的總寬度,當(dāng)為content-box是設(shè)置的盒子的內(nèi)容寬度4.若父元素寬度固定,子元素的寬度怎么計(jì)算?若不固定怎么計(jì)算?當(dāng)父元素寬度確定時(shí),子元素的寬度百分比能很好計(jì)算出來(包括父元素寬度固定,子元素設(shè)置為float),只用根據(jù)上面三點(diǎn)計(jì)算;當(dāng)父元素的寬度不確定時(shí),父元素會自動鋪滿上層元素,但當(dāng)父元素position為absolute或fixed或浮動時(shí),父元素的寬度會縮到最小,這時(shí)子元素的寬度不好計(jì)算,有可能為0,有可能其他子元素把父元素的寬度撐開,這時(shí)子元素也有寬度



以上是本人觀察到的情況,不知道是否完全正確



轉(zhuǎn)載于:https://juejin.im/post/5cdcf5cff265da039a3d9596

總結(jié)

以上是生活随笔為你收集整理的关于width: 100%的一些看法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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