CSS3選擇器
-
屬性選擇器
:通過id屬性
可將不同div元素進行區(qū)分。
- 在CSS2中引入了一些屬性選擇器五垮,而CSS3在CSS2的基礎(chǔ)上對屬性選擇器進行了擴展,新增了3個屬性選擇器挠铲,使得屬性選擇器有了
通配符
的概念甜橱,這三個屬性選擇器與CSS2的屬性選擇器共同構(gòu)成了CSS功能強大的屬性選擇器。如下表所示:
屬性選擇器 |
功能描述 |
E[att^="val"] |
選擇匹配元素E癣缅,且E元素定義了屬性att纫事,其屬性值以val開頭 的任何字符串。 |
E[att$="val"] |
選擇匹配元素E所灸,且E元素定義了屬性att丽惶,其屬性值以val結(jié)尾 的任何字符串,剛好與E[att^="val"]相反爬立。 |
E[att*="val"] |
選擇匹配元素E钾唬,且E元素定義了屬性att,其屬性值任意位置包含 了"val"。換句話說抡秆,字符串與屬性值中的任意位置相匹配奕巍。 |
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>屬性選擇器</title>
<style>
/*通配符選擇器*/
a[class^="column"] {
background: red;
}
a[href$="doc"] {
background: green;
}
a[title*="box"] {
background: yellow;
}
</style>
</head>
<body>
<a href="##" class="columnNews">我的背景想變成紅色</a>
<a href="##" class="columnVideo">我的背景想變成紅色</a>
<a href="##" class="columnAboutUs">我的背景想變成紅色</a><br />
<a href="1.doc">我的背景想變成綠色</a>
<a href="2.doc">我的背景想變成綠色</a><br />
<a href="##" title="this is a box">我的背景想變成黃色</a>
<a href="##" title="box1">我的背景想變成黃色</a>
<a href="##" title="there is two boxs">我的背景想變成黃色</a>
</body>
</html>
結(jié)構(gòu)性偽類選擇器
-
:root選擇器
:根選擇器
,其含義為匹配元素E所在文檔的根元素儒士。在HTML文檔中的止,根元素始終是<html>
。
- 通過
:root
選擇器設置背景顏色:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>結(jié)構(gòu)性偽類選擇器—root</title>
<style type="text/css">
/* :root {
background-color: pink;
}*/
/*:root等同于html標簽樣式*/
html {
background: pink;
}
</style>
</head>
<body>
<div>Root選擇器修改HTML元素的背景顏色</div>
</body>
</html>
-
:not選擇器
:否定選擇器
着撩,和jQuery中的:not選擇器一模一樣诅福,可以選擇除某個元素之外的所有元素
。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>結(jié)構(gòu)性偽類選擇器—not</title>
<style type="text/css">
div {
padding: 10px 20px;
/* min-height屬性設置元素的最小高度拖叙,
保證沒有內(nèi)容時能撐高對象盒子*/
min-height: 40px;
}
/*自定義否定選擇器樣式*/
.test div:not([id="footer"]) {
background: orange;
}
form {
width: 200px;
margin: 20px auto;
}
form div {
margin-bottom: 20px;
}
/*給表單中除submit按鈕之外的input元素添加紅色邊框*/
form input:not([type="submit"]) {
border: 1px solid red;
}
</style>
</head>
<body>
<form action="#">
<div>
<label for="name">Account Input:</label>
<input type="text" name="name" id="name" placeholder="請輸入用戶名" />
</div>
<div>
<label for="pwd">Password Input:</label>
<input type="password" name="pwd" id="pwd" placeholder="請輸入密碼" />
</div>
<div>
<input type="submit" value="Submit" />
</div>
</form> ?
<div class="test">
<div id="header">頁頭</div>
<div id="page">頁體</div>
<div id="footer">頁腳</div>
</div>
</body>
</html>
-
:empty選擇器
:表示空
氓润,用來選擇沒有任何內(nèi)容的元素
,這里沒有內(nèi)容
指的是一點內(nèi)容都沒有
薯鳍,哪怕是一個空格
咖气。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>結(jié)構(gòu)性偽類選擇器—empty</title>
<style type="text/css">
div {
min-height: 30px;
}
div:empty {
border: 1px solid green;
}
p {
background: orange;
min-height: 30px;
}
p:empty {
/*空標簽不顯示樣式*/
display: none;
}
</style>
</head>
<body>
<div>我這里有內(nèi)容</div>
<div> </div><!-- 這里有一個空格 -->
<div></div><!-- 這里任何內(nèi)容都沒有 -->
<p>我是一個段落</p>
<p> </p> <!-- 這里有一個空格 -->
<p></p>?<!-- 這里任何內(nèi)容都沒有 -->
</body>
</html>
-
:target選擇器
:目標選擇器
,用來匹配文檔(頁面)的url的某個標志符的目標元素
挖滤。# 錨的名稱
是在一個文件中鏈接到某個元素的URL崩溪,元素被鏈接到目標元素
。這個有點像markdown中[toc]生成目錄后有鏈接到當前文章中某個小標題一樣斩松!
1伶唯、具體來說,觸發(fā)元素的URL中的標志符
通常會包含一個#號
砸民,后面帶有一個標志符名稱
抵怎,例如下面代碼中是:#brand1等;
2岭参、:target
就是用來匹配id為brand1
的元素(id="brand`"的元素)反惕,即下面代碼中的那個div元素!
3演侯、多個url(多個target)處理:只要#號后的名稱與id=""中的名稱對應即可實現(xiàn)目標跳轉(zhuǎn)姿染。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>結(jié)構(gòu)性偽類選擇器—target</title>
<style type="text/css">
/*這里的:target就是指id="brand"的div對象,
當有多個target時秒际,隨著鼠標的點擊會自動跳轉(zhuǎn)并顯示對應的元素*/
#brand:target p {
background: orange;
color: #fff;
}
#jake:target {
background: blue;
color: #fff;
}
#aron:target {
background: red;
color: #fff;
}
a {
/*去掉鏈接下劃線*/
text-decoration: none;
}
</style>
</head>
<body>
<div class="menuSection" id="brand">
<h2><a href="#brand">Brand1</a></h2>
<p>content for Brand</p>
</div>
<h2><a href="#jake">Brand2</a></h2>
<div class="menuSection" id="jake">
content for jake
</div>
<h2><a href="#aron">Brand3</a></h2>
<div class="menuSection" id="aron">
content for aron
</div>
</body>
</html>
-
:first-child選擇器
:表示選擇父元素的第一個子元素
的元素E悬赏。注意:是子元素
,而不是后代元素
娄徊。
-
>
:表示子代選擇器
闽颇。空格
:表示后代選擇器
。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>結(jié)構(gòu)性偽類選擇器—first-child</title>
<style type="text/css">
/*通過:first-child選擇器定位列表中的第一個列表項寄锐,并將序列號顏色變?yōu)榧t色兵多。*/
.test1>li:first-child {
color: red;
}
/*
'>':表示子代選擇器
將ul標簽中所有l(wèi)i標簽的項目號顏色改為黃色*/
.test2>li {
color: yellow;
}
</style>
</head>
<body>
<!-- 無序列表 -->
<ul class="test1">
<li><a href="##">Link1</a></li>
<li><a href="##">Link2</a></li>
<li><a href="##">Link3</a></li>
<li><a href="##">Link4</a></li>
<li><a href="##">Link5</a></li>
</ul >
<ul class="test2">
<li><a href="##">Linka</a></li>
<li><a href="##">Linkb</a></li>
<li><a href="##">Linkc</a></li>
<li><a href="##">Linkd</a></li>
<li><a href="##">Linke</a></li>
</ul>
</body>
</html>
-
:last-child
選擇器:表示的是選擇父元素的最后一個子元素
的元素E尖啡。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>結(jié)構(gòu)偽類選擇器——last-child</title>
<style type="text/css">
ul {
border: 1px solid #ffc107;
/*去除項目列表樣式*/
list-style: none outside none;
width: 220px;
margin: 20px auto;
padding: 0;
}
ul>li {
list-style: none outside none;
margin: 0;
padding: 10px;
border-bottom: 3px solid #f44336;
}
/*刪除列表中最后一個列表項的底部邊框*/
ul>li:last-child {
border-bottom: none;
}
</style>
</head>
<body>
<ul>
<li>Item1</li>
<li>Item2</li>
<li>Item3</li>
<li>Item5</li>
<li>Item6</li>
</ul>
</body>
</html>
-
:nth-child(n)
選擇器:用來定位某個父元素的一個或多個特定的子元素
。其中n
是其參數(shù)剩膘,而且可以是整數(shù)值
(1,2,3,4)衅斩、表達式
(2n+1、-n+5)或關(guān)鍵詞
(odd怠褐、even)畏梆,但參數(shù)n的起始值始終是1
,而不是0
奈懒。當參數(shù)n=0時奠涌,選擇器將選擇不到任何匹配的元素!當n為一個表達式
時筐赔,其中n是從0開始
計算铣猩,當表達式的值為0或小于0的時候揖铜,不選擇任何匹配的元素茴丰。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>結(jié)構(gòu)性偽類選擇器—nth-child(n)</title>
<style type="text/css">
ol>li:nth-child(2n+1) {
background: orange;
}
</style>
</head>
<body>
<!-- 有序列表 -->
<ol>
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
<li>item5</li>
<li>item6</li>
<li>item7</li>
<li>item8</li>
<li>item9</li>
<li>item10</li>
</ol>
</body>
</html>
-
:nth-last-child(n)
選擇器:從某父元素的最后一個子元素開始計算,來選擇特定的元素
天吓。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>結(jié)構(gòu)性偽類選擇器—nth-last-child(n)</title>
<style type="text/css">
/*選擇列表中倒數(shù)第五個列表項贿肩,將其背景設置為橙色。*/
ol>li:nth-last-child(5) {
background: orange;
}
</style>
</head>
<body>
<ol>
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
<li>item5</li>
<li>item6</li>
<li>item7</li>
<li>item8</li>
<li>item9</li>
<li>item10</li>
</ol>
</body>
</html>
-
:first-of-type
選擇器:用來定位一個父元素下的某個相同類型的第一個子元素
龄寞。其與:first-child
的不同之處在于后者匹配的是某個父元素的第一個子元素汰规,是結(jié)構(gòu)上
的第一個子元素!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>練習:first-of-type</title>
<style type="text/css">
.wrapper {
width: 500px;
margin: 20px auto;
padding: 10px;
border: 1px solid #ccc;
color: #fff;
}
.wrapper>div {
background: green;
}
.wrapper>p {
background: blue;
}
/*改變第一個段落p標簽的背景顏色為橙色*/
.wrapper>p:first-of-type {
background: orange;
}
</style>
</head>
<body>
<div class="wrapper">
<div>我是一個塊元素物邑,我是.wrapper的第一個子元素</div>
<p>我是一個段落元素溜哮,我是不是.wrapper的第一個子元素,但是他的第一個段落元素</p>
<p>我是一個段落元素</p>
<div>我是一個塊元素</div>
</div>
</body>
</html>
設置父元素div下的p標簽元素的第一個子元素的樣式
-
:nth-of-type(n)
選擇器:只計算父元素中指定的某種類型的子元素
色解。在:nth-of-type(n)
選擇器中的n
與:nth-child(n)
選擇器中的n
參數(shù)一樣茂嗓,可以是整數(shù)
、表達式
科阎、關(guān)鍵詞
述吸。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>練習:nth-of-type()</title>
<style type="text/css">
/*通過:nth-of-type(2n)選擇器,將容器"div.wrapper"中偶數(shù)段數(shù)p標簽的背景顏色設置為橙色锣笨。*/
.wrapper>p:nth-of-type(2n) {
background: orange;
}
</style>
</head>
<body>
<div class="wrapper">
<div>我是一個Div元素</div>
<p>我是一個段落元素</p>
<div>我是一個Div元素</div>
<p>我是一個段落</p>
<div>我是一個Div元素</div>
<p>我是一個段落</p>
<div>我是一個Div元素</div>
<p>我是一個段落</p>
<div>我是一個Div元素</div>
<p>我是一個段落</p>
<div>我是一個Div元素</div>
<p>我是一個段落</p>
<div>我是一個Div元素</div>
<p>我是一個段落</p>
<div>我是一個Div元素</div>
<p>我是一個段落</p>
</div>
</body>
</html>
-
:last-of-type
選擇器:選擇父元素下的某個相同類型的最后一個子元素
蝌矛。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>屬性選擇器</title>
<style type="text/css">
.wrapper>p:last-of-type {
background: orange;
}
</style>
</head>
<body>
<div class="wrapper">
<p>我是第一個段落</p>
<p>我是第二個段落</p>
<p>我是第三個段落</p>
<div>我是第一個Div元素</div>
<div>我是第二個Div元素</div>
<div>我是第三個Div元素</div>
</div>
</body>
</html>
設置父元素.wrapper下p標簽的最后一個子元素的樣式
-
:nth-last-of-type(n)
選擇器:從最后一個子元素開始選擇父元素中指定某個相同類型的子元素
。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>nth-last-of-type(n)</title>
<style type="text/css">
.wrapper>p:nth-last-of-type(3) {
background: orange;
}
</style>
</head>
<body>
<div class="wrapper">
<p>我是第一個段落</p>
<p>我是第二個段落</p>
<p>我是第三個段落</p>
<p>我是第四個段落</p>
<p>我是第五個段落</p>
<div>我是一個Div元素</div>
<p>我是第六個段落</p>
<p>我是第七個段落</p>
</div>
</body>
</html>
-
:only-child
選擇器:表示選擇匹配元素的父元素中僅有一個子元素错英,且是一個唯一的子元素入撒。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>屬性選擇器</title>
<style type="text/css">
li {
background: green;
padding: 10px;
margin-bottom: 5px;
}
li:only-child {
background: orange;
}
</style>
</head>
<body>
<ul>
<li>Item1</li>
<li>Item2</li>
<li>Item3</li>
</ul>
<ul>
<li>Item1</li>
</ul>
<ol>
<li>Item1</li>
</ol>
<ol>
<li>Item1</li>
<li>Item2</li>
<li>Item3</li>
</ol>
</body>
</html>
-
:only-of-type
選擇器:選擇父元素下唯一一個相同類型的子元素
。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>屬性選擇器</title>
<style type="text/css">
.wrapper {
border: 1px solid #ccc;
padding: 10px;
width: 500px;
margin: 10px auto;
}
.wrapper p:only-of-type {
background: orange;
}
</style>
</head>
<body>
<div class="wrapper">
<p>我是一個段落</p>
<p>我是一個段落</p>
<p>我是一個段落</p>
</div>
<div class="wrapper">
<p>我是一個段落</p>
</div>
<div class="wrapper">
<div>我是一個Div元素</div>
<p>我是一個段落</p>
<div>我是一個Div元素</div>
</div>
</body>
</html>
設置父元素.wrapper下僅有一個p標簽的元素樣式