CSS 教程(3)-選擇器

1.Grouping Selectors 分組選擇器
在樣式表中有很多具有相同樣式的元素。
h1
{
color:green;
}
h2
{
color:green;
}
p
{
color:green;
}
為了盡量減少代碼,你可以使用分組選擇器。
每個選擇器用逗號分隔.
在下面的例子中,我們對以上代碼使用分組選擇器:

h1,h2,p
{
color:green;
}

2.嵌套選擇器
它可能適用于選擇器內部的選擇器的樣式。

選擇器的嵌套,在CSS中可以大大減少對class和id的聲明,因此,在構建頁面的HTML時,通常只給外層標記定義class或者id,內層標記能通過嵌套表示的則利用嵌套的方式,從而,不需要再定義新的class或者id,只有當子標記無法利用此規則時,才進行單獨的聲明

在下面的例子設置了三個樣式:

  • 為所有p元素指定一個樣式
  • 為所有class="marked"的元素指定一個樣式
  • 為所有class="marked"元素內的p元素指定一個樣式
p
{
color:blue;
text-align:center;
}
.marked
{
background-color:red;
}
.marked p
{
color:white;
}

3.后代選取器
后代選取器匹配所有值得元素的后代元素。
以下實例選取所有 <p> 元素插入到 <div> 元素中:
···
<style>
div p {
background-color: yellow;//只要div后面的p就會顯示背景色,不管多靠后
}
</style>
<div>
<p>段落 1。 在 div 中。</p>
<p>段落 2。 在 div 中。</p>
<div>test<p>neibu PP</p></div>
</div>

<p>段落 3。不在 div 中。</p>
<p>段落 4。不在 div 中。</p>
···

4.子元素選擇器
與后代選擇器相比,子元素選擇器(Child selectors)只能選擇作為某元素子元素的元素。(只有親孩子一代才行)
···
<style>
div>p {
background-color: yellow;
}
</style>

<h1>Welcome to My Homepage</h1>
<div>
<h2>My name is Donald</h2>
<p>I live in Duckburg.</p>
</div>
<div>
<span>
<p>I will not be styled.</p>
</span>
</div>
<p>My best friend is Mickey.</p>
···

5.相鄰兄弟選擇器
相鄰兄弟選擇器(Adjacent sibling selector)可選擇緊接在另一元素的元素,且二者有相同父元素。
如果需要選擇緊接在另一個元素后的元素,而且二者有相同的父元素,可以使用相鄰兄弟選擇器(Adjacent sibling selector)。

<style>
    div+p {
        background-color: yellow;
    }
</style>

<h1>Welcome to My Homepage</h1>
<div>
    <h2>My name is Donald</h2>
    <p>I live in Duckburg.</p>
</div>
<p>My best friend is Mickey.</p>//顯示黃色
<p>I will not be styled.</p>

6.后續兄弟選擇器
后續兄弟選擇器選取所有指定元素之后的相鄰兄弟元素。

<style>
    div~p {
        background-color: yellow;
    }
</style>

<p>之前段落,不會添加背景顏色。</p>
<div>
    <p>段落 1。 在 div 中。</p>
    <p>段落 2。 在 div 中。</p>
</div>
<p>段落 3。不在 div 中。</p>
<p>段落 4。不在 div 中。</p>

7.** 偽類(Pseudo-classes)**
CSS偽類是用來添加一些選擇器的特殊效果。

<style>
    a:link {
        color: #000000;
    }
    a:visited {
        color: #00FF00;
    }
    a:hover {
        color: #FF00FF;
    }
    a:active {
        color: #0000FF;
    }
    a.aaa:hover {//class也可以作為偽類的,這個時候,第二個鏈接,鼠標放上去顯示藍色而不會是紅色,第一個會顯示紅色
        color: blue;
    }
</style>

<a href="/css/" target="_blank">這是一個鏈接</a>
<a class="aaa" href="/css/" target="_blank">這是一個鏈接</a>
  • CSS - :first - child偽類(:last-child)
    您可以使用 :first-child 偽類來選擇元素的第一個子元素
    ···
    <style>
    p:first-child {
    color: blue;
    }
    </style>

<p>This is some text.</p>//只有它顯示藍色,匹配了p的第一個元素的選擇器
<p>This is some text.</p>
···

選擇相匹配的所有<p>元素的第一個 <i> 元素
p > i:first-child
{
color:blue;
}

選擇器匹配所有作為元素的第一個子元素的 <p> 元素中的所有 <i> 元素
p:first-child i
{
color:blue;
}

具體的偽類:

  • :checked 選擇器
    :checked 選擇器匹配每個選中的輸入元素(僅適用于單選按鈕或復選框)(選擇上后,放大了選擇框)
<style>
    input:checked {
        height: 50px;
        width: 50px;
    }
</style>

<input type="radio" checked="checked" value="male" name="gender" /> Male
<br>
<input type="radio" value="female" name="gender" /> Female
<br>
<input type="checkbox" checked="checked" value="Bike" /> I have a bike
<br>
<input type="checkbox" value="Car" /> I have a car
  • :disabled 選擇器
    :disabled 選擇器匹配每個禁用的的元素(主要用于表單元素)
    設置所有type="text"的禁用的輸入元素的背景顏色為灰色
<style>
    input[type="text"]:enabled {
        background: #ffff00;
    }

    input[type="text"]:disabled {
        background: #dddddd;
    }
</style>

First name:
<input type="text" value="Mickey" />
<br> Last name:
<input type="text" value="Mouse" />
<br> Country:
<input type="text" disabled="disabled" value="Disneyland" />
<br>
  • :empty 選擇器
    :empty選擇器選擇每個沒有任何子級的元素(包括文本節點)
p:empty
{
background:#ff0000;
}
  • :first-of-type (:last-of-type)選擇器
    :first-of-type選擇器匹配元素其父級是特定類型的第一個子元素。
<style>
    p:first-of-type {
        background: #ff0000;
    }
</style>

<h1>This is a heading</h1>
<p>The first paragraph.</p>//這是第一個匹配P的
<p>The second paragraph.</p>
<p>The third paragraph.</p>
  • :in-range 選擇器
    :in-range 選擇器用于標簽的值在指定區間值時顯示的樣式。
    注意: :in-range 選擇器只作用于能指定區間值的元素,例如 input 元素中的 min 和 max 屬性。
<style>
    input:in-range {
        border: 2px solid green;//如果在范圍內,顯示綠色
    }
    input[type="number"]:out-of-range {
        border: 2px solid red;//如果超出數字范圍,顯示紅色
    }
</style>

<h3>:in-range 選擇器實例演示。</h3>
<input type="number" min="5" max="10" value="7" />
  • :invalid 選擇器
    :invalid 選擇器用于在表單元素中的值是非法時設置指定樣式。
    注意: :invalid 選擇器只作用于能指定區間值的元素,例如 input 元素中的 min 和 max 屬性,及正確的 email 字段, 合法的數字字段等。
<style>
    input:invalid {
        border: 2px solid red;//如果輸入錯誤,
顯示紅色,如果輸入正確的email的話,顯示正常邊框色
    }
</style>
<h3> :invalid 選擇器實例演示。</h3>
<input type="email" value="supportEmail" />
  • :not 選擇器
    :not(selector) 選擇器匹配每個元素是不是指定的元素/選擇器。
    :not(p)
    {
    background:#ff0000;
    }

  • :nth-child() 選擇器
    :nth-child(n)選擇器匹配父元素中的第n個子元素。

:nth-last-child() 選擇器
:nth-last-of-type(n)選擇器匹配同類型中的倒數第n個同級兄弟元素。

n可以是一個數字,一個關鍵字,或者一個公式。

  • :read-only 選擇器
    -:required 選擇器
    :required 選擇器在表單元素是必填項時設置指定樣式。
    表單元素可以使用 required 屬性來設置必填項。
    注意: :required 選擇器只適用于表單元素: input, select 和 textarea。

  • :hover 選擇器
    :hover在鼠標移到鏈接上時添加的特殊樣式。
    提示: :hover 選擇器器可用于所有元素,不僅是鏈接。

  • :first-letter 選擇器
    :first-letter選擇器用來指定元素第一個字母的樣式。

8.屬性選擇器
例子1,把包含標題(title)的所有元素變為藍色

<style>
[title]
{
color:blue;
}
</style>
<h2>Will apply to:</h2>
<h1 title="Hello world">Hello world</h1>
<a title="runoob.com" >runoob.com</a>
<hr>
<h2>Will not apply to:</h2>
<p>Hello!</p>

實例2,改變了標題title='runoob'元素的邊框樣式

<style>
    [title=runoob] {
        border: 5px solid green;
    }
</style>
<h2>將適用:</h2>
<img title="runoob" src="logo.png" width="270" height="50" />
<br>
<a title="runoob" >runoob</a>
<hr>
<h2>將不適用:</h2>
<p title="greeting">Hi!</p>
<a class="runoob" >runoob</a>

表單樣式
屬性選擇器樣式無需使用class或id的形式:

input[type="text"]
{
    width:150px;
    display:block;
    margin-bottom:10px;
    background-color:yellow;
}
input[type="button"]
{
    width:120px;
    margin-left:35px;
    display:block;
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,382評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,038評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,616評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,112評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,355評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,869評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,727評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,928評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,165評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,585評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,892評論 2 372

推薦閱讀更多精彩內容

  • 其實平時用得多的選擇器無非也就是那么幾個,時間久了,許多不常用的選擇器就慢慢忘記了。為了不讓自己忘記這些選擇器,今...
    盛夏晚清風閱讀 1,856評論 0 5
  • 1.CSS 元素選擇器 最常見的 CSS 選擇器是元素選擇器。換句話說,文檔的元素就是最基本的選擇器。如果設置 H...
    饑人谷_小侯閱讀 872評論 0 1
  • 作為前端和后臺最基礎可靠的神器工具JQuery,你真的對她有足夠了解么? 亞非拉地區苦逼的前端er們,有時候不得不...
    扭了個妞閱讀 383評論 0 0
  • 一、CSS選擇器常見的有幾種? 基本選擇器 通配選擇器~選擇文檔中所有的html元素,用一個*表示 元素選擇器~選...
    dengpan閱讀 975評論 0 3
  • 選擇器 元素選擇符 關系選擇符 屬性選擇符 偽類選擇符 偽對象選擇符 一、元素選擇符 通配選擇符 (*):選擇所有...
    云外之境閱讀 1,886評論 0 0