摘要:五后代選擇器包含選擇器后代選擇器可以選擇作為某元素后代的元素。匹配下所有的元素匹配所有為的下所有的元素匹配成功匹配失敗注意有關后代選擇器有一個易被忽視的方面,即兩個元素之間的層次間隔可以是無限的。子元素選擇器,選擇其子元素。
CSS選擇器是學習CSS的一個核心部分,HTML頁面中的元素就是通過CSS選擇器來進行控制的,熟練使用CSS選擇器能迅速根據文檔結構對文檔樣式進行一對一,一對多或者多對一的控制和調整。
一、CSS 元素選擇器(類型選擇器)文檔的元素是最基本的選擇器也是最常見的選擇器,如果設置 HTML 的樣式,選擇器通常將是某個 HTML 元素,比如 p、h1、em、a,甚至可以是 html 本身,如:
html {margin: 0; padding: 0;} h1 {font-family: "華文楷體"; color:blue;} a {font-size:16px; text-decoration: none;}
在 W3C 標準中,元素選擇器又稱為類型選擇器(type selector)。類型選擇器匹配文檔語言元素類型的名稱。類型選擇器匹配文檔樹中該元素類型的每一個實例,所以類似HTML, XML等標記語言都可以通過類型選擇器來匹配,甚至一些自定義標簽都會生效。
二、CSS 類選擇器類選擇器允許以一種獨立于文檔元素的方式來指定樣式。該選擇器可以多帶帶使用,也可以與其他元素結合使用。
提示: 只有適當地標記文檔后(指定claess屬性),才能使用這些選擇器,所以使用這兩種選擇器通常需要先做一些構想和計劃。要應用樣式而不考慮具體設計的元素,最常用的方法就是使用類選擇器。
語法: 類選擇器前面有個"."。
/* 基本語法 */ .important {color:red;} /* 結合通配符使用 */ *.important {color:red;} /* 結合元素使用,解釋為:其 class 屬性值為 important 的所有 p 元素 */ p.important {color:red;}
CSS多類選擇器
HTML元素的class屬性可以包含一個詞列表,各個詞之間用空格分隔,詞的順序無關緊要。如:
This paragraph is a very important.
This paragraph is a very warning.
This paragraph is a very important warning.
設置class 為 important 的所有元素都是粗體,而 class 為 warning 的所有元素為斜體,class 中同時包含 important 和 warning 的所有元素還有一個銀色的背景 。就可以寫作:
.important {font-weight:bold;} .warning {font-style:italic;} /* 注意:在HTML元素的class屬性中的兩個詞需要用“空格”隔開,在CSS中不能用“空格”隔開 */ .important.warning {background:silver;}
注意: 把兩個類選擇器鏈接在一起,僅可以選擇同時包含這些類名的元素(類名的順序不限),如果一個多類選擇器包含類名列表中沒有的一個類名,匹配就會失敗。如:
p.important.urgent {background:silver;}
這個選擇器將只匹配 class 屬性中同時包含詞 important 和 urgent 的 p 元素。因此,如果一個 p 元素的 class 屬性中只有詞 important 和 warning,將不能匹配。不過,它能匹配以下元素:
三、CSS ID選擇器This paragraph is a very important.
This paragraph is a very important.
語法: ID選擇器前面有個"#"。
/* 基本語法 */ #intro {font-weight:bold;} /* 配合通配符使用 */ *#intro {font-weight:bold;}
與Javascript的區別:
/* 在同一個頁面中能匹配所有 ID 為 mostImportant 的元素 */ #mostImportant {color:red; background:yellow;}
/* 在同一個頁面中只能獲取文檔中第一個 ID 為 mostImportant 的內容 */ document.getElementById("mostImportant").innerHTML;
This is important!
This is important!
與類選擇器的區別:
區別 1:只能在文檔中使用一次
不同于類選擇器,在一個 HTML 文檔中,ID 選擇器會使用一次,而且僅一次。
區別 2:不能使用 ID 詞列表
不同于類選擇器,ID 選擇器不能結合使用,因為 ID 屬性不允許有以空格分隔的詞列表。
注意:
四、CSS 屬性選擇器關于命名:id和class屬性不要以數字開頭,數字開頭的ID在 Mozilla/Firefox 瀏覽器中不起作用;
關于大小寫:id和class在HTML和XHTML中是區分大小的。
CSS 2 引入了屬性選擇器。屬性選擇器可以根據元素的屬性及屬性值來選擇元素。
簡單屬性選擇:
/* 通過單個屬性選擇 */ *[title] {color:red;} a[href] {color:red;} /* 通過多個屬性選擇,注意:匹配同時含有多個屬性的元素 */ a[href][title] {color:red;} img[alt][title] {border: 5px solid red;}
根據完全匹配的屬性值選擇:
/* 通過單個屬性值選擇 */ a[] {color: red;} /* 通過多個屬性值選擇 */ a[] {color: red;}
根據部分屬性值選擇
選擇器 | 描述 |
---|---|
[attribute] | 用于選取帶有指定屬性的元素。 |
[attribute = value] | 用于選取帶有指定屬性和值的元素。 |
[attribute ~= value] | 用于選取屬性值中包含指定詞匯的元素,該值匹配是沒有空格的字符串。 |
[attribute |= value] | 用于選取帶有以指定值開頭的元素,該值匹配的是value或value-。 |
[attribute ^= value] | 匹配屬性值以指定值開頭的每個元素,該值可以是任意值,推薦使用。 |
[attribute $= value] | 匹配屬性值以指定值結尾的每個元素。 |
[attribute *= value] | 匹配屬性值中包含指定值的每個元素,該值可以是任意值,推薦使用。 |
后代選擇器可以選擇作為某元素后代的元素。
語法: 父元素和后代元素從左至右排列,中間用空格隔開。
/* 匹配 h1 下所有的 em 元素 */ h1 em {color:red;} /* 匹配所有 class 為 "maincontent" 的 div下所有的 a 元素 */ div.maincontent a {color:blue;}
This is a important heading
This is a important paragraph.
注意: 有關后代選擇器有一個易被忽視的方面,即兩個元素之間的層次間隔可以是無限的。
例如,如果寫作 ul em,這個語法就會選擇從 ul 元素繼承的所有 em 元素,而不論 em 的嵌套層次多深。
因此,ul em 將會選擇以下標記中的所有 em 元素:
與后代選擇器相比,子元素選擇器(Child selectors)只能選擇作為某元素子元素的元素。
如果你不希望選擇任意的后代元素,而是希望縮小范圍,只選擇某個元素的子元素,那就要使用子元素選擇器。
后代元素: 所有由其包裹的元素;
子代元素: 由其包裹,層級結構只比其小一級的元素;
語法: 父元素和子元素從左至右排列,中間用 > 隔開。
/* 選擇只作為 h1 元素子元素的 strong 元素 */ h1 > strong {color:red;}
This is very very important.
This is really very important.
結合后臺選擇器和子選擇器
/* 選擇所有 class 為 "company" 的 table 的所有后代 td 的子元素 p */ table.company td > p七、CSS 相鄰兄弟選擇器
可選擇緊接在另一元素后的元素,且二者有相同父元素。
語法:兄弟元素從左至右排列,中間用 + 隔開。
/* 選擇緊接在 h1 后(前面的元素不能匹配)的元素,而且二者有相同的父元素 */ h1 + p {color: red;}
第一個段落
標題
第二個段落
第二個段落
總結:
選擇器 | 描述 |
---|---|
h1 p | 后代選擇器,選擇所有的后代元素。 |
h1 , p | 多元素選擇器,用","分隔,同時匹配元素h1或元素p。 |
h1 > p | 子元素選擇器,選擇其子元素。 |
h1 + p | 相鄰兄弟選擇器,選擇其后面相鄰的兄弟元素(有相同的父元素)。 |
h1 ~ p | 一般兄弟選擇器,選擇其后面所有的兄弟元素(有相同的父元素)。 |
用于向某些選擇器添加特殊的效果。
語法: 選擇器和偽類之間通過 : 隔開。
/* 選擇器 : 偽類 */ selector : pseudo-class {property: value} /* CSS 類也可與偽類搭配使用 */ selector.class : pseudo-class {property: value}
錨偽類
a:link {color: #FF0000} /* 未訪問的鏈接 */ a:visited {color: #00FF00} /* 已訪問的鏈接 */ a:hover {color: #FF00FF} /* 鼠標移動到鏈接上 */ a:active {color: #0000FF} /* 選定的鏈接 */
在 CSS 定義中,a:hover 必須被置于 a:link 和 a:visited 之后,才是有效的。
在 CSS 定義中,a:active 必須被置于 a:hover 之后,才是有效的。
偽類名稱對大小寫不敏感。
:first-child 偽類和:laft-child偽類
可以使用 :first-child 偽類來選擇元素的第一個子元素。
These are the necessary steps:
- Intert Key
- Turn key clockwise
- Push accelerator
Do not push the brake at the same time as the accelerator.
/* 選擇的就是第一個 p 元素,而不是 p 元素的第一個子元素 */ p:first-child {font-weight: bold;} /* 選擇的就是最后一個 p 元素,而不是 p 元素的最后一個子元素 */ p:last-child {font-weight: bold;} /* 選擇的就是第一個 li 元素,而不是 li 元素的第一個子元素 */ li:first-child {text-transform: uppercase;} /* 通過CSS設置字母的大小寫 */ li:first-child {text-transform: lowercase;}
偽類匯總
選擇器 | 含義 |
---|---|
E:first-child | 匹配元素E的第一個子元素 |
E:link | 匹配所有未被點擊的鏈接 |
E:visited | 匹配所有已被點擊的鏈接 |
E:active | 匹配鼠標已經其上按下、還沒有釋放的E元素 |
E:hover | 匹配鼠標懸停其上的E元素 |
E:focus | 匹配獲得當前焦點的E元素 |
E:lang(c) | 匹配lang屬性等于c的E元素 |
E:enabled | 匹配表單中可用的元素 |
E:disabled | 匹配表單中禁用的元素 |
E:checked | 匹配表單中被選中的radio或checkbox元素 |
E::selection | 匹配用戶當前選中的元素 |
E:root | 匹配文檔的根元素,對于HTML文檔,就是HTML元素 |
E:nth-child(n) | 匹配其父元素的第n個子元素,第一個編號為1 |
E:nth-last-child(n) | 匹配其父元素的倒數第n個子元素,第一個編號為1 |
E:nth-of-type(n) | 與:nth-child()作用類似,但是僅匹配使用同種標簽的元素 |
E:nth-last-of-type(n) | 與:nth-last-child() 作用類似,但是僅匹配使用同種標簽的元素 |
E:last-child | 匹配父元素的最后一個子元素,等同于:nth-last-child(1) |
E:first-of-type | 匹配父元素下使用同種標簽的第一個子元素,等同于:nth-of-type(1) |
E:last-of-type | 匹配父元素下使用同種標簽的最后一個子元素,等同于:nth-last-of-type(1) |
E:only-child | 匹配父元素下僅有的一個子元素,等同于:first-child:last-child或 :nth-child(1):nth-last-child(1) |
E:only-of-type | 匹配父元素下使用同種標簽的唯一一個子元素,等同于:first-of-type:last-of-type或 :nth-of-type(1):nth-last-of-type(1) |
E:empty | 匹配一個不包含任何子元素的元素,文本節點也被看作子元素 |
E:not(selector) | 匹配不符合當前選擇器的任何元素 |
偽元素
偽元素可用于定位文檔中包含的文本,為與偽類進行區分,偽元素使用雙冒號 :: 定義,但單冒號 : 也能被識別。
屬性 | 描述 |
---|---|
::first-letter | 向文本的第一個字母添加特殊樣式。 |
::first-line | 向文本的首行添加特殊樣式。 |
::before | 在元素之前添加內容。 |
::after | 在元素之后添加內容。 |
::focue | 在元素之后添加內容。 |
W3School CSS 選擇器
CSS選擇器詳解
十分鐘搞定CSS選擇器
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/112385.html
摘要:最基本的選擇器是元素選擇器比如選擇器比如還有類選擇器比如。選擇器和類選擇器在速度上的差異基本上沒有關系。現在我們回到討論開始的地方,哪類選擇器是最高效的哪個是會影響選擇器效率的關鍵選擇器寫代碼的時候,關鍵選擇器是能否高效的決定因素。 高效的CSS已經不是一個新的話題了,也不是我一個非得重拾的話題,但它卻是我在工作之時,所感興趣的,關注已久的話題。 有很多人都忘記了,或在簡單的說沒有意識...
摘要:最基本的選擇器是元素選擇器比如選擇器比如還有類選擇器比如。選擇器和類選擇器在速度上的差異基本上沒有關系。現在我們回到討論開始的地方,哪類選擇器是最高效的哪個是會影響選擇器效率的關鍵選擇器寫代碼的時候,關鍵選擇器是能否高效的決定因素。 高效的CSS已經不是一個新的話題了,也不是我一個非得重拾的話題,但它卻是我在工作之時,所感興趣的,關注已久的話題。 有很多人都忘記了,或在簡單的說沒有意識...
摘要:不要在編寫規則時用標簽名或類名不要在編寫規則時用標簽名把多層標簽選擇規則用規則替換,減少查找避免使用子選擇器后代選擇器在中是最昂貴的選擇器。如果你關心頁面性能的話,他們真不該被使用擴展閱讀前端面試題選擇器前端面試題優先級 一、CSS選擇符 CSS選擇符由一些初始化參數組成,這些參數指明了要應用這個CSS規則的頁面元素。 作為一個網站的前端開發工程師,應該避免編寫一些常見的開銷很大的CS...
摘要:不要在編寫規則時用標簽名或類名不要在編寫規則時用標簽名把多層標簽選擇規則用規則替換,減少查找避免使用子選擇器后代選擇器在中是最昂貴的選擇器。如果你關心頁面性能的話,他們真不該被使用擴展閱讀前端面試題選擇器前端面試題優先級 一、CSS選擇符 CSS選擇符由一些初始化參數組成,這些參數指明了要應用這個CSS規則的頁面元素。 作為一個網站的前端開發工程師,應該避免編寫一些常見的開銷很大的CS...
閱讀 1265·2021-10-14 09:50
閱讀 1566·2019-08-30 15:54
閱讀 1022·2019-08-30 11:22
閱讀 2916·2019-08-30 10:50
閱讀 1800·2019-08-29 18:39
閱讀 3050·2019-08-29 13:07
閱讀 2078·2019-08-28 17:54
閱讀 751·2019-08-26 17:44