天天看點

CSS和CSS3選擇器

這一篇是對精通CSS:進階Web标準解決方案第二章的學習總結.

将會有以下内容:

(1).常用的選擇器.

(2).進階選擇器

(3).新的CSS3選擇器

最常用的選擇器類型是類型選擇器和後代選擇器.類型選擇器用來尋找特定類型的元素,比如段落或者标題元素.有時候也被稱為元素選擇器或簡單選擇器.

p{color:black}
h1{font-weight:bold}
           

後代選擇器可用了來尋找特定元素或元素組的後代.另外還有ID選擇器和類選擇器.ID選擇器用#替代,類選擇器用.替代.

#id{}
<p><span id="id">Harry Knowles</span></p>
.class{}
<p><span class="class">Harry Knowles</span></p>
           

通用選擇器

可能是所有選擇器中最強大卻最少使用的.作用就像通配符,它比對所有的元素.用型号代替.最常用的操作就是去除浏覽器的padding和margin

*{
    margin: px;
    padding: px;
}
           

子選擇器

後代選擇器可以選擇一個元素的所有後代,而子選擇器隻選擇元素的直接後代,即子元素.

<div id="mu">
    <p>Harry Knowles</p>
    <div>
        <p>Harry Knowles</p>
    </div>
</div>

//對于以上的代碼,寫成子選擇器則最終背景顔色變化的隻有第一個p标簽.
#mu>p{
    margin-top: px;
    background-color: #cccc00;
}
//但是寫成這樣,也就是後代選擇器,兩個都有效
#mu p{
    margin-top: px;
    background-color: #cccc00;
}
           

相鄰同胞選擇器 可以定位同一個父元素下某個元素之後的元素

直接看代碼了解

<h2>這是一個标題</h2>
 <p>Harry Knowles</p>
<p>Harry Knowles</p>

對于以上的代碼如何用相鄰同胞選擇器讓第一個p标簽變色呢.

h2 + p{
    margin-top: 10px;
    background-color: #cccc00;
}
           

屬性選擇器

根據某個屬性是否存在或者屬性的值來尋找元素.如果屬性有多個值,用空格分開

<h2 title="标題">這是一個标題</h2>

//使用屬性選擇器改變h2的背景顔色
h2[title]{
    background-color: #cccc00;
}
           

—————————————————–華麗的分割線—————————————————————–

第二章能看的東西就這麼多.我覺得内容太少了就把我看視訊的筆記拿出來給大家看看

下面給出屬性選擇器另外一些寫法.

*= 包含XXX

^= 首字母為xxx

$= 結束字元xxx

一個示例

<h2 title="a">這是一個标題</h2>
<h2 title="bba">這是一個标題</h2>
<h2 title="ab">這是一個标題</h2>

//比如這個會使第一個h2的标簽背景變色,其他不變,另外兩個可以試一下
h2[title~="a"]{
    background-color: #cccc00;
}
           

結構性僞類選擇器

first-line 某個元素的第一行

first-letter:某個元素首個字母

<p>這是第一行的内容<br/>這是第二行</p>

//這裡p元素的第一個标簽背景會改變,第二個不變
p:first-line{
    background-color: #cccc00;
}

//這裡第一個p元素的第一個字元會變成紅色
p:first-letter{
    color: #dc143c;
}
           

x:before{ //在某元素之前添加

content:

}

<ul>
        <li>清單1</li>
        <li>清單2</li>
        <li>清單3</li>
    </ul>

//這裡将會在ul清單的上方添加一個"加的内容"的文字
ul:before{
    content: "加的内容";
}
           

其他一些選擇器

root:綁定到頁面的根元素中 如果設定了root,那麼body的作用域就隻有内容區域,反之body沾滿全屏()

not:如果想對某個結構元素使用樣式,但想排除這個結構下面的子結構元素

empty:指定目前元素中内容為空白時使用的樣式

x代表元素名稱

x:first-child{}

x:last-child{}

x:nth-child(position){} 從上往下數 包括父級和子級 position可以是數字也可以是奇偶數等等可以表示位置的詞語奇數(odd) 偶數(even)

x:nth-of-type(){}

x:nth-last-child(position){}從下往上數

nth-last-of-type 同上類似

這裡寫出root,not,x中的第三個,第四個示例.其他的一看便知.

root:

//以下的代碼将會看到整個螢幕背景是黃色,body所設定的圖檔背景隻會作用在<div>所占的空間
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        :root{
            background-color: fuchsia;
        }
    </style>
</head>
<body background="1.jpg">
    <div>哈喽,root</div>
</body>
</html>
           

not

<div><p>哈喽,root</p></div>
    <div><h1>哈喽,root</h1></div>
    <div><h2>哈喽,root</h2></div>

 //以下代碼将會使除了p标簽之外的其他标簽變色
div *:not(p){
            color: fuchsia;
        }
           

x:nth-child(position){}

<ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>

//以下代碼将會使第二個li标簽也就是2的文字變色.
//PS:一開始我以為X的部分要寫ul,并且position從0開始.這裡并不是,鎖着這裡是有先決條件的.必須是同一個父元素下.
li:nth-child(2){
            color: fuchsia;
        }
           

x:nth-of-type(){}

<ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
//以下代碼将會使li标簽中奇數li标簽字型變色.偶數為even.這裡括号的條件并不局限于奇數和偶數
li:nth-of-type(odd){
            color: fuchsia;
        }
           

選擇器的内容大概就這些.