CSS節選——選擇器

CSS,cascading style sheet,層疊樣式表,請留意層疊概念。

css3為了區分偽類和偽元素,偽元素采用雙冒號寫法。

常見偽類——:hover,:link,:active,:target,:not(),:focus。

常見偽元素——::first-letter,::first-line,::before,::after,::selection。

?


?::before和::after偽元素的用法

::before和::after下特有的content,用于在css渲染中向元素邏輯上的頭部或尾部添加內容。
這些添加不會出現在DOM中,不會改變文檔內容,不可復制,僅僅是在css渲染層加入。
所以不要用:before或:after展示有實際意義的內容,盡量使用它們顯示修飾性內容,例如圖標。
舉例:網站有些聯系電話,希望在它們前加一個icon?,就可以使用:before偽元素,如下:
<!DOCTYPE html>
<meta charset="utf-8" />
<style type="text/css">
.phoneNumber::before {
content:'\FFFD';
font-size: 15px;
}
</style>
<p class="phoneNumber">12345645654</p>
::before 示例
::before 和:before有什么區別?
這個問題看來很簡單,但如果之前沒有琢磨這個問題,給人感覺也是門頭一垂,聽到這個題目就懵逼了,因為原來從來沒有注意過這個問題,即便有注意這個問題也不能很好的回答清楚。回答的技巧就是從相同點和不同點,以及他們的作用,及注意事項上去回答。
解答要點
相同點
都可以用來表示偽類對象,用來設置對象前的內容
:befor和::before寫法是等效的
不同點
:befor是Css2的寫法,::before是Css3的寫法
:before的兼容性要比::before好 ,不過在H5開發中建議使用::before比較好
加分項
偽類對象要配合content屬性一起使用
偽類對象不會出現在DOM中,所以不能通過js來操作,僅僅是在 CSS 渲染層加入
偽類對象的特效通常要使用:hover偽類樣式來激活
.test:hover::before { /* 這時animation和transition才生效 */ }  

?


?

序列選擇器

#1、作用:
css3中新推出的選擇器中,最具代表性的的9個,又稱為序列選擇器,過去的選擇器中要選中某個必須加id或class,學習了這9個后,不用加id或class,想選中同級別的第幾個就選第幾個
#2、格式
#2.1 同級別
:first-child    p:first-child    同級別的第一個
:last-child    p:last-child    同級別的最后一個
:nth-child(n)                    同級別的第n個
:nth-last-child(n)            同級別的倒數第n個
#2.2 同級別同類型
:first-of-type                    同級別同類型的第一個
:last-of-type                    同級別同類型的最后一個
:nth-of-type(n)                    同級別同類型的第n個
:nth-last-of-type(n)            同級別同類型的倒數第n個
#2.3 其他
:only-of-type                    同類型的唯一一個
:only-child                         同級別的唯一一個
#1、同級別的第一個
#1.1 示范一
p:first-child { 
color: red;
}
代表:同級別的第一個,并且第一個要求是一個p標簽
<p>我是段落1</p>
<p>我是段落2</p>
<p>我是段落3</p>
<p>我是段落4</p>
<p>我是段落5</p>
<div>
<p>我是段落6</p>
</div>
這樣的話第一個p和div中的第一個p都變成紅色,
#1.2 示范二
p:first-child {
color: red;
}
代表:同級別的第一個,并且第一個要求是一個p標簽
<h1>w我是標題</h1>
<p>我是段落1</p>
<p>我是段落2</p>
<p>我是段落3</p>
<p>我是段落4</p>
<p>我是段落5</p>
<div>
<p>我是段落6</p>
</div>
這樣的話只有div中的第一個p變紅,因為在有在div內同一級別的第一個才是p
注意點:
:fist-child就是第一個孩子,不區分類型
#2、同級別的最后一個
p:last-child {
color: red;
}
代表:同級別的最后一個,并且最后一個要求是一個p標簽
<h1>我是標題</h1>
<p>我是段落1</p>
<p>我是段落2</p>
<p>我是段落3</p>
<p>我是段落4</p>
<p>我是段落5</p>
<div>
<p>我是段落6</p>
</div>
<p>我是段落7</p>
這樣的話只有6跟7都變紅
#3、同級別的第n個
p:nth-child(3) {
color: red;
}
代表:同級別的第3個,并且第3個要求是一個p標簽
<h1>我是標題</h1>
<p>我是段落1</p>
<p>我是段落2</p>
<p>我是段落3</p>
<p>我是段落4</p>
<p>我是段落5</p>
<div>
<p>我是段落6.1</p>
<p>我是段落6.2</p>
<h1>我是標題</h1>
</div>
<p>我是段落7</p>
這樣的話只有“我是段落2”變紅
#4、同級別的倒數第n個
p:nth-last-child(3) {
color: red;
}
代表:同級別的倒數第3個,并且第3個要求是一個p標簽
<h1>我是標題</h1>
<p>我是段落1</p>
<p>我是段落2</p>
<p>我是段落3</p>
<p>我是段落4</p>
<p>我是段落5</p>
<div>
<p>我是段落6.1</p>
<p>我是段落6.2</p>
<h1>我是標題</h1>
</div>
<p>我是段落7</p>
這樣的話只有“我是段落6.1”和“我是段落5”被選中
同級別
<h1>我是標題</h1>
<p>我是段落1</p>
<p>我是段落2</p>
<p>我是段落3</p>
<p>我是段落4</p>
<p>我是段落5</p>
<div>
<p>我是段落6.1</p>
<p>我是段落6.2</p>
<h1>我是標題</h1>
</div>
<p>我是段落7</p>
#1、同級別同類型的第一個
p:first-of-type {
color: red;
}
“我是段落1”和“我是段落6.1”被選中
#2、同級別同類型的最后一個
p:last-of-type {
color: red;
}
“我是段落7”和“我是段落6.2”被選中
#3、同級別同類型的第n個
p:nth-of-type(2) {
color: red;
}
“我是段落2”和“我是段落6.2”被選中
#4、同級別同類型的倒數第n個
p:nth-last-of-type(2) {
color: red;
}
“我是段落5”和“我是段落6.1”被選中
同級同類型
#1、同類型的唯一一個
p:only-of-type {
color: red;
}
<h1>我是標題</h1>
<div>
<p>我是段落6.1</p>
<p>我是段落6.2</p>
<h1>我是標題</h1>
</div>
<p>我是段落7</p>
“我是段落7“被選中
#2、同級別的唯一一個
p:only-child {
color: red;
}
<h1>我是標題</h1>
<div>
<p>我是段落6.1</p>
</div>
<p>我是段落7</p>
“我是段落6.1”被選中
其他

?


?

屬性選擇器

#1、作用:根據指定的屬性名稱找到對應的標簽,然后設置屬性
該選擇器,最常用于input標簽
#2、格式與具體用法:
[屬性名]
其他選擇器[屬性名]
[屬性名=值]
[屬性名^=值]
[屬性名$=值]
[屬性名*=值]
例1:找到所有包含id屬性的標簽
[id]
例2:找到所有包含id屬性的p標簽
p[id]
例3:找到所有class屬性值為part1的p標簽
p[class="part1"]
例4:找到所有href屬性值以https開頭的a標簽
a[href^="https"]
例5:找到所有src屬性值以png結果的img標簽
img[src$="png"]
例6:找到所有class屬性值中包含part2的標簽
[class*="part"] 
!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>后代選擇器</title>
<style type="text/css">
[id] {
color: red;
}
p[id] {
font-size: 30px;
}
p[class="part1"] {
color: green;
}
a[href^="https"] {
font-size: 50px;
}
img[src$="png"] {
width: 100px;
}
[class*="part"] {
text-decoration: line-through;
}
</style>
</head>
<body>
<h1 id="id1">哈哈啊</h1>
<p id="id2">我是段落</p>
<p class="part1">我是段落</p>
<p class="xxx part2 yyy">我是段落</p>
<a href="#">我是我</a>
<a href="http://www.baidu.com">http://www.baidu.com</a>
<a href="https://www.baidu.com">https://www.baidu.com</a>
<img src="1.png" alt="">
<img src="2.jpg" alt="">
<p>我是段落</p>
<p>我是段落</p>
</body>
</html>
示例

?


?兄弟選擇器

#1、作用:給指定選擇器后面緊跟的那個選擇器選中的標簽設置屬性
#2、格式
選擇器1 選擇器2 {
屬性:值;
}
#3、注意點:
1、相鄰兄弟選擇器必須通過 號鏈接
2、相鄰兄弟選擇器只能選中你緊跟其后的那個標簽,不能選中被隔開的標簽
相鄰兄弟選擇器,CSS2推出
#1、作用:給指定選擇器后面的所有選擇器中的所有標簽設置屬性
#2、格式:
選擇器1~選擇器2 {
屬性:值;
}
#3、注意點:
1、通用兄弟選擇器必須用~來鏈接
2、通用兄弟選擇器選中的是指選擇器后面的某個選擇器選中的所有標簽
無論有沒有被隔開,都可以被選中
通用兄弟選擇器,CSS3推出

?


?

偽類選擇器

#1、作用:常用的幾種偽類選擇器。
#1.1 沒有訪問的超鏈接a標簽樣式:
a:link {
color: blue;
}
#1.2 訪問過的超鏈接a標簽樣式:
a:visited {
color: gray;
}
#1.3 鼠標懸浮在元素上應用樣式:
a:hover {
background-color: #eee; 
}
#1.4 鼠標點擊瞬間的樣式:
a:active {
color: green;
}
#1.5 input輸入框獲取焦點時樣式:
input:focus {
outline: none;
background-color: #eee;
}
#2 注意:
1 a標簽的偽類選擇器可以單獨出現,也可以一起出現
2 a標簽的偽類選擇器如果一起出現,有嚴格的順序要求,否則失效
link,visited,hover,active
3 hover是所有其他標簽都可以使用的
4 focus只給input標簽使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>后代選擇器</title>
<style type="text/css">
a:link {
color: #cccccc;
}
a:visited {
color: #55BBBB;
}
a:hover {
color: green;
}
a:active {
color: red;
}
input:hover {
outline: none;
background-color: #cccccc;
}
</style>
</head>
<body>
<a href="https://www.baidu.com/a/b/c/d.html">點擊我</a>
<input type="text">
</body>
</html>
示例

?


?

偽元素選擇器

#1、常用的偽元素。
#1.1 first-letter:雜志類文章首字母樣式調整
例如:
p:first-letter {
font-size: 48px;
}
#1.2 before
用于在元素的內容前面插入新內容。
例如:
p:before {
content: "*";
color: red;
}
在所有p標簽的內容前面加上一個紅色的*。
#1.3 after
用于在元素的內容后面插入新內容。
例如:
p:after {
content: "?";
color: red;
}
在所有p標簽的內容后面加上一個藍色的?。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>后代選擇器</title>
<style type="text/css">
p:first-letter {
font-size: 50px;
}
/*兩個冒號與一個是一樣的,老版本用的是一個冒號,考慮到兼容性推薦使用一個冒號*/
a::after {
content: "?";
color: red;
}
a:before {
content: "-";
color: green;
}
</style>
</head>
<body>
<p>英雄不問出處,流氓不論歲數</p>
<a href="#" class="help">老男孩是干什么的</a>
<a href="#" class="help">老男孩是干什么的</a>
<a href="#" class="help">老男孩是干什么的</a>
</body>
</html>
示例

?


?

CSS三大特性

1、繼承性

#1、定義:給某一個元素設置一些屬性,該元素的后代也可以使用,這個我們就稱之為繼承性
#2、注意:
1、只有以color、font-、text-、line-開頭的屬性才可以繼承
2、a標簽的文字顏色和下劃線是不能繼承別人的
3、h標簽的文字大小是不能繼承別人的,會變大,但是會在原來字體大小的基礎上變大
ps:打開瀏覽器審查元素可以看到一些inherited from。。。的屬性
#3、應用場景:
通常基于繼承性統一設置網頁的文字顏色,字體,文字大小等樣式

2、層疊性

#1、定義:CSS全稱:Cascading StyleSheet層疊樣式表,層疊性指的就是CSS處理沖突的一種能力,即如果有多個選擇器選中了同一個標簽那么會有覆蓋效果
#2、注意:
1、層疊性只有在多個選擇器選中了同一個標簽,然后設置了相同的屬性,
才會發生層疊性
ps:通過谷歌瀏覽器可以查看到,一些屬性被劃掉了

3、優先級

#1、定義:當多個選擇器選中同一個標簽,并且給同一個標簽設置相同的屬性時,如何層疊就由優先級來確定
#2、優先級
整體優先級從高到底:行內樣式>嵌入樣式>外部樣式
行內樣式并不推薦使用,所以我們以嵌入為例來介紹優先級

注意:

1、大前提:直接選中 > 間接選中(即繼承而來的)
2、如果都是間接選中,那么誰離目標標簽比較近,就聽誰的
3、如果都是直接選中,并且都是同類型的選擇器,那么就是誰寫的在后面就聽誰的
4、如果都是直接選中,并且是不同類型的選擇器,那么就會按照選擇器的優先級來層疊
id > 類 > 標簽 > 通配符(也算直接選中) > 繼承 > 瀏覽器默認(即沒有設置任何屬性)
5、優先級之!important
  
#1、作用:還有一種不講道理的!import方式來強制指定的屬性的優先級提升為最高,但是不推薦使用。因為大量使用!import的代碼是無法維護的。
#2、注意:
1、!important只能用于直接選中,不能用于間接選中
2、!important只能用于提升被指定的屬性的優先級,其他屬性的優先級不會被提升
3、!important必須寫在屬性值分號的前面

?

6、優先級之權重計算

#1、強調
如果都是直接選中,并且混雜了一系列其他的選擇器一起使用時,則需要通過計算機權重來判定優先級
#2、計算方式
#1、id數多的優先級高
#2、id數相同,則判定類數多的優先級高
#3、id數、class數均相同,則判定標簽數多的優先級高
#4、若id數、class數、標簽數均相同,則無需繼續往下計算了,誰寫在后面誰的優先級高

?

?

?

本文轉載于:猿2048?https://www.mk2048.com/blog/blog.php?id=h00jj00j&title=CSS節選——選擇器

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370175.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370175.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370175.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python游戲循環設置_Pygame:游戲循環前的初始菜單

我正在制作一個this game的版本&#xff0c;并嘗試將起始菜單設置為&#xff1a;我的計劃是先做surface.fill(overlaycolor)&#xff0c;然后將這個圖像blitting到屏幕上。在一個while循環中。之后&#xff0c;在用戶想玩(另一個問題除外)之后&#xff0c;我們將進入另一個whil…

vue.js基礎知識篇(7):表單校驗詳解

目錄 網盤 第12章:表單校驗 1.npm安裝vue-validator $ npm install vue-validator 代碼示例: var Vuerequire("vue"); var VueValidatorrequire("vue-validator"); Vue.use(VueValidator); 2.直接使用script標簽引入vue.js 要下載vue-validator&#xff0c…

修改linux綁定的域名,手工修改linux系統下DA面板綁定的域名

舉例說明手工修改DA面板下虛擬主機ryan綁定的域名&#xff0c;只需要 vi /usr/local/directadmin/data/users/ryan/httpd.conf代碼如下&#xff1a;# Auto generated apache config file by DirectAdmin version 1.46.3# Modifying this file is not recommended as any change…

在JUnit測試中使用Builder模式

這并不是要成為技術含量很高的職位。 這篇文章的目的是為您提供一些指導&#xff0c;以使您的JUnit測試生活更加輕松&#xff0c;使您能夠在幾分鐘內編寫復雜的測試場景&#xff0c;并具有易于閱讀的測試優勢。 單元測試中有兩個主要部分&#xff0c;需要編寫許多引導程序代碼&…

SQL數據庫中臨時表、臨時變量和WITH AS關鍵詞創建“臨時表”的區別

原文鏈接&#xff1a;https://www.cnblogs.com/zhaowei303/articles/4204805.html SQL數據庫中數據處理時&#xff0c;有時候需要建立臨時表&#xff0c;將查詢后的結果集放到臨時表中&#xff0c;然后在針對這個數據進行操作。 創建“臨時表”&#xff08;邏輯上的臨時表&…

python 三維繪圖庫_Python第三方庫matplotlib(2D繪圖庫)入門與進階

Matplotlib一 簡介&#xff1a;Matplotlib是一個Python 2D繪圖庫&#xff0c;它可以在各種平臺上以各種硬拷貝格式和交互式環境生成出具有出版品質的圖形。 Matplotlib可用于Python腳本&#xff0c;Python和IPython shell&#xff0c;Jupyter筆記本&#xff0c;Web應用程序服務…

zbb20170626 myeclipse 2017 ci 構建 spring hibernate struts jar

轉載于:https://www.cnblogs.com/super-admin/p/7081209.html

linux處理機調度實驗報告,模擬Linux操作系統下處理機調度實驗報告

在采用多道系統的設計程序中,往往有若干進程同時處于就緒狀態。當就緒狀態進程數大于處理機數時,就必須按照某種策略來決定哪些進程優先占用處理機。本實驗模擬在單處理機情況下處理機調度處理機調度一、實驗目的&#xff1a;1、了解Linux下Emacs編輯器的使用方法&#xff0c;掌…

Java線程:保留的內存分析

本文將為您提供一個教程&#xff0c;使您可以確定活動應用程序Java線程保留Java堆空間的數量和位置。 將提供來自Oracle Weblogic 10.0生產環境的真實案例研究&#xff0c;以使您更好地理解分析過程。 我們還將嘗試證明過多的垃圾回收或Java堆空間的內存占用問題通常不是由真正…

軟件測試白皮書-等價類

設有一個檔案管理系統&#xff0c;要求用戶輸入以年月表示的日期。假設日期限定在1990年1月~2049年12月&#xff0c;并規定日期由6位數字字符組成&#xff0c;前4位表示年&#xff0c;后2位表示月。現用等價類劃分法設計測試用例&#xff0c;來測試程序的"日期檢查功能&qu…

深入css布局 (1) — 盒模型 元素分類

深入css布局&#xff08;1&#xff09;—— 盒模型 & 元素分類 “ 在css知識體系中&#xff0c;除了css選擇器&#xff0c;樣式屬性等基礎知識外&#xff0c;css布局相關的知識才是css比較核心和重要的點。今天我們來深入學習一下css布局相關的知識。” 首先來列下大綱 盒模…

批改網禁止粘貼怎么破_教育部對家長批改作業表態了,明令禁止!你怎么看?...

互聯網的發展&#xff0c;的確方便了現代人生活。視頻電話、出去買東西你都不用帶錢帶卡&#xff0c;手機一掃就可以完成支付。很多中小學的家長都會建一個家長群&#xff0c;方便老師和家長的溝通。這個群可以說是家長和學校的橋梁和紐帶&#xff0c;家長們為了支持老師的工作…

電子科大專科c語言作業1,電子科大15春《C語言(專科)》在線作業試卷.docx

電子科大 15 春《 C 語言(專科)》在線作業一、單選題(共20 道試題&#xff0c;共100 分。)1.對于 int*p;inta[];pa;的合法運算 ()a;pa;p; 相當于 a;p; 相當于 a[1];若 p 中的地址為 100 則 p; 運算后&#xff0c;則其值為 100-----------------選擇&#xff1a; C已知 intb; 則…

MapReduce算法–順序反轉

這篇文章是介紹MapReduce算法的系列文章的另一部分&#xff0c;該書在使用MapReduce進行數據密集型文本處理中找到。 先前的文章是Local Aggregation &#xff0c; Local Aggregation PartII和創建共現矩陣 。 這次我們將討論階數反轉模式。 順序反轉模式利用的MapReduce來計算…

xss防御

http://blog.csdn.net/ghsau/article/details/17027893轉載于:https://www.cnblogs.com/jiangjing/p/8076216.html

移動端頁面字體在微信被放大,導致排版錯亂

在開發微信頁面的時候&#xff0c;之前一直沒有測出這個問題。直到某天領導的手機出現了排版錯位的問題&#xff0c;拿著手機質問我的工作態度。 Google了一下發現原來微信調整了字體大小會放大網頁的字體&#xff0c;導致排版混亂。通過設置可以禁止網頁字體被放大&#xff1a…

液壓支架銷軸力學計算分析研究_基于RFID射頻精準定位的智能開采研究與應用...

一、項目背景近年來隨著智能開采技術的不斷發展&#xff0c;裝備和新工藝不斷更新換代,在智能開采中&#xff0c;對采煤機位置的精準定位是能否實現智能開采的關鍵&#xff0c;只有準確無誤地獲取煤機的準確位置&#xff0c;才能實現工作面的智能化開采&#xff0c;進而提高生產…

cf 821E Okabe and El Psy Kongroo(矩陣快速冪)

鏈接&#xff1a;http://codeforces.com/problemset/problem/821/E 分析&#xff1a;由于有邊界而且不同段邊界還不同&#xff0c;直接算是不行的。。k是1e18&#xff0c;dp也不行。。用一個16維的向量表示某一列16個位置可能的種類數&#xff0c;到下一列的轉移矩陣容易得到&a…

您是否能及時編譯?

還記得上次被C開發人員嘲笑的時候嗎&#xff1f; Java如此繁瑣&#xff0c;以至于他們甚至都不會考慮使用這種語言&#xff1f; 在許多方面&#xff0c;這一概念仍然成立。 但是對于典型的用法&#xff08;在大型企業的骨干中&#xff09;&#xff0c;Java性能絕對可以與許多競…

C語言作業二選擇結構,C語言第二次作業參考答案選擇結構.pdf

1 C 語言第二次作業(選擇結構)參考答案語言第二次作業(選擇結構)參考答案 1、某年如果能被某年如果能被 4 整除整除&#xff0c;&#xff0c;但不能被但不能被 100 整除整除&#xff0c;&#xff0c;或者能被或者能被 400 整除的整除的 年是閏年。判斷從鍵盤輸入的年份是否為閏…