1. 程式人生 > 其它 >CSS的三大特徵&標籤的顯示模式

CSS的三大特徵&標籤的顯示模式

CSS的三大特徵

1.1 CSS層疊性

概念:是指CSS樣式的層疊。這種特性只針對出現樣式衝突的情況,遵循就近原則顯示樣式。

比如:如果一個屬性通過兩個相同選擇器設定到同一個元素上,那麼這個時候一個屬性就會將另一個屬性層疊掉。

簡單來講就是:長江後浪推前浪,只顯後浪無前浪。

1.2 CSS繼承性

概念:子標籤會繼承父標籤的某些樣式,想要設定一個可繼承的屬性,只需將它應用於父元素即可(子承父業)。

優點:恰當地使用繼承可以簡化程式碼,降低CSS樣式的複雜性。

比如有很多子級孩子都需要某個樣式,可以給父級指定一個,這些孩子繼承過來就好了。

一般用於對文字、字型、顏色等屬性可以使用。

text-,font-,line-這些元素開頭的可以繼承,以及color屬性

簡單來講就是:龍生龍,鳳生鳳,老鼠的兒子會打洞。

1.3 CSS優先順序

概念:定義CSS樣式時,經常出現兩個或更多規則應用在同一元素上,此時,

  • 選擇器相同,則執行層疊性

  • 選擇器不同,就會出現優先順序的問題

優先順序(權重)計算:

1.3.1 權重計算公式

標籤選擇器 計算權重公式

值從左到右,左面的最大,一級大於一級。

數位之間沒有進位制,級別之間不可超越

關於CSS權重,我們需要一套計算公式來去計算,這個就是 CSS Specificity(特殊性)

div {color: pink!important

; }







繼承或者 * 0,0,0,0
每個元素(標籤選擇器) 0,0,0,1
每個類,偽類 0,0,1,0
每個ID 0,1,0,0
每個行內樣式 style="" 1,0,0,0
每個!important 重要的 ∞ 無窮大

1.3.2 權重疊加

經常用交集選擇器,後代選擇器等,是有多個基礎選擇器組合而成,那麼此時,就會出現權重疊加

就是一個簡單的加法計算

  • div ul li ------> 0,0,0,3

  • .nav ul li ------> 0,0,1,2

  • a:hover -----—> 0,0,1,1

  • .nav a ------> 0,0,1,1

數位之間沒有進位制 比如說: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0

, 所以不會存在10個div能趕上一個類選擇器的情況

CSS標籤的顯示模式

我們網頁的標籤非常多,在不同的地方會有不同的顯示需求。標籤的顯示模式表示標籤以什麼方式進行顯示。比如div 自己佔一行, 比如span 一行可以放很多個。

2.1塊級元素(block-level)

塊級元素的特點

  • 比較霸道,自己獨佔一行
  • 高度,寬度、外邊距以及內邊距都可以控制
  • 寬度預設是容器(父級寬度)的100%
  • 是一個容器及盒子,裡面可以放行內或者塊級元素

注意:

  • 只有文字才能組成段落 因此 p 裡面不能放塊級元素,特別是 p 不能放div
  • 同理還有這些標籤h1,h2,h3,h4,h5,h6,dt,他們都是文字類塊級標籤,裡面不能放其他塊級元素。
  • 即文字類塊級標籤裡不能再放其他塊級元素

2.2 行內元素(inline-level)

行內元素的特點:

  • 相鄰行內元素在一行上,一行可以顯示多個
  • 高、寬直接設定是無效的
  • 預設寬度就是它本身內容的寬度
  • 行內元素只能容納文字或則其他行內元素。

注意:

  • 連結裡面不能再放連結。
  • 特殊情況a裡面可以放塊級元素,但是給a轉換一下塊級模式最安全。

2.3行內塊元素(inline-block)

行內塊元素的特點:

  • 和相鄰行內元素(行內塊)在一行上,但是之間會有空白縫隙。一行可以顯示多個
  • 預設寬度就是它本身內容的寬度。
  • 高度,行高、外邊距以及內邊距都可以控制。

2.4 三種模式總結區別

元素模式 元素排列 設定樣式 預設寬度 包含
塊級元素 一行只能放一個塊級元素 可以設定寬度高度 容器的100% 容器級可以包含任何標籤
行內元素 一行可以放多個行內元素 不可以直接設定寬度高度 它本身內容的寬度 容納文字或則其他行內元素
行內塊元素 一行放多個行內塊元素 可以設定寬度和高度 它本身內容的寬度

2.5標籤顯示模式轉換 display

  • 塊轉行內:display:inline;

  • 行內轉塊:display:block;

  • 塊、行內元素轉換為行內塊: display: inline-block;