CSS選擇符總結
由Harttle發表在天碼營
我們知道CSS是由選擇符和屬性/值列表構成的,選擇符的重要性自然不言而喻。 作為前端開發者選擇符想必不是問題,然而前幾天面試還真問到了~和+是幹嗎用的! 長時間不用的選擇符自然就會忘了,來總結一下吧!
萬維網聯盟在 HTML 4.0 之外提出層疊樣式表(CSS),使用CSS完成樣式與內容的分離。層疊樣式表(Cascading Style Sheets,CSS), 又稱串樣式列表、層次結構式樣式表文件,一種用來為結構化文檔(如HTML文檔或XML應用)添加樣式(字體、間距和顏色等)的計算機語言,由W3C定義和維護。
CSS共有5種基本選擇器:
- 類型選擇器(h1,p等):用於選擇指定類型的HTML標籤;
- 類選擇器(.classname):用於選擇指定class的HTML標籤;
- ID選擇器(#idname):用於選擇指定id的HTML標籤;
- 通配符選擇器(*):用於選擇所有類型的HTML標籤;
- 屬性選擇器([foo=bar]):用於選擇某屬性為指定值的HTML標籤;
和2種偽選擇器:
- 偽類選擇器:用於選擇特定狀態的元素。
- 偽元素選擇器:如:before,:first-letter,用於向某些選擇器設置特殊效果,以實現複雜的樣式。
還有各種組合選擇符(例如, +, >, ~),用來選擇擁有特定層級的元素。至於CSS選擇器發生衝突時它們的優先順序,參見另一篇文章: CSS規則的優先順序匹配
類型/類/ID
類型選擇器、類選擇器和ID選擇器是最常用的,不解釋了:
body{n margin: 20px;n}n.avatar{n width: 100px;n height: 100px;n}n#btn-save{n color: green;n}n
偽類
偽類(如:hover,:focus)是瀏覽器生成的,不出現在HTML文件中,通常用於標識用戶操作造成的元素狀態改變。
.avatar:hover{n cursor: pointer;n}n
偽類選擇器還有很多:
- :active:向被激活的元素添加樣式
- :focus:向擁有鍵盤輸入焦點的元素添加樣式
- :hover:當滑鼠懸浮在元素上方時,向元素添加樣式
- :link:向未被訪問的鏈接添加樣式
- :visited:向已被訪問的鏈接添加樣式
- :first-child:向元素的第一個子元素添加樣式
- :lang: 向帶有指定 lang 屬性的元素添加樣式
:first-child在表格上會很好用,比如我們希望表格的第一列高亮:
table tr td:first-child{n background: yellow;n}n
nth-child(an+b)是first-child的增強版,可用於在畫廊布局中清除浮動。 比如我們堆疊地顯示位置數目的塊每行顯示3個,那麼為了避免因高度不一致產生怪異的流式布局, 我們希望第3n+1個元素清除左浮動:
.block:nth-child(3n+1){n clear: left;n}n
注意nth-child是在Selectors Level 3才加入的,IE9一下不支持哦!
參考:
- CSS 偽類
- :nth-child - CSS
屬性
屬性選擇器 用來選擇特定屬性值的元素,例如div[class=avatar]可以選擇class屬性為avatar的<div>元素,當然HTML元素的屬性很多,屬性選擇器可以匹配任何屬性。 屬性選擇器還支持更複雜的匹配,例如:
- [src]:選擇所有定義了 src 屬性的元素
- [abc^="def"]:選擇 abc 屬性值以 "def" 開頭的所有元素
- [abc$="def"]:選擇 abc 屬性值以 "def" 結尾的所有元素
- [abc*="def"]:選擇 abc 屬性值中包含子串 "def" 的所有元素
- img[src|="figure"]:選擇 src 屬性的第一個單詞是 "figure" 的元素,例如 "figure-1", "figure-2"
- [title~=flower]:選擇 titile 屬性包含單詞 "flower" 的元素
組合選擇符
組合選擇符 可描述元素之間的層級關係,例如:A > B表示是A的子元素的所有B。組合選擇符也有很多:
- ul li:空格表示後代選擇器,選擇所有出現在ul上下文里的li;
- ul>li:>表示子元素選擇器,比後代選擇器縮小了範圍,只選擇(下一級)子元素;
- h1+p:+表示相鄰兄弟選擇器,選擇緊接在 h1 元素後出現的段落,h1 和 p 元素擁有共同的父元素;
- h1~p:~表示通用兄弟選擇器,同上,但 p 不一定是緊跟 h1。
有人認為,也屬於組合選擇符,我認為它只是方便寫CSS的一個語法,允許同時給多個選擇符定義一套樣式。
參考:
- CSS 元素選擇器
同時發表在:CSS選擇符總結
歡迎關注天碼營微信公眾號: TMY-EDU
小編重點推薦:
Spring MVC實戰入門訓練
Spring Data JPA實戰入門訓練
Java Web實戰訓練
Node.js全棧開發
更多精彩內容請訪問天碼營網站推薦閱讀:
※關於CSS[可能]沒人知道的3件事
※content"width=640,user-scalable=no" 然後再進行固定尺寸的px設計?
※30 分鐘學會 Flex 布局
※中國有沒有做的比較好的響應式設計的門戶網站?
※css3 滑鼠:hover效果會平滑過渡,但滑鼠離開,效果消失的太生硬,能不能和:hover一樣平滑過渡?