CSS 選擇器

選擇器語法

在html文件中,則先寫一個<style>標簽,每個選擇器的樣式用{}包起來,以:屬性:值形式,屬性之間用分號隔開,舉例:

<style>
選擇器1 {
  屬性1 : 值;
  屬性2 : 值;
 …
}
選擇器2 {
  屬性1 : 值;
  屬性2 : 值;
 …
}
...
</style>

如果幾個選擇器之間有相同樣式,可以把相同的地方寫在一起,并用逗號隔開,然后可以在另外寫自己的屬性,舉例:

選擇器3,選擇器4 { <!-- 選擇器3和4的公共樣式 -->
  屬性1 : 值;
  屬性2 : 值;
 …
}
選擇器4 { <!-- 選擇器4自己特有的樣式 -->
  屬性3 : 值;
  屬性4 : 值;
 …
}

在外部引用的css文件中,則不需要寫<style>標簽,直接寫樣式即可

常用選擇器

style屬性(內(nèi)聯(lián))

這種寫法是較不靈活的,只能在單個標簽范圍內(nèi)作用,舉例:

<p style="background: gray">AAA</p>
元素選擇器

針對某一類元素標簽來進行樣式設(shè)置,則只需以標簽為樣式命名即可,舉例:

p {
 background: blue;
 font-size: large;
 }

此時,則所有<p>標簽都會將有該樣式

類選擇器

針對標簽的類來選擇,使用時在標簽中加入:class="xxx",然后在樣式當(dāng)中寫:.xxx的樣式,.代表類,舉例:

.red {
 color: red;
}
<div class="red">BBB</div>

如果一個標簽有多個類,可以在class屬性中用空格隔開,舉例:

<div class="red fontsize">BBB</div> <!-- 標簽有red和fontsize兩個類 -->

此時可以分別寫一個redfontsize的類選擇器,但也可以寫一個同時擁有red和fontsize類才能用的類選擇器,舉例:

.red.fontsize { <!-- 同時有red和fontsize的類選擇器 -->
 color: red;
 font-weight: 900;
}

但要注意的是此時.red和.fontsize之間沒有空格,其代表這兩個類是同時擁有的,如果有空格,參考后代選擇器

ID選擇器

ID選擇器和類選擇器相似,在標簽中加入:id="xxx",然后在樣式中寫:#xxx的樣式,#代表ID,舉例:

#id1 {
 color: gray;
}
<h1 id="id1">ID1</h1>

注:
id選擇器功能和類的差不多,目的主要是為了給標簽提供一個唯一標識,雖然也允許重復(fù)id,但是這樣就意義不大,所以一般最好id唯一

屬性選擇器

根據(jù)標簽的屬性來寫樣式,在樣式中寫:[屬性]的樣式,則有該屬性的標簽都會獲得樣式,舉例:

[title] {
 color: yellow;
}
<a  title="百度一下">百度</a>

上面的說明當(dāng)有title屬性時就會獲得樣式,如果要屬性等于某一特定值時才能獲取樣式,則可以如下寫法:

[title="百度一下"] {
 color: yellow;
}

還有就是可以當(dāng)屬性包含某些值時就能獲取樣式,此時只需在=前面加個*,然后后面是包含的部分字符即可,舉例:

[title*="百度"] {
 color: yellow;
}

如果是想屬性值以某些字符開始,則在=前面加個^,舉例:

[title^="百度"] {
 color: yellow;
}

如果是想屬性值以某些字符結(jié)束,則在=前面加個$,舉例:

[title$="百度"]
…

屬性選擇器還可以判斷是某一類標簽下的屬性才能用,在屬性前面加標簽名即可,舉例:

a[title="百度一下"] {
 color: yellow;
}

則此時只有a標簽且有title屬性的才能用。
以上這些規(guī)則在像href等屬性中用的比較多,比如說明當(dāng)鏈接開頭是:[http://abc](http://abc)開頭的,后面不管跟的是什么,都是隸屬本站的頁面之類的,那么就可以給他添加個特殊的樣式,這樣就可以區(qū)分這個鏈接是否是站內(nèi)鏈接,舉例:

[href] {
 color: yellow;
}
[href^="http://abc"] { <!-- 當(dāng)網(wǎng)址開頭為這些的時候鏈接為藍色字 -->
 color: blue;
}
后代選擇器

當(dāng)幾個標簽嵌套時,可以對其里面層進行定位確定樣式,比如有嵌套關(guān)系:A(B(C)),那么就可以:A B定位到B,可以:A B C定位到C,也可以:A C定位到C,中間用空格隔開,舉例:

.a .b { <!-- class a下的class b為藍色 -->
 color: blue;
}
.a div { <!-- class a下所有div標簽為綠色-->
 color: green;
}

<div class="a">A
 <div class="b">B
 <div class="c">C
 </div>
 </div>
</div>

那么此時B就為藍色,C為綠色

相鄰選擇器

當(dāng)幾個標簽相鄰時,可以設(shè)置這幾個的樣式,比如有三個div標簽A、B、C平行,若想設(shè)置a的后一個div標簽樣式,則可以:

.a + div {
 background: rgba(255, 0, 0 ,0.2); <!--rgba設(shè)置顏色,最后一個是透明度,1最大-->
}
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>

.a + div代表class a的后一個div標簽,如果想設(shè)置a后面所有div的樣式可以把+改成~,即:

.a ~ div {
 background: rgba(255, 0, 0 ,0.2);
}
復(fù)合選擇器

如果要選擇的內(nèi)容只要符合選擇器的其中一個條件即可,則在選擇中用逗號隔開,舉例:

.a,  div {
 background: rgba(255, 0, 0 ,0.2);
}
偽類選擇器

href鏈接、鼠標移動時也有對應(yīng)的選擇器,舉例:

a:link {
 /*未點擊過的鏈接*/
 color: blue;
}
a:visited {
 /*點擊過的鏈接*/
 color: gray;
}
button:hover {
 /*鼠標懸浮時改變背景色*/
 background: rgba(255, 0, 0, 0.2);
}
.b:hover {
 background: rgba(255, 0, 0, 0.2);
}

<a >baidu</a>
<button >click</button>
<div class="b">aaa</div>
:link

未點擊樣式

a:link {
  ...
}
:hover

鼠標浮動樣式

a:hover {
  ...
}
:active

點擊時樣式

a:active {
  ...
}
:visited

訪問后樣式

a:visited {
  ...
}

除了上面的linkvisited、hover,還有像active(當(dāng)有動作時)、focus(聚焦時)等都十分常用
注:
:hover/:active還能用在<a>標簽以外的標簽上

動態(tài)偽類優(yōu)先級問題
  • :hover必須在:link/:visited之后才能完全生效
  • :active必須在:hover之后才能完全生效
    推薦編寫順序::link :visited :focus :hover :active
偽類:target

選中的錨點樣式,舉例:

<head>
    <style>
        div {
            height: 100px;
            width: 100px;
            position: absolute;
        }
        :target {
            border: 10px solid yellow;
            z-index: 2;
        }
    </style>
</head>

<body>
    <a href="#aaa">aaa</a>
    <a href="#bbb">bbb</a>
    <div id="aaa" style="background-color: green;"></div>
    <div id="bbb" style="background-color: blue;"></div>
</body>
結(jié)構(gòu)偽類
nth-child/nth-last-child

第幾個xxx元素(從頭開始算)/第幾個xxx元素(從尾開始算),舉例:

div:nth-child(2n) {
  /* 第偶數(shù)個子元素的樣式 */
  ...
}
span:nth-last-child(-n + 2) {
  /* 最后兩個子元素的樣式 */
  ...
}

該偽類可以用于如條紋表格的實現(xiàn)
注:
nth-child是基于父元素下的第幾個子元素,如果該元素為xx,那么則有效;nth-of-type是指xx元素中的第幾個

:only-of-type

父元素中的唯一元素

:empty

空白元素

:not(xxx)

否定元素,如::not(div):not(span)就是非div且非span元素

偽元素
::first-line

首行文本樣式,其下只能設(shè)置如:字體、顏色和背景這類屬性

::first-letter

首字母樣式

::before/::after

在元素的前/后添加的內(nèi)容,但是并不會出現(xiàn)在dom中,通過content設(shè)置內(nèi)容,舉例:

div::before {
    content: 'abc';
    /*添加字符串*/
    /*content: attr(id);*/
    /*添加該其id屬性的字符*/
    /*content: url('http://xxx.xxx.xxx/xxx.jpg');*/
    /*添加一張圖片*/
    color: blue;
    /*順便字體改藍色*/
}

這個經(jīng)常用來實現(xiàn)像播放器的播放暫停的復(fù)用按鈕(可能還會結(jié)合:hover之類的)
注:
可以通過attr()獲取當(dāng)前標簽屬性:

a::after {
  content: "=>" attr(href);
  /* 獲取標簽的href屬性,其中字符串拼接直接用空格就行 */
}
選擇器默認優(yōu)先級

!important > 內(nèi)聯(lián)樣式 > id選擇器 > 類選擇器 = 屬性選擇器 = 偽類 > 元素選擇器 = 偽元素 > 通配符

選擇器權(quán)重

在各種選擇器中,其權(quán)重如下:

!import 10000
內(nèi)聯(lián)  1000
id  100
類/屬性/偽類  10
元素/偽元素  1
通配符  0
比較方式

從權(quán)值最大的選擇器的數(shù)量開始比,數(shù)量多的則優(yōu)先級高,如果數(shù)量相同就往低權(quán)值的選擇器進行比較,...,如果都一樣,就采取就近原則(選擇器針對性越強,優(yōu)先級越高)

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

相關(guān)閱讀更多精彩內(nèi)容

  • 學(xué)會使用CSS選擇器熟記CSS樣式和外觀屬性熟練掌握CSS各種選擇器熟練掌握CSS各種選擇器熟練掌握CSS三種顯示...
    七彩小鹿閱讀 6,445評論 2 66
  • CSS基礎(chǔ) 本文包括CSS基礎(chǔ)知識選擇器(重要?。。。├^承、特殊性、層疊、重要性CSS格式化排版單位和值盒模型浮動...
    廖少少閱讀 3,439評論 0 40
  • 一、樣式篇 第1章 初識jQuery (1)環(huán)境搭建 進入官方網(wǎng)站獲取最新的版本 http://jquery.co...
    凜0_0閱讀 3,667評論 0 44
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 1.認識CSS樣式CSS全稱為“層疊樣式表 (Cascading Style Sheets)”,它主要是用于定義H...
    靜默丶閱讀 5,960評論 30 95

友情鏈接更多精彩內(nèi)容