css(二)一些基本概念

《CSS的世界》不是一本文檔書(shū),他更多的是對(duì)css的理解認(rèn)知,但是其中還是出現(xiàn)了很多我沒(méi)有完全理解或者之前沒(méi)有聽(tīng)過(guò)的名詞/概念,這邊先把這些概念列下來(lái)。

1. 元素

html的標(biāo)簽有很多,像常見(jiàn)的<div>、<span>、<li>等等,通常分成兩類(lèi):

  • 塊級(jí)元素
  • 內(nèi)聯(lián)元素
    根據(jù)內(nèi)容還可分為
  • 替換元素
  • 非替換元素
1.1. 塊級(jí)元素

常見(jiàn)的有<div>、<li>和<table> 等。
特征:每個(gè)元素占一行,可以設(shè)置寬高
值得注意的是,塊級(jí)元素和display: block不是一個(gè)概念,比如上面提到的li它的display值就是list-item,table的display值是table,但是他們都是塊級(jí)元素。

1.2. 內(nèi)聯(lián)元素

常見(jiàn)的有<span>、<button>、<input>、<img>
特征:可以和文字在一行顯示
浮動(dòng)元素是內(nèi)聯(lián)元素嗎?不是的,浮動(dòng)元素在文檔流之外,并不是和文字在一行顯示。

1.3. 替換元素

顧名思義,內(nèi)容可以被替換的元素,都是內(nèi)聯(lián)元素。
常見(jiàn)的有<input>, <textarea>, <img>, <video>, <object>, <video>, <iframe>。
另外content屬性生成的對(duì)象稱(chēng)為匿名替換元素,所以content屬性生成的內(nèi)容也都是替換元素。
替換元素除了內(nèi)容可替換,還有一些特征區(qū)別于非替換元素,比如有自己的尺寸

不同尺寸的img

<img src={kitty} />
<img src={kitty} height={200} />
<img src={kitty} height={200} style={{height: '300px'}} />

2. 盒子

每個(gè)元素都有兩個(gè)盒子:

  • 外在盒子 負(fù)責(zé)元素是一行顯示,還是換行顯示
  • 內(nèi)在盒子 負(fù)責(zé)寬高和內(nèi)容,又稱(chēng)為容器盒子
    內(nèi)在盒子又被分成四個(gè)盒子:
  • content box
  • padding box
  • border box
  • margin box
    很多時(shí)候我們給元素設(shè)置寬高,但最終發(fā)現(xiàn)真是高度跟設(shè)置的可能不一樣,就是因?yàn)閷捀咦饔迷诓煌凶由蠈?dǎo)致的
    按照我們一般人的思維,我設(shè)置了30px的寬度,應(yīng)該是連同border、padding、content一起30px,但如果box-sizing設(shè)置為content-box(瀏覽器默認(rèn)就是content-box),那么width就只作用在content上,如果外面還有border、padding,那么實(shí)際尺寸肯定會(huì)比設(shè)定要大。
    我們可以通過(guò)寬度分離的方式來(lái)解決,也就是把width跟border、padding分開(kāi)來(lái),給width多一層標(biāo)簽。
    另外就是可以給box-sizing設(shè)置border-box,書(shū)中評(píng)價(jià)了*{box-sizing:border-box}這種做法,認(rèn)為:
  • (1)這種做法易產(chǎn)生沒(méi)必要的消耗
  • (2)這種做法并不能解決所有問(wèn)題
    而下面這兩篇文章都表達(dá)了對(duì)這種寫(xiě)法的支持
    My Custom CSS Reset
    * { Box-sizing: Border-box } FTW
    嗯,我覺(jué)得他們說(shuō)的都對(duì)
    哦,順便提一句:* { } doesn't apply to pseudo elements,所以如果要寫(xiě)*, *:before, *:after {}

3. 關(guān)鍵字:

舉幾個(gè)常見(jiàn)的例子比如transparent,solid等

泛關(guān)鍵字(所有屬性都可以使用的關(guān)鍵字):initial(初始)、inherit(繼承)、unset(未設(shè)置)、revert(還原)
(all: 表示重設(shè)除unicode-bidi和direction之外的所有CSS屬性的屬性值,取值只能是initial、inherit、unset和revert。)

4. 選擇器

選擇器 符號(hào)
后代 空格
相鄰后代 >
兄弟(后面的兄弟)
相鄰兄弟 +

利用+可以實(shí)現(xiàn)一些從第二個(gè)元素開(kāi)始生效的樣式

.box {
  + .box {
    margin-top: 20px
  }
}

5. 塊狀格式化上下文元素(6.3)

BFC全稱(chēng)為block formatting context,中文為“塊級(jí)格式化上下文”。相對(duì)應(yīng)的還有IFC, 也就是inline formatting context,中文為“內(nèi)聯(lián)格式化上下”。

這個(gè)在上一篇文檔流中有講到

6. 偽元素

最常見(jiàn)的::after、::before,還有::first-letter、::first-line
用于插入內(nèi)容,不受文檔約束,也不影響文檔本身,只影響最終的樣式。

Z. 參考

張?chǎng)涡瘢瓹SS的世界[J].
My Custom CSS Reset
* { Box-sizing: Border-box } FTW
怎樣理解 CSS :after 偽元素的作用?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • HTML&CSS已經(jīng)學(xué)習(xí)完了,有一些東西已經(jīng)熟記于心了,但也不免會(huì)有一些知識(shí)點(diǎn)或易混淆或易于遺忘,下面我來(lái)把自己這...
    Uniquelah閱讀 257評(píng)論 0 0
  • 1.塊級(jí)元素和行內(nèi)元素 塊級(jí)(block-level)元素;行內(nèi)(內(nèi)聯(lián)、inline-level)元素。 塊元素的...
    饑人谷_小侯閱讀 2,200評(píng)論 1 4
  • 我想你每天寫(xiě)css代碼有時(shí)候也會(huì)覺(jué)得很痛苦:這個(gè)布局的css怎么這么難實(shí)現(xiàn)!我也經(jīng)常會(huì)有這種感覺(jué),一個(gè)看似簡(jiǎn)單的布...
    程序猿TODO閱讀 835評(píng)論 0 0
  • CSS全稱(chēng):Cascading Style Sheets 層疊樣式表 /rel=relationship/ htm...
    astak3閱讀 690評(píng)論 1 0
  • Sass 是對(duì) CSS 的擴(kuò)展,讓 CSS 語(yǔ)言更強(qiáng)大、優(yōu)雅。 它允許你使用變量、嵌套規(guī)則、mixins、導(dǎo)入等眾...
    八寶君閱讀 2,136評(píng)論 0 1

友情鏈接更多精彩內(nèi)容