CSS3選擇器

基礎

屬性選擇器(CSS2)

  • [attr=val]
  • attr代表屬性值胯究,val代表變量值
<style>
        [id="test1"]{
            background-color: yellow;
            height: 200px;
            width:400px;
        }
    </style>

屬性選擇器的擴展(CSS3)

  • 在css3中增加了三個屬性選擇器,使屬性選擇器有了通配符的概念佑刷。
    • [attr^=val]
    • [attr$=val]
    • [attr*=val]
  • ^代表屬性值以某字符串作為開頭
<style>
        [id^="te"]{
            background-color: yellow;
            height: 200px;
            width:400px;
        }
    </style>
<div id="test"> 
</div>
  • $代表屬性值以某字符串作為結尾
<style>
        [id$="st"]{
            background-color: yellow;
            height: 200px;
            width:400px;
        }
    </style>
<div id="test"> 
</div>
  • *代表屬性值內包含某字符串
<style>
        [id*="es"]{
            background-color: yellow;
            height: 200px;
            width:400px;
        }
    </style>
<div id="test"> 
</div>

偽類選擇器

  • 在css中,我們知道我們可以通過類選擇器定義不同的樣式如p.yellow={background-color:yellow},此處.yellow為類選擇器,yellow為類名芽世,在偽類選擇器中我們使用css中預先定義好的類名對元素樣式進行修改黔酥,最常用的為對a元素不同狀態(tài)的修改藻三。
  <style>
        a:link{
            color: #FF0000;
            text-decoration: none;
        }
        /*鼠標點擊之前*/
        a:hover{
            color: #00FF00;
            text-decoration: none;
        }
        /*鼠標挪動到鏈接上*/
        a:visited{
            color: #FF00FF;
            text-decoration: underline;
        }
        /*鼠標點擊之后*/
        a:active{
            color:#0000ff;
            text-decoration: underline;
        }
        /*鼠標點擊之時*/
    </style>

偽元素選擇器

  • 所謂偽元素選擇器并不是要對真正的元素使用樣式,而是對css中已經定義好的偽元素使用樣式
  • first-line用于對某個元素中的第一行文字使用樣式
<style>
        p:first-line{
            color: #00ccff;
        }
    </style>
<p>云泥豈知鯤鵬志跪者,<br>扶搖直上九萬里</p>
  • first-letter用于對某個元素中的第一個文字或第一個字母設置樣式
<style>
        p:first-letter{
            color: #00ccff;
        }
    </style>
<p>云泥豈知鯤鵬志棵帽,<br>扶搖直上九萬里</p>
  • before用于在某個元素之前插入一些元素
p:before{
            content: '待到秋來九月八,';
            color: #00ccff;
        }
/*插入文字*/
p:before{
            content: url(1.png);
            color: #00ccff;
        }
/*插入圖片*/
  • after偽元素選擇器
    • 無fuck說

結構性偽類選擇器

  • 結構性偽類選擇器最主要的的特征是允許開發(fā)者根據(jù)文檔的結構對元素進行操作渣玲。

root,not,empty,target

  • root選擇器
    • root選擇器將樣式綁定到頁面的根元素逗概,所謂根元素元素,就是指包著整個頁面的HTML元素
:root{
    background-color: yellow;
}
body{
    background-color: limegreen;
}
  • 在使用body元素與root元素指定元素背景時忘衍,根據(jù)不同的顯示條件逾苫,顯示范圍會有所變化,如上面這個示例枚钓,在刪除root選擇器后整個頁面都將變?yōu)榫G色
  • not選擇器铅搓,如果你想對某個元素設置樣式,卻不想對他的某個子元素設置搀捷,可以使用not選擇器星掰。
<style>
        #test *:not(h1){
            background-color: yellow;
        }
    </style>
  • empty選擇器用于元素內容為空時指定樣式,換行符與空格符被認為元素內有內容
div:empty{
            height: 100px;
            width: 100px;
            background-color: yellow;
        }
  • target選擇器是對頁面中的target元素(當他們的id被當做超鏈接來使用時)指定樣式的指煎,當用戶點擊了超鏈接對指定元素進行樣式修改蹋偏。
<style type="text/css">
:target{
    background-color: yellow;
}
</style>
</head>
<body>
<p id="menu">
<a href="#text1">示例文字1</a> | 
<a href="#text2">示例文字2</a> | 
<a href="#text3">示例文字3</a> | 
<a href="#text4">示例文字4</a> | 
<a href="#text5">示例文字5</a> 
</p>
<div id="text1">
<h2>示例文字1</h2>
<p>...此處略去</p>
</div>
<div id="text2">
<h2>示例文字2</h2>
<p>...此處略去</p>
</div>
<div id="text3">
<h2>示例文字3</h2>
<p>...此處略去</p>
</div>
<div id="text4">
<h2>示例文字4</h2>
<p>...此處略去</p>
</div>
<div id="text5">
<h2>示例文字5</h2>
<p>...此處略去</p>
</body>

first-child、last-child至壤、nth-child威始、nth-last-child

  • first-child與last-child選擇器可以選擇當前元素第一次和最后一次出現(xiàn)的地方(一般用于列表表格)
li:first-child{
            background-color: yellow;
        }
        li:last-child{
            background-color: black;
        }
  • nth-child和nth-last-child選擇器是之前倆個的擴展,分別可加入?yún)?shù)表示序號對元素進行操作像街,nth-last-child表示倒序黎棠。
<style>
        li:nth-child(3){
            background-color: yellow;
        }
    </style>
<style>
        li:nth-last-child(2){
            background-color: yellow;
        }
    </style>
<style>
        ul li:nth-child(even){
            background-color: yellow;
        }
    </style>
所有偶數(shù)序列的元素
<style>
        ul li:nth-child(odd){
            background-color: yellow;
        }
    </style>
所有奇數(shù)序列的元素
  • nth-child計算序號的方法是取當前元素的父元素所有的子元素進行排序,因此很多時候會帶來一些不可預知的問題

nth-of-type與nth-last-of-type

  • 由于上述問題的存在镰绎,css3新增了這兩個選擇器解決問題脓斩,nth-of-type可以只匹配相同類型的元素進行選取。
<style type="text/css">
        h2:nth-of-type(odd){
        background-color:yellow;
}
</style>

循環(huán)使用樣式

  • 我們可以采用nth-child與簡單表達式的方法對樣式進行循環(huán)
    <style>
        li:nth-child(3n){
            background-color: yellow;
        }
        li:nth-child(3n+1){
            background-color: red;
        }
        li:nth-child(3n+2){
            background-color: green;
        }
    </style>

UI元素狀態(tài)偽類選擇器

  • UI元素狀態(tài)偽類選擇器的主要特征是只有在元素處于某種狀態(tài)時樣式表才起作用畴栖,默認情況下沒有作用
  • 在css3中共有11種UI元素狀態(tài)偽類選擇器
    E:hover随静、E:active、E:focus、E:enabled燎猛、E:disabled恋捆、E:read-only、E:read-write重绷、E:checked沸停、E:default、E:indeterminate昭卓、E::selection.

E:hover愤钾、E:active、E:focus

  • E:hover選擇器用于鼠標挪動指定元素上時指定樣式
  • E:active選擇器用于指定元素被激活時
  • E:focus用于指定元素獲得焦點時候醒,主要用于表單

E:enabled能颁、E:disabled

  • E:enabled用于元素可用時的樣式
  • E:disabled用于元素不可用時的樣式(主要用于表單)
<script>
function radio_onchange()
{    
    var radio=document.getElementById("radio1");
    var text=document.getElementById("text1");
    if(radio.checked)
        text.disabled="";
    else
    {
        text.value="";
        text.disabled="disabled";
    }
}
</script>
<style>
input[type="text"]:enabled{
    background-color:yellow; 
}
input[type="text"]:disabled{
    background-color:purple;
}
</style>
<form>
<input type="radio" id="radio1" name="radio" 
 onchange="radio_onchange();">可用</radio>
<input type="radio" id="radio2" name="radio" 
onchange="radio_onchange();">不可用</radio><br/>
<input type=text id="text1" disabled />
</form>

E:read-only、E:read-write

  • E:read-only:當元素處于只讀狀態(tài)時
  • E:read-write:當元素處于非只讀狀態(tài)時
<style type="text/css">
input[type="text"]:read-only{
        background-color: gray;
}
input[type="text"]:read-write{
        background-color: greenyellow;
}
//firefox
input[type="text"]:-moz-read-only{
        background-color: gray;
}
input[type="text"]:-moz-read-write{
        background-color: greenyellow;
}
</style>

E:checked火焰、E:default劲装、E:indeterminate、

  • 這三個選擇器主要用于radio和CheckBox
  • E:checked用于指定單選框(或復選框)被選定時的樣式
  • E:default用于指定頁面初始化時就被指定默認選取的元素昌简,值得注意的時該樣式即使是后來選取狀態(tài)被取消占业,也依然有效噩死。
  • E:indeterminate用于對元素指定樣式救崔,一旦單選框被選定陪白,則樣式失效
input[type="radio"]:indeterminate{
        outline: solid 1px blue;
}
  • 該選擇器各瀏覽器的兼容性不高

E::selection

  • 該元素指定元素被選定時的樣式
<style type="text/css">
p::selection{
    background:red;
    color:#FFF;
}
p::-moz-selection{
    background:red;
    color:#FFF;
}
input[type="text"]::selection{
    background:gray;
    color:#FFF;
}
input[type="text"]::-moz-selection{
    background:gray;
    color:#FFF;
}
td::selection{
    background:green;
    color:#FFF;
}
td::-moz-selection{
    background:green;
    color:#FFF;
}
</style>

通用兄弟元素選擇器

  • 指定某元素之后所有同級兄弟元素的樣式
div ~ p {background-color:#00FF00;}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末澈蟆,一起剝皮案震驚了整個濱河市吩蔑,隨后出現(xiàn)的幾起案子昔期,更是在濱河造成了極大的恐慌犁功,老刑警劉巖趣避,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晚顷,死亡現(xiàn)場離奇詭異峰伙,居然都是意外死亡,警方通過查閱死者的電腦和手機该默,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門瞳氓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人栓袖,你說我怎么就攤上這事匣摘。” “怎么了裹刮?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵音榜,是天一觀的道長。 經常有香客問我捧弃,道長赠叼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮梅割,結果婚禮上霜第,老公的妹妹穿的比我還像新娘。我一直安慰自己户辞,他們只是感情好,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布癞谒。 她就那樣靜靜地躺著底燎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弹砚。 梳的紋絲不亂的頭發(fā)上双仍,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音桌吃,去河邊找鬼朱沃。 笑死,一個胖子當著我的面吹牛茅诱,可吹牛的內容都是我干的逗物。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼瑟俭,長吁一口氣:“原來是場噩夢啊……” “哼翎卓!你這毒婦竟也來了?” 一聲冷哼從身側響起摆寄,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤失暴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后微饥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逗扒,經...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年欠橘,在試婚紗的時候發(fā)現(xiàn)自己被綠了矩肩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡简软,死狀恐怖蛮拔,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情痹升,我是刑警寧澤建炫,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站疼蛾,受9級特大地震影響肛跌,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一衍慎、第九天 我趴在偏房一處隱蔽的房頂上張望转唉。 院中可真熱鬧,春花似錦稳捆、人聲如沸赠法。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砖织。三九已至,卻和暖如春末荐,著一層夾襖步出監(jiān)牢的瞬間侧纯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工甲脏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留眶熬,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓块请,卻偏偏與公主長得像娜氏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子负乡,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內容

  • 一牍白,CSS3 選擇器分類 二,選擇器語法 1抖棘,基本選擇器語法 選擇器 類型 功能描述 * 通配選擇器 選擇文檔中所...
    newSpring666閱讀 310評論 0 0
  • 第6章 征服CSS3選擇器 屬性選擇器 在HTML中茂腥,通過各種各樣的屬性可以給元素增加很多附加的信息。例如切省,通過i...
    阿振_sc閱讀 417評論 0 1
  • 屬性選擇器 屬性選擇器早在CSS2中就被引入了最岗,其主要作用就是對帶有指定屬性的HTML 元素設置樣式,而CSS3在...
    櫻桃小丸子兒閱讀 811評論 0 19
  • 2.6 語言偽類選擇器 使用語言偽類選擇器來匹配使用語言的元素是非常有用的朝捆,特別是用于多語言版本的網站般渡,其作用更是...
    白小蟲閱讀 260評論 0 1
  • 一驯用、屬性選擇器 Element[attr]只使用屬性名,但沒有確定任何屬性值p[cxy]{background: ...
    EndEvent閱讀 403評論 0 0