1骡技、元素的margin的top漆撞、bottom及padding的top厨内、bottom使用百分比作為單位時,其是相對父元素的寬度width的而不是我們想象的高度height独旷;
舉個例子:
其實出現(xiàn)這種現(xiàn)象,我們可以巧用margin/padding的百分比值實現(xiàn)高度自適應(多用于占位望几,避免閃爍)
其實說白了 就是容器margin/padding的百分比參照物是父元素的寬度邓夕,而容器的width的百分比參照物也是父元素的寬度,倆屬性參照物一致顷链;
當然該元素高度上的百分比是相對其父元素高度的百分比的目代,min-height及max-height也適用這條規(guī)律。
2嗤练、含有定位屬性的元素榛了,其top、bottom單位為百分比時煞抬,該百分比是相對于父元素的高度的霜大。同理,left战坤、right則是相對于父元素的寬度的。
這一點途茫,我昨天在查資料寫這篇文章---最全面的元素水平垂直居中方法匯總的時候就發(fā)現(xiàn)有個大牛也理解錯了----CSS布局奇淫技巧之--各種居中 里面的第八點溪食。
3囊卜、邊框寬度不允許使用百分比值
這點就不解釋了。
4眠菇、width:100%
當父容器里有 絕對定位 的子元素時边败,子元素設置width:100%實際上指的是相對于父容器的padding+content的寬度捎废。當時子元素的定位為fixed,子元素設置width:100%登疗,則子元素為瀏覽器寬度排截,除這些情況之外的定位方式,子元素width:100% 才是指子元素的 content 辐益,其等于父元素的 content寬度断傲。
將上面子元素的position改成了relative后智政,其寬度就變成了parent寬度。
https://codepen.io/anon/pen/RxWQNK
即使 父元素有border垦垂,也是這樣的情況:
.parent{
outline: 1px solid red;
height: 300px;
width: 200px;
margin: 5px;
padding: 10px;
position: relative;
border: 20px solid yellow;
}
.children{
outline: 1px solid blue;
height: 150px;
width: 100%;
position: absolute;
top: 0;
left: 0;
}
<div class="parent">父元素
<div class="children">子元素</div>
</div>
5、line-height
你知道line-height:150%和line-height:1.5的區(qū)別嗎劫拗?知道了就可以跳過此處,不知道繼續(xù)看下面:
舉個例子:
上面可以看到line-height有單位時憔足,子元素是繼承父元素的line-height的,無單位時滓彰,其line-height等于無單位的數(shù)值乘以子元素本身的字體大小欲逃。顯然為了不出現(xiàn)意外找蜜,還是建議首選無單位的稳析。
6、ex 和 ch 單位
ex:取當前作用效果的字體的x的高度彰居,在無法確定x高度的情況下以0.5em計算;
ch:以節(jié)點所使用字體中的“0”字符為基準陈惰,找不到時為0.5em;
ex 和 ch 單位井辆,類似于 em 和 rem, 依賴于當前的字體和字體大小溶握。 但是杯缺,不同的是睡榆,這兩貨是基于字體的度量單位,依賴于設定的字體胀屿。
ch 單位通常被定義為數(shù)字0的寬度。你可以在Eric Meyers的博客里找到關于它的一些有意思的討論宿崭,例如將一個等寬字體的字母”N”的寬度設置為40ch,那么在另一種類型的字體里它卻可以包含40個字母奖蔓。這個單位的傳統(tǒng)用途主要是盲文的排版琅摩,但是除此之外锭硼,肯定還有可以應用他的地方蜕劝。
ex 定義為當前字體的小寫x字母的高度或者 1/2 的 1em。 很多時候岖沛,它是字體的中間標志。
x-height; the height of the lower case x
這些單位有很多用途婴削,大部分用于版式的微調。比方說嗤朴,sup 元素(上角文字標),可以通過position:relative;bottom: 1ex;實現(xiàn) 雹姊。類似的方法,你可以實現(xiàn)一個下角文字標吱雏。瀏覽器默認的方式是利用
上標和下標特定垂直對齊規(guī)則瘾境,但是如果你想更細粒度更精確得控制歧杏,你可以像下面這樣做:
Css代碼
sup {
position: relative;
bottom: 1ex;
}
sub {
position: relative;
bottom: -1ex;
}
7迷守、使用calc 時運算符之間要有空格 ,否則可能無效
width: calc(100% - 20px); //注:減號前后要有空格盒犹,否則很可能不生效!急膀!
8、當body里面有含有margin的子元素處于body正常文檔流時慷暂,
那么body的大小不會包含處于最上部的元素的margin-top(會包含margin-left及margin-right)及最下部的元素的margin-bottom(會包含margin-left及margin-right),但是html卻都包含(也會包含margin-left及margin-right)行瑞;
例如:https://codepen.io/anon/pen/baVaya 或者https://codepen.io/anon/pen/VyvyJa
9、子元素浮動血久,且其高度設置100%,真實的高度其實沒有100%
https://stackoverflow.com/questions/3049783/how-to-make-a-floated-div-100-height-of-its-parent
擴展閱讀:
1氧吐、最全面的元素水平垂直居中方法匯總
2、12個很少被人知道的CSS事實
3座慰、Vertical Percentages in CSS
**本文版權歸本人即簡書筆名:該賬戶已被查封 所有翠拣,如需轉載請注明出處版仔。謝謝误墓! *