css3 偽元素和偽類選擇器詳解

偽類選擇器:CSS中已經(jīng)定義好的選擇器,不能隨便取名
常用的偽類選擇器是使用在a元素上的幾種,`如a:link|a:visited|a:hover|a:active`
提示:在 CSS 定義中,a:hover 必須被置于 a:link 和 a:visited 之后,才是有效的。
提示:在 CSS 定義中,a:active 必須被置于 a:hover 之后,才是有效的。
偽元素選擇器:并不是針對真正的元素使用的選擇器,而是針對CSS中已經(jīng)定義好的偽元素使用的選擇器。
CSS中有如下四種偽元素選擇器:
· first-line:為某個(gè)元素的第一行文字使用樣式;
· first-letter:為某個(gè)元素中的文字的首字母或第一個(gè)字使用樣式;
· before:在某個(gè)元素之前插入一些內(nèi)容;
· after: 在某個(gè)元素之后插入一些內(nèi)容;
使用方法:選擇器:偽元素{樣式}
結(jié)構(gòu)性偽類選擇器
1. 四個(gè)最基本的:root、not、empty、target
2. first-child、last-child、nth-child、nth-last-child、
nth-child(odd)、nth-child(even)、nth-last-child(odd)、nth-last-child(even)
3. nth-of-type、nth-last-of-type
4. 循環(huán)使用樣式
5. only-child
:root()選擇器,從字面上我們就可以很清楚的理解是根選擇器,他的意思就是匹配元素E所在文檔的根元素。在HTML文檔中,根元素始終是<html>。“:root”選擇器等同于<html>元素
:not()選擇器稱為否定選擇器,和jQuery中的:not選擇器一模一樣,可以選擇除某個(gè)元素之外的所有元素。
:empty()選擇器表示的就是空。用來選擇沒有任何內(nèi)容的元素,這里沒有內(nèi)容指的是一點(diǎn)內(nèi)容都沒有,哪怕是一個(gè)空格。
:target()選擇器來對頁面某個(gè)target元素(該元素的id被當(dāng)做頁面中的超鏈接來使用)指定樣式,該樣式只在用戶點(diǎn)擊了頁面中的超鏈接,并且跳轉(zhuǎn)到target元素后起作用
“:first-child()”選擇器表示的是選擇父元素的第一個(gè)子元素的元素E。簡單點(diǎn)理解就是選擇元素中的第一個(gè)子元素,記住是子元素,而不是后代元素。
:nth-child()選擇某個(gè)元素的一個(gè)或多個(gè)特定的子元素;
:nth-last-child()從某父元素的最后一個(gè)子元素開始計(jì)算,來選擇特定的元素。
看下面一個(gè)例子:
<style type="text/css">
div p:nth-last-child(2){
color:red;
}
</style>
</head>
<body>
<div>
<p>前端</p>
<p>開發(fā)</p>
<p>工程</p>
<p>軟件</p>
<p>工程</p>
</div>
</body>
:nth-child()可以選擇某個(gè)的一個(gè)或多個(gè)特定的子元素,你可以按這種方式進(jìn)行選擇:
:nth-child(length);/*參數(shù)是具體數(shù)字*/
:nth-child(n);/*參數(shù)是n,n從0開始計(jì)算*/
:nth-child(n*length)/*n的倍數(shù)選擇,n從0開始算*/
:nth-child(n+length);/*選擇大于length后面的元素*/
:nth-child(-n+length)/*選擇小于length前面的元素*/
:nth-child(n*length+1);/*表示隔幾選一*/
//上面length為整數(shù)
值得注意的是:nth-child(0)沒有選擇元素,nth-child(1)選擇第一個(gè)元素。
<style type="text/css">
*{list-style:none;};
.demo {
width: 400px;
padding: 10px;
}
.demo li {
padding: 5px;
float: left;
margin-right:4px;
}
.demo li a {
float: left;
display: block;
height: 20px;
line-height: 20px;
width: 20px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
text-align: center;
background: #f36;
color: white;
text-decoration: none;
}
.demo li:nth-child(1){
background:#01FEFE;
}
.demo li:nth-child(2n){
background:#4679BD;
}</p> <p> </style>
</head>
<body>
<div class="demo">
<ul>
<li class="one" id="first"><a href="">1</a></li>
<li class="two"><a href="">2</a></li>
<li class="three"><a href="">3</a></li>
<li class="four"><a href="">4</a></li>
<li class="five"><a href="">5</a></li>
<li class="six"><a href="">6</a></li>
<li class="seven"><a href="">7</a></li>
<li class="eight"><a href="">8</a></li>
<li class="nine"><a href="">9</a></li>
<li class="ten" id="last"><a href="">10</a></li>
</ul>
</div>
“:nth-of-type(n)”選擇器和“:nth-child(n)”選擇器非常類似,不同的是它只計(jì)算父元素中指定的某種類型的子元素。當(dāng)某個(gè)元素中的子元素不單單是同一種類型的子元素時(shí),使用“:nth-of-type(n)”選擇器來定位于父元素中某種類型的子元素是非常方便和有用的。
":only-child"表示的是一個(gè)元素是它的父元素的唯一一個(gè)子元素。
偽元素:
CSS中的偽元素大家以前看過::first-line,:first-letter,:before,:after;
那么在CSS3中,他對偽元素進(jìn)行了一定的調(diào)整,在以前的基礎(chǔ)上增加了一個(gè)“:”也就是現(xiàn)在變成了“::first-letter,::first-line,::before,::after”另外他還增加了一個(gè)“::selection”,兩個(gè)“::”和一個(gè)“:”css3中主要用來區(qū)分偽類和偽元素,到目前來說,這兩種方式都是被接受的,也就是說不管使用哪種寫法所起的作用都是一樣的,只是一個(gè)書寫格式不同而以。
::first-line選擇元素的第一行,比如說改變每個(gè)段落的第一行文本的樣式,我們就可以使用這個(gè)
p::first-line {font-weight:bold;}
::before和::after這兩個(gè)主要用來給元素的前面或后面插入內(nèi)容,這兩個(gè)常用"content"配合使用,見過最多的就是清除浮動(dòng),
.clearfix:before,
.clearfix:after {
content: ".";
display: block;
height: 0;
visibility: hidden;
}
.clearfix:after {clear: both;}
.clearfix {zoom: 1;}
::selection用來改變?yōu)g覽網(wǎng)頁選中文的默認(rèn)效果
相關(guān)文章
詳解如何使用CSS3中的結(jié)構(gòu)偽類選擇器和偽元素選擇器
這篇文章主要介紹了詳解如何使用CSS3中的結(jié)構(gòu)偽類選擇器和偽元素選擇器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面2020-01-06- CSS偽元素能使我們添加案定的HTML元素之外的元素,這里我們就來解析CSS中的偽元素及其與偽類的區(qū)別,需要的朋友可以參考下2016-06-27
- 這篇文章主要介紹了詳解CSS中的偽類與偽元素及二者間的區(qū)別,實(shí)際上CSS3中規(guī)范了一種簡單粗暴的方法,即偽類前用一個(gè)冒號表示,而偽元素前用兩個(gè)冒號表示,這樣就不容易混淆了,2016-04-28
- 本文向大家展示了CSS的偽類與偽元素,介紹的非常全面,這里推薦給大家參考下。2014-12-04
- 偽類和偽元素不是真正意義上的html存在的類和元素,他們的存在是為了方便對狀態(tài)和位置進(jìn)行樣式定義。具體他們之間有什么區(qū)別呢,這就是今天我們需要討論的問題了2014-11-23
- CSS偽類及偽元素選擇器,如超鏈接的a:link、a:visited、a:hover等等,本文整理了一些,喜歡的朋友可以收藏下2013-11-27
- css偽類偽元素域高級選擇器的介紹,需要的朋友可以參考一下2013-02-26
- 關(guān)于兩者的區(qū)別,其實(shí)是很古老的問題.這里著重寫的是為什么這兩者不同,以及一些平時(shí)容易錯(cuò)過的細(xì)節(jié),需要的朋友可以參考下2012-12-07
- 這篇文章主要介紹了淺談CSS 偽元素&偽類的妙用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)2020-09-01