天天看點

僞類選擇器和僞元素

僞類選擇器

僞類選擇器有以下6種:

  • 動态僞類:
    • 錨點僞類
    • 使用者行為僞類
  • 目标僞類
  • UI元素狀态僞類
  • 否定僞類選擇器
  • 語言僞類選擇器
  • CSS3結構僞類
動态僞類

這些僞類并不存在于HTML中,隻有當使用者和網站互動的時候才能展現出來

錨點僞類 link visited hover active(一定要按照這個順序寫)

使用者行為僞類 hover active focus

目标僞類

用于命名錨記

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            height: 600px;
            font-size: 100px;
            text-align: center;
            line-height: 600px;
        }
        /* 目标添加效果 */
        div:target{
            background: yellowgreen;
            color: yellow;
        }
    </style>
</head>
<body>
    <p>
        <a href="#box1">1</a>
        <a href="#box2">2</a>
        <a href="#box3">3</a>
        <a href="#box4">4</a>
        <a href="#box5">5</a>
    </p>
    <div id="box1">1</div>
    <div id="box2">2</div>
    <div id="box3">3</div>
    <div id="box4">4</div>
    <div id="box5">5</div>
</body>
</html>
           
UI元素狀态僞類

概念:

​ 我們把“:enabled”,“:disable”,“:checked”,“:seclect"僞類稱為UI元素狀态僞類

相容性:

​ IE9+,FireFox、Chrome、Safari、Opera

否定選擇器(:not)

概念:

​ :not(Element/selector) 選中除了括号裡的其它元素

相容性:

​ IE9+,FireFox,Chrome,Safari,Opera

舉個例子:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>not</title>
<style type="text/css">
* {
	margin: 0;
	padding: 0;
	border: none;
}
a {
	text-decoration: none;
	color: #333;
	font-size: 14px;
	display: block;
	float: left;
	width: 100px;
	height: 30px;
}
nav {
	width: 800px;
	margin: 0 auto;
}
nav > a:not(:last-of-type) { /*除了最後一個a沒有被選中,nav下的所有a都被選中*/ 
	border-right: 1px solid red;
}
</style>
</head>
<body>
<nav>
	<a href="#">first</a>
	<a href="#">second</a>
	<a href="#">third</a>
	<a href="#">fourth</a>
	<a href="#">fifth</a> <!-- 最後一個沒有右邊框效果 -->
</nav>
</body>
</html>
           
語言僞類選擇器

用來比對使用指定語言的元素

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       p:lang(zh-cn){
           background-color: red;
       }
    </style>
</head>
<body>
    <p lang="en"><q>Quote in English</q></p>
    <p lang="zh-cn"><q>中文的引号</q></p>
</body>
</html>
           
CSS3結構僞類

CSS3的:nth選擇器

​ 我們把CSS3的:nth選擇器也稱為CSS3結構類

選擇方法:

​ :first-child,:last-child,:nth-child(),:nth-last-chld,nth-of-type(),:nth-last-of-type(),:first-of-type(),:last-of-type,:only-child,:only-of-type,:empty

Element:first-child

概念:

​ 選擇第一個元素

相容性:

​ IE8+,FireFox、Chrome、Safari、Opera

Element:last-child

概念:

​ 選擇最後一個元素

相容性:

​ IE8+,FireFox、Chrome、Safari、Opera

Element:nth-child()

概念:

​ 選擇确切的位置上的元素,nth-child(1)等于first-child

相容性:

​ IE9+,FireFox4+,Chrome,Safari,Opera

關于參數(n)

​ nth-child(n)選取每一行

​ n:所有的行

​ 2n:每2行選擇一行

​ 3n:每3行選擇一行

​ n+2:除第1行外所有的行

​ 2n+4:從第4行開始隔1行選擇1行

​ :nth-last-child(n) 從後向前選擇,n為參數

​ n:所有行

​ 2:倒數第2行

​ -n+3:最後3行

​ :only-child隻有一個元素時使用

Element:nth-last-child(N)

概念:

​ 比對屬于其元素的第N個子元素的每個元素,不論元素的類型,從最後一個子元素開始計數

相容性:

​ IE9+,FireFox4+,Chrome,Safari,Opera

Element:nth-of-type(N)

概念:

​ :nth-of-type(N)選擇比對屬于父元素的特定類型的第N個子元素的每個元素

相容性:

​ IE9+,FireFox4+,Chrome,Safari,Opera

Element:nth-last-of-type(N)

概念:

​ 比對屬于父元素的特定類型的第N個子元素的每個元素,從最後一個子元素開始計數

相容性:

​ IE9+,FireFox4+,Chrome,Safari,Opera

Element:first-of-type

概念:

​ :first-of-type選擇器比對屬于其父元素的特定的首個子元素的每個元素

相容性:

​ IE9+,FireFox4+,Chrome,Safari,Opera

Element:last-of-type

概念:

​ :last-of-type選擇器比對屬于其父元素的特定的首個子元素的每個元素

相容性:

​ IE9+,FireFox4+,Chrome,Safari,Opera

Element:only-child

概念:

​ :only-child選擇器比對屬于其父元素的唯一子元素的每個元素

相容性:

​ IE9+,FireFox,Chrome,Safari,Opera

Element:only-of-type

概念:

​ :only-of-type選擇器比對屬于其父元素的特定類型的唯一子元素的每個元素

相容性:

​ IE9+,FireFox4+,Chrome,Safari,Opera

Element:empty

概念:

​ :empty選擇器比對沒有子元素(包括文本節點)的每個元素

相容性:

​ IE9+,FireFox,Chrome,Safari,Opera

僞元素

CSS僞元素用于向某些選擇器設定特殊效果

文法格式:

​ 元素::僞元素 (Element::pseudo-element)

相容性:

​ IE9+,FireFox,Chrome,Safari,Opera

Element::first-line

概念:

​ 根據“first-line”僞元素中的樣式對Element元素的第一行文本進行格式化

說明:

​ “first-line”僞元素隻能用于塊級元素

Element::first-letter

概念:

​ 用于向文本的首字母設定特殊樣式

說明:

​ “first-letter”僞元素隻能用于塊級元素

Element::before

概念:

​ 在元素的内容前面插入新的内容

說明:

​ 常用“content”配合使用

Element::after

概念:

​ 在元素的内容後面插入新内容

說明:

​ 常用“content”配合使用,多用于清除浮動

Element::selection

概念:

用于設定在浏覽器選中文本後的背景色和前景色

相容性說明:

::selection在IE家族中,隻有IE9+版本支援,在Firefox中需要加上其字首“-moz”

僞類選擇器和僞元素選擇器的差別

css僞類:狀态僞類基于元素目前狀态進行選擇的。結構僞類利用dom樹進行元素過濾,通過文檔結構的互相關系來比對元素。

css僞元素:對元素中的特定内容進行操作,而不是描述狀态。

css3為了區分兩者僞類使用單冒号,僞元素使用雙冒号,但因為相容問題現在大部分還是用單冒号。