CSS基礎(chǔ)知識-選擇器的種類及優(yōu)先級

一环壤、CSS選擇器常見的有幾種?

常見的有

1、id選擇器

見自己編寫的如下代碼:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style type="text/css">
    #licai {
        background-color: red;
        font-size: 60px;
    }
</style>
</head>

<body>
    <h1 id="licai">這是id選擇器</h1>
    <h1>這不是id選擇器</h1>
</body>
</html>

2靶草、class選擇器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style type="text/css">
    .licai {
        background-color: red;
        font-size: 60px;
    }
</style>
</head>

<body>
    <h1 class="licai">這是class選擇器</h1>
    <h1>這不是class選擇器</h1>
</body>
</html>

3雨膨、屬性選擇器

3.1 屬性名加屬性值型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style type="text/css">
input[type="password"]
{
  margin: 10px;
  width: 200px;

}
</style>
</head>

<body>
 <form name="MyfirstForm" action="http://www.baidu.com" method="get" >
    用戶名<input name="username" type="text" placeholder="請輸入用戶名"> <br>
    密碼<input name="MyPassword" type="password" placeholder="請輸入密碼" >
 </form>
</body>
</html>

3.2純屬性名型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style type="text/css">
img[title]
{
  border: 2px solid red;
}

</style>
</head>

<body>
 <div id="pic" > 這里是匿名者的圖片
    ![Anonymous](http://upload-images.jianshu.io/upload_images/2166980-53ed3d75ce5ae54c.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    ![AnonymousPicture](http://upload-images.jianshu.io/upload_images/2166980-3494a3e338066626.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    ![AnonymousPicture](http://upload-images.jianshu.io/upload_images/2166980-3494a3e338066626.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
 </div>
</body>
</html>

4松蒜、分組選擇器

用“,”隔開扔茅,表示該組元素屬性都會作用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style type="text/css">
.fenzu,p
{
  border: 2px solid red;
}

</style>
</head>

<body>
<h1 class="fenzu"> 這是h1標(biāo)題</h1>
<h1> 這也是h1標(biāo)題</h1>
<div> 
    <h1>這是div里的h1</h1>
    <p> 這是div里的p </p>   
</div>
</body>
</html>

5、派生選擇器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style type="text/css">
.paisheng h1
{
  background-color: #999;
}

</style>
</head>

<body>
<h1> 這是h1標(biāo)題</h1>
<div class="paisheng"> 
    <h1>這是div里的h1</h1>  
    <h1> 這也是div里的h1標(biāo)題</h1> 
    <p> 這是div里的p </p>  
</div>
</body>
</html>

6秸苗、偽類選擇器

比如.hover召娜、::selection、.action惊楼、:first-child玖瘸、:last-child、:first-of-type檀咙、:last-of-type雅倒、:nth-of-type(n)、:nth-of-last-type(n)等

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style type="text/css">
#weilei
{
  width: 200px;
  color: #999;
  background-color:red;
  transition-property:width;
  transition-duration:3s;
}

#weilei:hover
{
    width: 400px;
}

</style>
</head>
<body>
<div id="weilei"> 
    這是偽類選擇器
</div>
</body>
</html>

又例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style type="text/css">
h1::selection
/*
1弧可、::selection只支持color/background/cursor/outline四種屬性蔑匣;
2、firefox支持替代::-moz-selection;
*/
{
    color: red;
    background: blue;   
}
</style>
</head>
<body>
<h1> 選中后字體變紅色背景變藍色</h1>
<p> 選中后不變色</p>
</body>
</html>

7棕诵、偽元素選擇器

:after裁良、:before等

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style type="text/css">
ul,li
{
    list-style:none;
}
li:before
{
    content: "這是前置字  ";
    color: red;
    background-color: green;
    
}
li:after
{
    content: "  這是后置字 ";
    color: yellow;
    background: blue;
    font-weight: bold;
}
</style>
</head>
<body>
<ul>
    <li>我的前面需要增加“這是前置字”,我的后面需要增加“這是后置字”</li>
    <li>我的前面需要增加“這是前置字”校套,我的后面需要增加“這是后置字”</li>
    <li>我的前面需要增加“這是前置字”价脾,我的后面需要增加“這是后置字”</li>
    <li>我的前面需要增加“這是前置字”,我的后面需要增加“這是后置字”</li>
</ul>
</body>
</html>

8笛匙、組合選擇器

比如E,F/E F(后代選擇器)/E>F(子元素選擇器)/E+F(直接相鄰元素選擇器----匹配之后的相鄰?fù)壴兀?E~F(普通相鄰元素選擇器----匹配之后的同級元素)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
<style type="text/css">
.inside+h1
{
background: red;
}
</style>
</head>
<body>
<div class="outside">
  這是外層DIV
  <h1>
      這是h1大標(biāo)題
  </h1>
  <div class="inside">
      這是外層DIV里的div
  <h1>
      這是中層div的h1標(biāo)題1
  </h1>
  <p> 這是中層div里的段落</p>
  <h1>
      這是中層div的h1標(biāo)題2
  </h1>
       <div> 這是內(nèi)層div
          <h1> 這是內(nèi)層div的h1標(biāo)題</h1>
       </div>
  </div>
<h1>
這也是h1大標(biāo)題
</h1>
<h1>
  這還是h1大標(biāo)題
</h1>

</div>
</body>
</html>

二侨把、選擇器的優(yōu)先級是怎樣的?

  • 選擇器優(yōu)先級由高到低分別為:
    !important > 作為style屬性寫在元素標(biāo)簽上的內(nèi)聯(lián)樣式 >id選擇器>類選擇器>偽類選擇器>屬性選擇器>標(biāo)簽選擇器> 通配符選擇器(* 應(yīng)少用)>瀏覽器自定義犀变;
  • 當(dāng)比較多個相同級別的CSS選擇器優(yōu)先級時,它們定義的位置將決定一切座硕。下面從位置上將CSS優(yōu)先級由高到低分為六級:
    1弛作、位于<head/>標(biāo)簽里的<style/>中所定義的CSS擁有最高級的優(yōu)先權(quán)涕蜂。
    2华匾、第二級的優(yōu)先屬性由位于 <style/>標(biāo)簽中的 @import 引入樣式表所定義。
    3机隙、第三級的優(yōu)先屬性由<link/>標(biāo)簽所引入的樣式表定義蜘拉。
    4、第四級的優(yōu)先屬性由<link/>標(biāo)簽所引入的樣式表內(nèi)的 @import 導(dǎo)入樣式表定義有鹿。
    5旭旭、第五級優(yōu)先的樣式有用戶設(shè)定。
    6葱跋、最低級的優(yōu)先權(quán)由瀏覽器默認持寄。

  • 選擇器注明的越具體,某些情況下則其優(yōu)先級也越高娱俺;若重復(fù)寫了則以最后的為準(zhǔn)稍味;

三、class 和 id 的使用場景?

  • class使用場景:需要某些特定樣式的標(biāo)簽則放在同一個class中荠卷,需要此樣式的標(biāo)簽可再添加此類模庐。(class不可被javascript中的GetElementByID函數(shù)所調(diào)用)
  • id使用場景:1、根據(jù)提供的唯一id號快速獲取標(biāo)簽對象油宜,如:document.getElementById(id) 掂碱;2、用于充當(dāng)label標(biāo)簽for屬性的值:示例:<label for='userid'>用戶名:</label>慎冤,表示單擊此label標(biāo)簽時疼燥,id為userid的標(biāo)簽獲得焦點

四、使用CSS選擇器時為什么要劃定適當(dāng)?shù)拿臻g蚁堤?

劃定適當(dāng)?shù)拿臻g可:
1悴了、提高代碼的可讀性;
2违寿、便于維護管理湃交;
3、保持代碼的可拓展性藤巢;

五搞莺、以下選擇器分別是什么意思?

詳見注釋:

#header{
} /* 這是id選擇器header*/
.header{
}/*這是類選擇器header*/
.header .logo{
}/*這是類選擇器header后的類logo*/
.header.mobile{
}/*  滿足類header及類mobile */
.header p, .header h3{
}/* 類選擇器中的header 段落p 和類選擇器中的標(biāo)題h3 */
#header .nav>li{
}/*id選擇器中的header后的類選擇器nav的直接子元素li */
#header a:hover{
}/*id選擇器header后的a標(biāo)簽hover偽類*/

六、列出你知道的偽類選擇器

:hover /:active/ :link /:visited/::selection/:focus/:first-child/:nth-child(n)/:first-of-type/:nth-of-type(n)/:last-child/:nth-last-child(n)/:last-of-type/:nth-last-of-type(n)

七掂咒、:first-child和:first-of-type的作用和區(qū)別

E:first-child的作用 是選擇E的父元素中的所有第一個子元素的E標(biāo)簽才沧;
E:first-of-type的作用是 選擇E的父元素中的第一個E類型的標(biāo)簽迈喉;

根據(jù)字面意思可以很好的理解這兩者的區(qū)別:E:first-child首選是E的父元素中的第一個子元素,在這些子元素中選中E標(biāo)簽温圆;E:first-of-type首選是E的父元素的第一個同類型的(E)標(biāo)簽挨摸;舉個例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style type="text/css">
 h1:first-of-type
 {
    color: red;
 }
</style>
</head>
<body>
    <h1>這是body里的第一個子元素</h1>
    <h1>這是body里的第二個子元素</h1>
    <div>這是body里的第三個子元素 <br/>
        <a href="#">這是body中的div中里的第一個子元素</a>
        <h1>這是body中的div中里的第二個子元素</h1>
        <h1>這是body中的div中里的第三個子元素</h1>
    </div>
    <h1>這是body里的第四個子元素</h1>

</body>
</html>

上述代碼的運行結(jié)果為:“這是body里的第一個子元素”及“這是body中的div中里的第二個子元素”字均變?yōu)榧t色;若將<style>中的 h1:first-child 改成h1:first-of-type岁歉,則該代碼運行結(jié)果為僅“這是body里的第一個子元素”字變?yōu)榧t色得运;運行結(jié)果可見我上傳至jsbin中的 http://jsbin.com/hacato/edit?html,outputhttp://jsbin.com/turibag/edit?html,output

八、運行如下代碼锅移,解析下輸出樣式的原因熔掺。

<style>
.item1:first-child{
  color: red;
}
.item1:first-of-type{
  background: blue;
}
</style>
 <div class="ct">
   <p class="item1">aa</p>
   <h3 class="item1">bb</h3>
   <h3 class="item1">ccc</h3>
 </div>

運行結(jié)果為aa變紅,aa非剃、bb背景色均變?yōu)樗{色置逻,ccc不做任何變化;
原因為:

.item1:first-child{
  color: red;
}

上述代碼的作用是選擇item1中的父元素中的第一個子元素并使其字體變?yōu)榧t色备绽;當(dāng)運行到<p class="item1">aa</p> 時券坞,aa變?yōu)榧t色,因為此時段落p是item1父元素div中的第一個子元素肺素,而h3中的bb及h3中的ccc的父元素也是div恨锚,但div中的第一個子元素為p,因此bb及ccc字體顏色均為默認值即不會變成紅色压怠;

.item1:first-of-type{
  background: blue;
}

上述代碼的作用是選擇item1中的父元素中的第一個同類型標(biāo)簽并使其背景色變?yōu)樗{色眠冈;當(dāng)運行到<p class="item1">aa</p>時,因p為item1的父元素div的第一個類型的標(biāo)簽菌瘫,且p也為item1類蜗顽,因此p中的aa背景色會變成藍色;當(dāng)運行到<h3 class="item1">bb</h3>時雨让,同理雇盖,h3中的bb背景色也會變成藍色;當(dāng)運行到<h3 class="item1">ccc</h3>時栖忠,因父元素div中的第一個h3類型的元素已經(jīng)存在崔挖,故h3中的ccc背景色還是默認的;
故:運行結(jié)果為aa變紅庵寞,aa狸相、bb背景色均變?yōu)樗{色,ccc不做任何變化捐川;

九脓鹃、 text-align: center的作用是什么,作用在什么元素上古沥?能讓什么元素水平居中瘸右?

作用是使得文本或者img標(biāo)簽等一些內(nèi)聯(lián)對象(或與之相似的元素)居中娇跟;其可作用在塊級元素(比如p,h1等)中的內(nèi)行元素對象上太颤;如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style>
.item1:first-child{
  color: red;
}
.item1:first-of-type{
  background: blue;
}
div{
    text-align: center;
}
</style>
 <div class="ct">
   <p class="item1">aa</p>
   <h3 class="item1">bb</h3>
   <h3 class="item1">ccc</h3>
   ![](http://upload-images.jianshu.io/upload_images/2166980-347883c49bd3e5d5.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
 </div>

上述代碼可將div中的p及h3中的文本和圖片均進行居中了苞俘。

另margin:0 auto 是設(shè)置塊級元素(或類似元素)的居中,注意與text-align:center的區(qū)別龄章,可詳見:http://www.cnblogs.com/zhwl/p/3529473.html

十吃谣、如果遇到一個屬性想知道兼容性,在哪查看?

可在caniuse.com和w3school.com.cn等網(wǎng)站進行查詢瓦堵。

十一基协、補充:關(guān)于 :nth-child選擇器

    <div class="parent">
        <div class="children first"></div>
        <div class="children second"></div>
        <div class="children third"></div>
        <div class="children fourth"></div>
    </div>

上述代碼要實現(xiàn).second同樣效果的選擇器歌亲,可采用以下方法:

  • 1菇用、
    .parent :nth-child(2) {  /* :nth-child(2)前有空格! 意義是父元素中的第二個子元素*/
        height: 200px;
        border-color: blue;
    }
  • 2陷揪、
    .children:nth-child(2) {  /* :nth-child(2)前無空格惋鸥! 意義是屬于其父元素中的第二個子元素.children*/
        height: 200px;
        border-color: blue;
    }
  • 3、
    .parent  .children:nth-child(2) {  /* :nth-child(2)前無空格悍缠! 意義是屬于 .parent元素中的第二個子元素.children*/
        height: 200px;
        border-color: blue;
    }

**本文版權(quán)歸本人即簡書筆名:該賬戶已被查封 所有卦绣,如需轉(zhuǎn)載請注明出處。謝謝飞蚓! *

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滤港,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子趴拧,更是在濱河造成了極大的恐慌溅漾,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件著榴,死亡現(xiàn)場離奇詭異添履,居然都是意外死亡,警方通過查閱死者的電腦和手機脑又,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門暮胧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人问麸,你說我怎么就攤上這事往衷。” “怎么了严卖?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵席舍,是天一觀的道長。 經(jīng)常有香客問我妄田,道長俺亮,這世上最難降的妖魔是什么驮捍? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮脚曾,結(jié)果婚禮上东且,老公的妹妹穿的比我還像新娘。我一直安慰自己本讥,他們只是感情好珊泳,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拷沸,像睡著了一般色查。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撞芍,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天秧了,我揣著相機與錄音,去河邊找鬼序无。 笑死验毡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的帝嗡。 我是一名探鬼主播晶通,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哟玷!你這毒婦竟也來了狮辽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤巢寡,失蹤者是張志新(化名)和其女友劉穎喉脖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讼渊,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡动看,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了爪幻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菱皆。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖挨稿,靈堂內(nèi)的尸體忽然破棺而出仇轻,到底是詐尸還是另有隱情,我是刑警寧澤奶甘,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布篷店,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏疲陕。R本人自食惡果不足惜方淤,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蹄殃。 院中可真熱鬧携茂,春花似錦、人聲如沸诅岩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吩谦。三九已至鸳谜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間式廷,已是汗流浹背咐扭。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留懒棉,地道東北人草描。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓览绿,卻偏偏與公主長得像策严,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子饿敲,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1.class 和 id 的使用場景? 類選擇器允許以一種獨立于文檔元素的方式來指定樣式怀各。該選擇器可以單獨使用倔韭,也...
    草鞋弟閱讀 2,404評論 0 1
  • 一寿酌、CSS選擇器 關(guān)于CSS選擇器,首先請看這里:CSS 選擇器參考手冊 通過以上硕蛹,我們可以將CSS選擇器分為以下...
    fehysunny閱讀 2,237評論 0 2
  • 其實平時用得多的選擇器無非也就是那么幾個醇疼,時間久了,許多不常用的選擇器就慢慢忘記了法焰。為了不讓自己忘記這些選擇器秧荆,今...
    盛夏晚清風(fēng)閱讀 1,812評論 0 5
  • class 和 id 的使用場景? 每個標(biāo)簽只能設(shè)置一個id,此id在頁面中只能出現(xiàn)一次埃仪。id多用于頁面分塊時塊級...
    cross_王閱讀 435評論 0 0
  • 1.class 和 id 的使用場景? 兩者都能選取DOM節(jié)點并給DOM節(jié)點添加樣式乙濒,但是W3C標(biāo)準(zhǔn)里規(guī)定頁面中只...
    饑人谷_米彌輪閱讀 386評論 0 1