DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS特效代碼 >> CSS選擇器(Selectors )---CSS學習之路
CSS選擇器(Selectors )---CSS學習之路
編輯:CSS特效代碼     

CSS選擇器(Selectors )

一、CSS選擇器作用

CSS選擇器可用於實現對HTML網頁上的元素樣式的一對一,一對多或者多對一的控制。

 

二、CSS選擇器的種類(這裡介紹常用的)

 

標簽選擇器(Type selectors ):直接引用HTML中的標簽控制相應元素樣式。

例如:

P {

  font-size: 1.25em;

  color: yellow;

}

//  P標簽內的字體大小為1.25em,字體顏色為黃色.

 

類選擇器(Class Selectors ):利用自行定義的類名控制相應元素樣式,用“.”來標志。

例如:

.className{

background-color: red;

}

//  設置className類的背景顏色為紅色。

 

ID選擇器(ID Selectors):利用自行定義的ID名(ID名需唯一)控制相應元素樣式,用“#”來標志。(因為選擇器級聯關系,建議非必要時,少用)

例如:

#idName{

width:200px;

height:200px;

ackground-color: yellow;

}

//  設置idName元素寬200px,高200px,背景顏色為黃色。

 

群組選擇器(Group Selectors ):多種選擇器組合成一組,控制同一種樣式,選擇器間用“,”隔開。(當要設置多個元素擁有同種樣式時,采用群組選擇器更加便捷,而且可以減少CSS代碼。)

例如:

P,.className,#idName{

font-size: 1.25em;

color: yellow; 

background-color: red;

}

//  設置p標簽,className類,idName相應元素的字體大小為1.25em,字體顏色為紅 色。

 

子選擇器(Child Selectors ):用兩個常用選擇器,中間通過“>”進行選擇。其中前面的選擇器選擇父元素,後面的選擇器僅選擇父元素第一代孩子中全部對應的元素。

例如:

<style>

#box > span {color:red;}

</style>

 

<div id="box">

<h2>測試子選擇器</h2>

<span>第一個span標簽</span>

<p><span>第二個span標簽</span></p>

</div>

//  父元素box中的第一代孩子中的span元素字體將被設置為紅色,而包含在p標簽 

中的span元素(box元素的第二代孩子)則沒有被影響。

拓展:

:first-child 匹配包含在其父元素中,每個作為首孩子出現的元素。(不限元素類型)

:last-child 匹配包含在其父元素中,每個作為最後孩子出現的元素。

:only-child 匹配包含其父元素中,每個作為唯一孩子出現的元素。

:nth-child(n) 匹配包含在父元素中,每個作為第n個孩子出現的元素。(n 可   

           以是數字、關鍵詞或公式)

 

:first-of-type 匹配包含在其父元素中,每個作為首孩子出現的特定類型元素。

:last-of-type 匹配包含在其父元素中,每個作為最後孩子出現的特定類型元素。

:nth-of-type(n) 匹配包含在父元素中,每個作為第n個孩子出現的的特定類型元素。   

            (n 可以是數字、關鍵詞或公式)

 

 

後代選擇器(Descendant Selectors ):用兩個常用選擇器,中間通過空格隔開。其中前面的選擇器選擇父元素,後面的選擇器選擇父元素全部孩子中全部對應的元素。(注意不要和子選擇器選擇對象范圍混淆)

例如:

<style>

#box span {color:red;}

</style>

 

<div id="box">

<h2>測試子選擇器</h2>

<span>第一個span標簽</span>

<p><span>第二個span標簽</span></p>

</div>

//  父元素box的後代中的所有span元素的字體都會被設置成紅色。

 

相鄰同胞選擇器(Adjacent sibling selectors):用兩個常用選擇器,中間通過“+”進行選擇。作用於與前面選擇器同胞的,且是後面選擇器選擇的第一個元素。

例如

<style>

p+span{color:red;}

</style>

 

<div id="box">

<h2>測試相鄰同胞選擇器選擇器</h2>

<p><span>第一個span標簽</span></p>

<span>第二個span標簽</span>

<span>第三個span標簽</span>

</div>

//  第二個span標簽和p標簽同胞故字體將被設置為紅色。

偽類選擇器(pseudo-classes  Selectors):有時候還會需要用文檔以外的其他條件來實現元素的樣式,例如鼠標懸停時,目標元素的樣式變化等。

例如:

<style>

a:hover{

color:red;

}

</style>

 

<a href="#">鼠標懸停時,我會改變顏色喲.</a>

//  鼠標懸停在鏈接上時,字體顏色由默認的藍色變成紅色。

 

與此相似的偽類有:

 

:link 設置元素初始樣式。

:visited 設置元素被訪問後的樣式。

:hover 設置鼠標懸停時樣式。

:active 設置鼠標點擊瞬間的樣式。

//  在CSS 定義中,a:hover 必須被置於 a:link 和 a:visited 之後,a:active 必須被   

置於 a:hover 之後,才是有效的。若要同時設置這四種,一般設置順序為LVHA。

//  該種偽類一般被應用在鏈接上,也可以應用在其他元素上,例如表單元素中。

 

拓展:

:first-line 設置段落的首行樣式。

:first-letter 設置段落的首字母樣式。(若為英文則作用於第一個字母,若為中文則作用 

          於第一個漢字)

 

屬性選擇器(Attribute Selectors ):通過判斷元素中是否存在html中某個屬性或者符合某個屬性值來選擇作用該元素。

例如一:

<style>

p[title]{

color:red;

}

</style>

 

<p title="tag">我是含有title標簽的p標簽,我將變紅色。</p>

<p>我是不含title標簽的p標簽。</p>

//  選擇將含有title屬性的p標簽元素字體設置成紅色。

例如二:

<style>

p[title="tag2"]{

color:red;

}

</style>

    

<p title="tag1">我是含有title標簽且值為tag1的p標簽。</p>

<p title="tag2">我是含有title標簽且值為tag2的p標簽,我將變紅色。</p>

//  選擇設置含有title屬性,且title屬性值為tag2的p標簽元素字體為紅色。

 

通配選擇器:通用選擇器用*來表示,選擇作用於所有元素。

例如:

*{

 color:red;

}

//  所有的元素的字體顏色都將被設置成紅色。

 

三、樣式繼承

樣式繼承:某元素設置了樣式,則其後代可以繼承其某些樣式設置。

例如:

<style>

.father{

font-size:20px;

color:yellow;

    border:#000 1px solid;

}

</style>

 

<div class="father">

    <p>樣式繼承</p>

<p><span>樣式繼承</span></p>

</div>

//  在父元素div中設置了字體大小20px,字體顏色黃色,邊框黑色,1px,實線 ,其後代將繼承了它的字體樣式,但沒有繼承它的邊框樣式。

//  注意:父元素的某些樣式設置時不會被子元素繼承,例如margin(外邊距),border(邊框)等等。

 

四、選擇器級聯

級聯:是屬性設置發生沖突時,浏覽器用來確定元素會應用那種樣式的一套規則。

 

屬性發生沖突的兩種情況:

 

第一種:某元素的多個祖先設置了同個屬性的值。

第二種:同時兩個或者兩個以上的樣式設置了同一個屬性。

 

樣式應用規則:

注意:某些樣式重置後,浏覽器仍會保留某些初始屬性設置。

例如:

<style>

.box{

font-size:20px;

}

</style>

 

<div class="box">

<h1>h1標簽</h1>

<h2>h2標簽</h2>

<h3>h3標簽</h3>

</div>

//設置了一樣的字體大小後,浏覽器仍會保持h標簽初始大小等級。

 

 

1、當元素的多個祖先同時設置了同個屬性,則元素應用離它最近的祖先設置的樣式。

例如:

<style>

.grandpa{

color:yellow;

}

.father{

color:red;

}

</style>

 

<div class="grandpa">

<div class="father">

<p>樣式繼承</p>

</div>

</div>

//  p標簽元素的祖先同時設置了字體顏色,最終p標簽元素最終繼承了離它最近的father類設置的樣式,字體為紅色。

 

2、元素應用本身直接設置的樣式。

例如:

<style>

.grandpa{

color:yellow;

}

p{

color:blue;

}

.father{

color:red;

}

</style>

 

<div class="grandpa">

<div class="father">

<p>樣式繼承</p>

</div>

</div>

//  p標簽元素最終使用本身設置的字體顏色,藍色。

 

3、應用選擇器權重高者的樣式。

 

權重比例如下:

一個標簽選擇器=1個權重

一個類選擇器=10個權重

一個ID選擇器=100個權重

例如:

#idName p 權重=100+1=101  

#idName .className p 權重=100+10+1=111

//  注意:偽元素相當於1個權重,例如::first-line;偽類相當於10個權重,例如::hover。

例如:

<style>

.className{

color:blue;

}

 

#idName{

color:yellow;

}

</style>

 

<div id="idName" class="className">

<p>樣式設置</p>

</div>

//  ID選擇器權重高,p標簽元素字體為黃色

 

4、後設置的樣式會覆蓋先設置的樣式。

例如:

<style>

.style1{

width:100px;

height:100px;

background:red;

}

.style2{

background:yellow;

}

</style>

 

<div class="style1 style2"></div>

//  最終背景顏色為後設置的黃色。

 

5、!Important可以推翻樣式。

例如:

<style>

p{

color:red !important;

color:yellow;

}

</style>

 

<p>!important</p>

//  字體顏色最終為紅色。

 

五、控制樣式應用的方法

第一種:采用!important。

注意:由於!important的權力很大,推翻同屬性的其他樣式設置,經常使用將導致你的樣式不遵從級聯規則。

 

第二種:改變樣式的選擇器權重。

注意:僅僅采用簡單的加大權重,容易導致選擇器名稱過長。

例如:

<style>

.intro{

color:red;

}

#content .intro{

color:yellow;

}

</style>

 

<body>

<div id="content">

<p class="intro">增加權重</p>

</div>

</body>

//  通過增加一個id選擇器來增加權重,使字體樣式變黃色而不是紅色。

 

第三種:微調樣式出現順序。

注意:一般先引用外部樣式,再寫內部樣式。

例如:

css.css文件中的樣式是:

p{

color:blue;

}

 

Html中部分代碼:

<link rel="stylesheet" type="text/css" href="css.css" />

<style>

p{

color:red;

}

</style>

 

<body>

<p>我會聽內部樣式的。</p>

</body>

//  最終文字為紅色。

 

 

又如:

<style>

p{

color:red;

}

</style>

<link rel="stylesheet" type="text/css" href="css.css" />

 

<body>

<p>我會聽外部樣式的。</p>

//  最終文字為藍色的。

 

 

樣式內容簡介:

HTML呈現網頁的基本內容,CSS呈現網頁的外觀。

CSS樣式有外部樣式和內部樣式。CSS樣式一般包含了兩部分,一部分是選擇器(告訴浏覽器該樣式的作用對象),一部分是聲明塊。聲明語句包括了屬性和屬性值。

外部樣式:

好處:

1、利於更快的開發(樣式代碼可以復用)和修改網頁。

2、使用戶更快打開網頁。(外部樣式會緩存在用戶的計算機上,用戶再打開相同外部樣式的網頁則不需要重新加載外部樣式。)

壞處:

網頁開發時,有時重新修改了外部樣式,但之前緩存了外部樣式,浏覽器一般不再重新加載外部樣式,導致與預期效果不同。

內部樣式:只應用於當前網頁,不便於開發和對於整個網站的修改。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved