1. 程式人生 > >CSS 選擇器常見型別

CSS 選擇器常見型別

E、F、G代表任意元素;attribute【簡寫成attr】代表任意元素的屬性,value代表屬性的屬性值;

基本選擇符:

基本選擇器符號/其他標記 語法 名稱 說明 範例 版本
*(星號) * {property:value;} 通用選擇器 匹配所以元素 p *{color:#00FF00} CSS2
E E{property:value;} 型別選擇器 匹配指定標記的元素 p{color:#00FF00} CSS1
#(井號) #myid{property:value;}
E#myid{property:value;}
ID選擇器 匹配唯一標識id屬性為myid的E元素 #intor{text-align:center} CSS1
.(實點) .myclass{property:value;}
E.myclass{property:value;}
類選擇器 匹配class屬性為myclassd的所有E元素 .important {color:red;}
p.important {color:red;}
.important.urgent {background:silver;}
CSS1

瀏覽器測試: Chrome 60.0.3112.113、IE 11.0、Firefox 55

  • 通用選擇器
      在通用選擇,寫有“*”,匹配任意元素型別的名稱。它匹配文件樹中的任何單個元素。
    如果通用選擇器不是簡單選擇器的唯一元件,則可以省略“*”。例如:

    • *[lang=fr] 並且[lang=fr]是相當的。
    • *.warning並且.warning是相當的。
    • *#myid並且#myid是相當的。

注意:
1、任意元素或選擇器的前面放在 *;
2、* 和任意元素或選擇器之間新增空格;

樣例:
CSS 四種程式碼:

*{
    font-family:"Microsoft YaHei"; /*關於微軟雅黑字型呈現效果:使用"YaHei":Chrome、Firefox呈現效果,而IE無法顯示;使用"Microsoft YaHei":Chrome、Firefox、IE都能呈現效果。*/
}
* p{ color:#0000FF; text-decration:underline; } * .container{ border: 1px solid #0000ff; } .container{ border:1px solid #0000ff; width:220px; *width:300px; }

HTML程式碼 一:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>test測試</title>
    <style type="text/css">
    * .container{
        border: 1px solid #0000ff;
    }
    </style>
</head>
<body>
    <p><span class="container">通用選擇器</span>全體元素都受到影響</p>
    <p>這個段落不受該樣式的影響。</p>
    <hr/>
    <ul class="container">雪糕味道:
        <li>芒果味</li>
        <li><strong>茉莉</strong></li>
        <li>草莓味</li>
        <li>巧克力味</li>
    </ul>
    <p class="container">h1~h2 標題效果:</p>
    <h1 class="container">一級標題</h1>
    <h2>二級標題</h2>
</body>
</html>

執行結果:
這裡寫圖片描述

Chrome、Firefox、IE呈現效果一樣。

HTML程式碼二:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>test測試</title>
    <style type="text/css">
    .container{
        border:1px solid #0000ff;
        width:220px;
        *width:300px;
    }
    </style>
</head>
<body>
    <p><span class="container">通用選擇器</span>全體元素都受到影響</p>
    <p>這個段落不受該樣式的影響。</p>
    <hr/>
    <ul class="container">雪糕味道:
        <li>芒果味</li>
        <li><strong>茉莉</strong></li>
        <li>草莓味</li>
        <li>巧克力味</li>
    </ul>
    <p class="container">h1~h2 標題效果:</p>
    <h1 class="container">一級標題</h1>
    <h2>二級標題</h2>
</body>
</html>

執行結果:
這裡寫圖片描述
Chrome、Firefox、IE呈現效果一樣。

關於CSS hack問題:
由於不同廠商的流覽器或某瀏覽器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),對CSS的支援、解析不一樣,導致在不同瀏覽器的環境中呈現出不一致的頁面展現效果。

  • 型別選擇器
    樣例:
    CSS 程式碼:
p{
    color:#0000FF;
    text-decration:underline;
}

h1{
    color:color:#01eecc;
}

li{
    color:#07aa00;
}

HTML程式碼:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>test測試</title>
    <style type="text/css">
        p{
            color:#0000FF;
            text-decration:underline;
        }
        h1{
            color:#01eecc;
        }
        li{
            color:#07aa00;
        }       
    </style>

</head>
<body>
    <ul>雪糕味道:
        <li>芒果味</li>
        <li><strong>茉莉</strong></li>
        <li>草莓味</li>
        <li>巧克力味</li>
    </ul>
    <p>h1~h2 標題效果:</p>
    <h1>一級標題</h1>
    <h2>二級標題</h2>
</body>
</html>

執行結果:
這裡寫圖片描述

Chrome、Firefox、IE呈現效果一樣。

關係選擇器:

關係選擇器 語法 名稱 說明 版本
, (逗號) E,F,G{property:value;} 選擇器分組 選擇所有的E元素、F元素和G元素 CSS1
空格 E F{property:value;} 包含選擇符/後代選擇器 選擇所有被E元素包含或者後代的F元素 CSS1
>(大於) E>F{property:value;} 子元素選擇器 選擇所有作為E元素的子元素F CSS2
+(加號) E+F{property:value;} 相鄰選擇器 選擇緊貼在E元素之後的F元素 CSS2
~(波浪號) E~F{property:value;} 間接相鄰選擇器 選擇緊跟E元素之後相鄰的全部元素F CSS3

屬性選擇器:

注意:E 代表任意元素。
這裡寫圖片描述

簡單屬性選擇:E[attr]
CSS 程式碼:

<style src="text/css">
/*兩個[]方括號之間不能有空格,否者無法呈現效果*/
    *[title] {color:red;}
    a[href][title]{color:#ff0000;}
    img[alt]{border: 10px solid #32db18;}
</style>

HTML 程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>test測試</title>
    <style type="text/css">
        a[href][title]{color:#ff0000;}
        img[alt]{border: 10px solid #32db18;}
    </style>
</head>
<body>
    <p>被應用樣式:</p>
    <a href="http://new.baidu.com" title="百度新聞搜尋——全球最大的中文新聞平臺">百度新聞</a>
    <a href="http://http://www.csdn.net" title="CSDN首頁">CSDN官網</a>
    <a href="http://http://image.baidu.com" title="百度圖片-發現多彩世界">百度圖片</a><br/><br/>
    <img src="./time.png" align="baseline" alt="頭像"/>

    <p>無法應用樣式:</p>
    <a href="http://new.baidu.com/society" name="百度新聞">社會新聞</a>
    <a href="http://http://www.csdn.net" >CSDN官網</a>
    <a title="CSDN首頁">CSDN官網</a>
</body>
</html>

執行結果:
這裡寫圖片描述

根據具體屬性值選擇
CSS 程式碼:

<style src="text/css">
    a[href="http://new.baidu.com"]{color: #e20600;}
    /*兩個[]方括號之間不能有空格,否者無法呈現效果*/
    a[href="http://new.baidu.com"][title="百度新聞"]{color: #CC2582;}
    /*結合class選擇器使用*/
    p[class="important warning"] {color:#24CC03;} 
</style>

HTML 程式碼1:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="utf-8">
    <title>test測試</title>
    <head>
    <meta charset="utf-8">
    <title>test測試</title>
    <style type="text/css">
        a[href="http://new.baidu.com"]{color: #e20600;}
    </style>
</head>
<body>

    <p class="important warning">被應用樣式:</p>
    <a href="http://new.baidu.com" title="百度新聞">百度新聞</a>


    <p class="important">無法應用樣式:</p>
    <a href="http://new.baidu.com/gounei" title="百度新聞">國內新聞</a>
    <a href="http://new.baidu.com/gouji" title="百度新聞">國際新聞</a>
    <a href="http://http://image.baidu.com" title="百度圖片-發現多彩世界">百度圖片</a>
    <a href="http://http://www.csdn.net" title="CSDN首頁">CSDN官網</a>
</body>
</html>

執行效果:
這裡寫圖片描述

HTM 程式碼2:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>test測試</title>
    <style type="text/css">
        a[href="http://new.baidu.com"][title="百度新聞"]{color: #CC2582;}
        p[class="important warning"] {color:#24CC03;}
    </style>
</head>
<body>
    <p class="important warning">被應用樣式:</p>
    <a href="http://new.baidu.com" title="百度新聞">百度新聞</a>

    <p class="important">無法應用樣式:</p>
    <a href="http://new.baidu.com/gounei" title="百度新聞">國內新聞</a>
    <a href="http://http://image.baidu.com" title="百度圖片-發現多彩世界">百度圖片</a>
    <a href="http://http://www.csdn.net" title="CSDN首頁">CSDN官網</a>
</body>
</html>

執行結果:
這裡寫圖片描述

根據部分屬性值選擇
CSS 程式碼:

<style src="text/css">
    p[class~="important"]{color:#24CC03;}
</style>

HTML 程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>test測試</title>
    <style type="text/css">
        p[class~="important"]{color:#24CC03;}
    </style>
</head>
<body>
    <p class="important warning">第一段落被應用樣式</p>
    <p class="important">第二段落被應用樣式</p>
    <p class="warning">第三段落無法應用樣式:</p>
</body>
</html>

執行結果:
這裡寫圖片描述

部分值屬性選擇器與點號類名記法的區別
CSS 程式碼:

<style src="text/css">
    img[title~="Figure"]{border: 1px solid gray;}
</style>

HTML 程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>test測試</title>
    <style type="text/css">
        img[title~="Figure"]
        {
            border: 10px solid gray;
        }
    </style>
</head>
<body>
    <h2>可以應用樣式:</h2>
    <img title="Figure 1" src="松鼠.png" />
    <img title="Figure 2" src="兔子.png" />
    <hr />
    <h1>無法應用樣式:</h1>
    <img src="松鼠.png" />
    <img src="兔子.png" />
</body>
</html>

執行結果:
這裡寫圖片描述

子串匹配屬性選擇器
* E[attr*=”value”] 選擇器
CSS 程式碼:

<style src="text/css">
    a[href*="http://new.baidu.com"][title="百度新聞"]{color: #136c97;}
</style>
  • E[attr^=”value”] 選擇器**
    CSS 程式碼:
<style src="text/css">
    a[href^="http"]{color:#ff0000;}
</style>
  • E[attr$=”value”] 選擇器
    CSS 程式碼:
<style src="text/css">
    /*匹配屬性值以指定值結尾的每個元素。如下兩個CSS樣式,效果不同*/
    p[class$="test"]{background:#ffff00;}
    [class$="test"]{background:#FF8329;} 

</style>

HTML 程式碼一:

<!DOCTYPE html>
<html>
<head lang="zh-HK">
    <meta charset="utf-8">
    <title>test測試</title>
    <style type="text/css">
        p[class$="test"]
        {
            background:#ffff00;
        }
    </style>
</head>
<body>

    <p class="first_test">第一段落有應用樣式。</p>
    <p class="second">第二段落無法應用樣式。</p>
    <p class="test">第三段落有應用樣式。</p>
    <h2 class="test">標題無法應用樣式。</h2>

</body>
</html>

HTML 程式碼二:

<!DOCTYPE html>
<html>
<head lang="zh-HK">
    <meta charset="utf-8">
    <title>test測試</title>
    <style type="text/css">
        [class$="test"]
        {
            background:#FF8329;
        }
    </style>
</head>
<body>

    <p class="first_test">第一段落有應用樣式。</p>
    <p class="second">第二段落無法應用樣式。</p>
    <p class="test">第三段落有應用樣式。</p>
    <h2 class="test">標題無法應用樣式。</h2>

</body>
</html>
  • E[attr|=”value”]選擇器
    CSS 程式碼:
<style src="text/css">
[lang|=en]{background:yellow;}
[class|=top]{background-color:yellow;}
</style>

HTML 程式碼:

<!DOCTYPE html>
<html>
<head>
    <style>
        [class|=top]
        {
            background:yellow;
        }
    </style>
</head>

<body>
    <h1 class="top-header">Welcome</h1>
    <p class="top-text">Hello world!</p>
    <p class="content">Are you learning CSS?</p>

    <p><b>註釋:</b>對於 IE8 及更早版本的瀏覽器中的 [attribute|=value],必須宣告 <!DOCTYPE></p>
</body>
</html>

結構偽類選擇器:

注意:E 代表任意元素。

偽類選擇器 語法 說明 版本
:root E:root{property:value;} 選擇匹配E 元素所有文件的根元素 CSS2
:not(s) E:not(s){property:value;} 選擇匹配所有不匹配簡單選擇器s 的E 元素 CSS3
:empty E:empty{property:value;} 匹配沒有任何子元素(包括text節點)的元素E CSS3
:target E:target{property:value;} 匹配當前連結地址指向的E 元素 CSS3
:first-child E:first-child{property:value;} 匹配父元素的第一個子元素E CSS3
:last-child E:last-child{property:value;} 匹配父元素的最後一個子元素E CSS2
:n-child(n) E:n-child(n){property:value;} 匹配父元素的第n 個子元素E CSS3
:n-last-child(n) E:n-last-child(n){property:value;} 匹配父元素的倒數第n 個子元素E CSS3
:only-child E:only-child{property:value;} 匹配父元素的僅有的一個子元素E CSS3
:first-of-type E:first-of-type{property:value;} 匹配同類型中的第一個同級兄弟元素E CSS3
:last-of-type E:last-of-type{property:value;} 匹配同類型中的最後一個同級兄弟元素E CSS3
:only-of-type E:only-of-type{property:value;} 匹配同類型中的唯一一個同級兄弟元素E CSS3
:nth-of-type(n) E:nth-of-type(n){property:value;} 匹配同類型中的第n 個同級兄弟元素E CSS3
:nth-last-of-type(n) E:nth-last-of-type(n){property:value;} 匹配同類型中的倒數第n 個同級兄弟元素E CSS3

其中,E:nth-child(n)中的引數n,可以是一個數字,可以是關鍵字odd或even,可以是公式2n或2n-1等,n的索引起始值為1。

狀態偽類選擇器:

偽類選擇器 語法 說明 版本
:link E:link{property:value;} 設定未訪問的連結 CSS1
:visited E:visited{property:value;} 設定已訪問的連結 CSS1
:hover E:hover{property:value;} 設定游標移動到連結上時 CSS1/CSS2
:active E:active{property:value;} 設定選定的連結 CSS1/CSS2
:focus E:focus{property:value;} 設定元素在成為焦點(onfocus事情發生)時的樣式 CSS1/CSS2
:checked E:checked{property:value;} 匹配表單上處於選中狀態的元素E (radio 和 checkbox) CSS3
:enabled E:enabled{property:value;} 匹配表單上處於可以狀態的元素E CSS3
:disabled E:disabled{property:value;} 匹配表單上處於禁用狀態的元素E CSS3

偽元素選擇器:

偽類選擇器 語法 說明 版本
:first-letter/::first-letter E :first-letter{property:value;} 設定物件內的第一個字元的樣式 CSS1/CSS3
:first-line/::first-line E :first-line{property:value;} 設定物件內的第一行的樣式 CSS1/CSS3
:before/::before E :before{property:value;} 設定在物件前發生的內容,與content 屬性一起用 CSS2/CSS3
:after/::after E :after{property:value;} 設定在物件前發生的內容,與content 屬性一起用 CSS2/CSS3
::selection E ::selection{property:value;} 設定在物件被選擇時的顏色 CSS3