CSS選擇器

**關鍵字: **
** 1.css選擇器使用場景; **
** 2.css選擇器優(yōu)先級; **
3. first-child和:first-of-type


1.class 和 id 的使用場景?

class 選擇器用于描述一組元素的樣式,class 選擇器有別于id選擇器,class可以在多個元素中使用。
class 選擇器在HTML中以class屬性表示, 在 CSS 中,類選擇器以一個點"."號顯示

在以下的例子中,所有擁有 center 類的 HTML 元素均為居中

<style>
.center
{
    text-align:center;
}
</style>
</head>

<body>
<h1 class="center">標題居中</h1>
<p class="center">段落居中。</p> 
</body>
你也可以指定特定的HTML元素使用class。
在以下實例中, 所有的 p 元素使用 class="center" 讓該元素的文本居中:

<style>
p.center
{
    text-align:center;
}
</style>
</head>

<body>
<h1 class="center">這個標題不受影響</h1>
<p class="center">這個段落居中對齊。</p> 
</body>

id 選擇器可以為標有特定 id 的 HTML 元素指定特定的樣式。
HTML元素以id屬性來設置id選擇器,CSS 中 id 選擇器以 "#" 來定義。
以下的樣式規(guī)則應用于元素屬性 id="para1":

實例
<style>
#para1
{
    text-align:center;
    color:red;
} 
</style>
</head>

<body>
   <p id="para1">Hello World!</p>
</body>

CSS選擇器常見的有幾種?

1
2
3
重點說下div標簽
<div> 可定義文檔中的分區(qū)或節(jié)(division/section)。
<div> 標簽可以把文檔分割為獨立的、不同的部分。它可以用作嚴格的組織工具,并且不使用任何格式與其關聯(lián)。
如果用 id 或 class 來標記 <div>,那么該標簽的作用會變得更加有效。
用法
<div> 是一個塊級元素。這意味著它的內容自動地開始一個新行。實際上,換行是 <div> 固有的唯一格式表現(xiàn)??梢酝ㄟ^ <div> 的 class 或 id 應用額外的樣式。
不必為每一個 <div> 都加上類或 id,雖然這樣做也有一定的好處。
可以對同一個 <div> 元素應用 class 或 id 屬性,但是更常見的情況是只應用其中一種。這兩者的主要差異是,class 用于元素組(類似的元素,或者可以理解為某一類元素),而 id 用于標識單獨的唯一的元素

以上CSS選擇器參考地址


選擇器的優(yōu)先級是怎樣的?對于復雜場景如何計算優(yōu)先級?

CSS優(yōu)先級從高到低分別是
在屬性后面使用 !important 會覆蓋頁面內任何位置定義的元素樣式
作為style屬性寫在元素標簽上的內聯(lián)樣式
id選擇器
類選擇器
偽類選擇器
屬性選擇器
標簽選擇器
通配符選擇器
瀏覽器自定義
  • 復雜情況
Snip20170313_202.png

以上講解:
1.權重由大到小a >b>c>d, 在最大權重相同情況下,再比下一級,誰的權重大就依照它的樣式


實例:

Snip20170313_200.png
Paste_Image.png

Paste_Image.png

以上參考地址


a:link, a:hover, a:active, a:visited 的順序是怎樣的? 為什么?

Paste_Image.png

正確順序為:

<style>
a:link    {color:green;}
a:visited {color:black;}
a:hover   {color:red;}
a:active  {color:yellow;}
</style>

原因:a:visited必須不能放最后,必須放第二個,因為放后面會覆蓋它所有前面的屬性.
必須按這個順序,如果沒有a:hover和a:active其中一個,a:visited也必須在他們兩之前.
而a:hover和 a:active,不會覆蓋別的屬性,而a:link, a:hover, a:active的順序是符合用戶的習慣
未點擊-鼠標覆蓋-點擊時

以下選擇器分別是什么意思?

#header{
}
解釋 : id選擇器,匹配id="header"的所有元素


.header{
}
解釋:匹配class=headed的所有元素

.header .logo{
}
解釋:匹配class=header的元素里后代中class=logo的所有元素


.header.mobile{
}
解釋:就是匹配這個class="header,mobile"這兩個值的元素


.header p, .header h3{
}
解釋:匹配class=header的后代里所有p元素和class=header后代里所有h3元素


#header .nav>li{
}
解釋:匹配id=header的所有后代里,class=nav里找子代為li的標簽


#header a:hover{
}
解釋:匹配id=header后代里其中a標簽里hover屬性的元素

#header .logo~p{
}
解釋:匹配id=header后代里,其中class=logo的標簽之后并且同級的p標簽,同級=兩者是同一個父元素.


#header input[type="text"]{
}
解釋:匹配id=header后代里,其中input標簽里type=text的所有元素

html:
<ul class="navbar">
            <li><a href="#">首頁</a></li>
            <li><a href="#">作品</a></li>
            <li>
                <a href="#">更多</a>
                <div class="child">
                    <a href="#">Github</a>
                    <a href="#">博客</a>
                    <a href="#">知乎</a>
                </div>
            </li>
        </ul>
.css樣式:
.navbar>li:hover .child{
    display: block;
}
解釋:在class=navbar里,直接子代為li的標簽在鼠標懸浮下,給li的子代里有class=child的創(chuàng)建一個display: block的樣式.

上述疑惑:后代(空格隔開的)包括子代孫代曾孫代,而子代(>隔開的)就是第一代


列出你知道的偽類選擇器

Paste_Image.png

Paste_Image.png

div:first-child和div:first-of-type的作用和區(qū)別

div:first-child作用:
匹配:這個div在所有父元素中:必須是第一個出現(xiàn)的子元素并且這第一個子元素必須是div元素
舉例如下:

Paste_Image.png


div:first-of-type的作用:
匹配:屬于其父元素中里面是div標簽的,且在同種標簽中的第一個出現(xiàn)的div.

等同于 :nth-of-type(1)
舉例如下:

Paste_Image.png

區(qū)別:上圖紅色字體有說明

以上參考地址


運行如下代碼,解析下輸出樣式的原因。

<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>

輸出樣式:

Paste_Image.png
上圖解釋:

.item1:first-child
class為item的父元素即div,div下第一個子元素為p,且p的class為item,所以僅對p元素生效-字體變紅。
.item1:first-of-type
class為item的父元素即div,div下class為item1子元素有1個p元素和2個h3元素,所有對第1個p元素(也是唯一一個)和第1個h3元素生效-背景變藍色。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 其實平時用得多的選擇器無非也就是那么幾個,時間久了,許多不常用的選擇器就慢慢忘記了。為了不讓自己忘記這些選擇器,今...
    盛夏晚清風閱讀 1,945評論 0 5
  • class 和 id 的使用場景? class寫專門的class通用和私有模塊命名,id具有唯一性且優(yōu)先級太高,用...
    好好頑閱讀 483評論 0 0
  • class 和 id 的使用場景 class:一個標簽可以有多個class且同一個class可以用到不同的標簽上,...
    尾巴尾巴尾巴閱讀 470評論 0 0
  • class 和 id 的使用場景? 類class選擇器允許以一種獨立于文檔元素的方式來指定樣式。該選擇器可以單獨使...
    Vincent_永閱讀 369評論 0 0
  • class和id的使用場景? class為一類的元素命名,所有有共同特性的元素都可以用同一class進行分類;id...
    LeeoZz閱讀 438評論 0 0

友情鏈接更多精彩內容