CSS3選擇器規範地址: https://www.w3.org/TR/2011/RE...
CSS3最新選擇器規範: https://www.w3.org/TR/selectors
css
!---問題---!html
1.CSS的全稱是什麼?
Cascading Style Sheetscss3
2.樣式表的組成:
CSS選擇器 + CSS聲明塊:(一個個CSS聲明:屬性名+屬性值)web
3.瀏覽器讀取編譯CSS的順序?
CSS選擇器的解析順序:從右往左。這樣作是爲了減小無效匹配次數,從而匹配快、性能更優。瀏覽器
*
,html
,.
,#
,空格
,>
,+
,~
,,
* {}
body {}
任何一個HTML元素.
.list {}
#
#list {}
.list li{}
,
隔開各個選擇器 h1,h2,h3{color: pink;}
此處的逗號咱們稱之爲結合符>
,也可稱爲直接後代選擇器,此類選擇器只能匹配到直接後代,不能匹配到深層次的後代元素。 #wrap > .inner {color: pink;}
+
,它只會匹配緊跟着的兄弟元素。 #wrap #first + .inner {color: #f00;}
~
,它會匹配全部的兄弟元素(不須要緊跟)。 #wrap #first ~ div { border: 1px solid;}
(1)存在 和 值 屬性選擇器
[attr]
:該選擇器選擇包含 attr
屬性的全部元素,不論 attr
的值爲什麼。
[attr=val]
:該選擇器僅選擇 attr
屬性被賦值爲 val
的全部元素。
[attr~=val]
:該選擇器僅選擇 attr
屬性的值(以空格間隔出多個值)中有包含 val
值的全部元素,好比位於被空格分隔的多個類(class)中的一個類。
(2)子串值屬性選擇器
[attr|=val]
: 選擇attr
屬性的值是val
(包括val
)或以val-
開頭的元素。
[attr^=val]
: 選擇attr
屬性的值以val
開頭(包括val
)的元素。
[attr$=val]
: 選擇attr
屬性的值以val
結尾(包括val
)的元素。
[attr*=val]
: 選擇attr
屬性的值中包含字符串val
的元素。ide
(1)連接僞類: 注意:link
,:visited
,:target
是做用於連接元素的!
:link
: 表示做爲超連接,並指向一個未訪問的地址的全部錨 。
:visited
:表示做爲超連接,並指向一個已訪問的地址的全部錨 。
:target
: 表明一個特殊的元素,它的id
是URI
的片斷標識符 。函數
(2)動態僞類 : 注意:hover
,:active
基本能夠做用於全部的元素!
:hover
: 表示懸浮到元素上。
:active
: 表示匹配被用戶激活的元素(點擊按住時)。
因爲a
標籤的:link
和:visited
能夠覆蓋了全部a
標籤的狀態,因此當:link
,:visited
,:hover
,:active
同時出如今a
標籤身上時 :link
和:visited
不能放在最後!!!
隱私與:visited
選擇器:只有下列的屬性才能被應用到已訪問連接: color
background-color
border-color
佈局
(3)表單相關僞類
:enabled
: 匹配可編輯的表單
:disable
: 匹配被禁用的表單
:checked
: 匹配被選中的表單
:focus
: 匹配獲焦的表單 性能
(4)結構性僞類
index
的值從1開始計數!!!!
index
能夠爲變量n
(只能是n
)
index
能夠爲even
、 odd
#wrap ele:nth-child(index)
:表示匹配#wrap
中第index
的子元素 這個子元素必須是ele
#wrap ele:nth-of-type(index)
:表示匹配#wrap
中第index
的ele
子元素
除此以外:nth-child
和:nth-of-type
有一個很重要的區別!!:nth-of-type
以元素爲中心!!!
字體
:nth-child(index)
系列
:first-child
:last-child
:nth-last-child(index)
:only-child
(相對於:first-child:last-child 或者 :nth-child(1):nth-last-child(1)):nth-of-type(index)
系列
:first-of-type
:last-of-type
:nth-last-type(index)
:only-of-type
(相對於:first-of-type:last-of-type 或者 :nth-of-type(1):nth-last-of-type(1))(5)僞元素
::after
::before
::firstLetter
::firstLine
::selection
CSS
聲明的優先級(1)選擇器的特殊性
選擇器的特殊性由選擇器自己的組件肯定,特殊性值表述爲4個部分,如0,0,0,0
一個選擇器的具體特殊性以下肯定:
特殊性 1,0,0,0 大於全部以0開頭的特殊性(不進位)
選擇器的特殊性最終都會授予給其對應的聲明
若是多個規則與同一個元素匹配,並且有些聲明互相沖突時,特殊性越大的越佔優點
注意區分:id選擇器和屬性選擇器div[id="test"]
(0,0,1,1) 和 #test
(0,1,0,0)
(2)重要聲明
!important
來標誌。!important
不然聲明無效。!important
老是要放在聲明的最後,即分號的前面。!important
的聲明並無特殊的特殊性值,不過要與非重要聲明分開考慮。(3)繼承
0
特殊性都沒有。0
特殊性要比無特殊性來的強。(4)來源
CSS樣式的來源大體有三種:
權重:
(5)層疊
2.計算聲明的優先級
@font-face
:容許網頁開發者爲其網頁指定在線字體。font-family
:所指定的字體名字將會被用於font
或font-family
屬性。src
:字體資源。注意:不能在一個 CSS
選擇器中定義@font-face
。
(1)opacity
opacity
屬性指定了一個元素的透明度。1.0
,不可繼承。(2)新增顏色樣式rgba
(3)文字陰影(text-shadow
)
text-shadow
用來爲文字添加陰影,並且能夠添加多層,陰影值之間用逗號隔開。(多個陰影時,第一個陰影在最上邊)none
,不可繼承 。(4)文字描邊(-webkit-text-stroke
)
webkit
內核才支持:-webkit-text-stroke
(準確的來講不能算是CSS3
的東西,但須要知道)。(5)文字排版
direction
:控制文字的方向,必定要配合unicode-bidi:bidi-override;
來使用。text-overflow
:肯定如何向用戶發出未顯示的溢出內容信號。
(1)盒模型陰影box-shadow
box-shadow
border-radius
,陰影也會有圓角效果。多個陰影時和多個 text-shadows
規則相同(第一個陰影在最上面)。none
, 不可繼承。(2)倒影-webkit-box-reflect
-webkit-box-reflect
設置元素的倒影(準確的來講不能算是CSS3
的東西,但須要知道)。none
,不可繼承。(3)resize
resize
CSS 屬性容許你控制一個元素的可調整大小性。overflow:auto
使用)none
, 不可繼承。(4)box-sizing
box-sizing
屬性用於更改用於計算元素寬度和高度的默認的 CSS 盒子模型。可使用此屬性來模擬不正確支持CSS盒子模型規範的瀏覽器的行/列爲。content-box
, 不可繼承。(1)圓角border-radius
border-radius
0
, 不可繼承。(2)邊框圖片border-image
border-image
: CSS
屬性容許在元素的邊框上繪製圖像。這使得繪製複雜的外觀組件更加簡單,使用 border-image
時,其將會替換掉 border-style
屬性所設置的邊框樣式。默認值: 不可繼承
border-image-source: none
border-image-slice: 100%
border-image-width: 1
border-image-outset: none
border-image-repeat: stretc
(3)背景background
(4)漸變
CSS
漸變 是在 CSS3 Image Module
中新增長的圖片類型;使用 CSS
漸變能夠在兩種顏色間製造出平滑的漸變效果. 用它代替圖片,能夠加快頁面的載入時間、減少帶寬佔用。同時,由於漸變是由瀏覽器直接生成的,它在頁面縮放時的效果比圖片更好,所以你能夠更加靈活、便捷的調整頁面佈局。瀏覽器支持兩種類型的漸變:
linear-gradient
函數定義radial-gradient
函數定義.flex
佈局CSS3 彈性盒子(Flexible Box 或 Flexbox),是一種用於在頁面上佈置元素的佈局模式,使得當頁面佈局必須適應不一樣的屏幕尺寸和不一樣的顯示設備時,元素可預測地運行/列。對於許多應用程序,彈性盒子模型提供了對塊模型的改進,由於它不使用浮動,flex容器的邊緣也不會與其內容的邊緣摺疊。
彈性盒模型,分老版與新版:
老版本的咱們一般稱之爲`box ` 新版本的咱們一般稱之爲`flex`
主軸 與 側軸
由`flex-direction`/`-webkit-box-orient`肯定
有了新版本後,爲何還須要老版本?(新版本比老版本要強大的不少)
不少移動端瀏覽器內核版本都超低。
(1)老版
容器設置display
爲webkit-box
(注意:項目永遠是在主軸上排列的)
-webkit-box-orient
屬性本質上肯定了主軸是哪一根
horizontal
:x軸vertical
:y軸(注意:項目永遠是沿着主軸的正方向排列的)
-webkit-box-direction
屬性本質上改變了主軸的方向
-webkit-box-direction: normal;
-webkit-box-direction: reverse;
富裕空間的管理(主軸)
start
end
center
justify
-webkit-box-pack:start;
富裕空間的管理(側軸)
start
end
center
-webkit-box-align:center;
彈性空間的管理:將富裕空間按比例分配到各個項目上
-webkit-box-flex: 1;
0
, 不可繼承(2)新版
容器的佈局方向
flex-direction: row;
flex-direction: column;
容器的排列方向
flex-direction:row-reverse;
flex-direction:column-reverse;
更強大的富裕空間的管理(主軸)
justify-content: flex-start;
flex-start
flex-end
center
space-between
space-around(box 沒有的)
更強大的富裕空間的管理(側軸)
align-items: stretch;
flex-start
flex-end
center
baseline(box 沒有的)
stretch(box 沒有的)
彈性空間的管理
flex-grow: 1
flex
佈局詳解https://developer.mozilla.org...
CSS3媒體查詢是響應式方案核心。
(1)媒體類型
all
: 全部媒體braille
: 盲文觸覺設備embossed
: 盲文打印機print
: 手持設備projection
: 打印預覽screen
: 彩色屏幕speech
: 「聽覺」相似的媒體設備tty
: 不適用像素的設備tv
: 電視(2)媒體特性(媒體屬性)
width
(可加max min前綴)height
(可加max min前綴)min-width
:分辨率寬度大於設置值的時候識別max-width
:分辨率寬度小於設置值的時候識別device-width
(可加max min前綴)device-pixel-ratio
:像素比(可加max min前綴,須要加webkit前綴)orientation:portrait
:豎屏orientation:landscape
:橫屏(3)操做符、關鍵字
and
: 鏈接媒體特性
or
: 和and
類似
not
: 排除指定媒體類型only
: 指定某種特定的媒體類型
@media only screen and (min-width:800px ){ 規則; 規則 }
@media screen and (min-width:800px ){ 規則; 規則 }
@media only
---> 由於沒有only
這種設備,規則被忽略。@media screen
---> 由於有screen
這種設備並且老瀏覽器會忽略帶媒體屬性的查詢。media query
的時候帶上only
。(1)欄目寬度
column-width
指定每一欄的寬度(這是多列布局的第一種分法)(2)欄目列數
column-count
指定要多少欄(這是多列布局的第二種分法)(3)欄目距離
column-gap
(4)欄目間隔線
column-rule