1. 程式人生 > >css樣式表的繼承、後代選擇器與子選擇器的區別、相鄰選擇器

css樣式表的繼承、後代選擇器與子選擇器的區別、相鄰選擇器

一、css的繼承

-在style中設定div的顏色為紅色,<p>、<h1>、<h2>不設定任何樣式

<style type="text/css">
    div{
       color: red;
   }
</style>
<body>
<div>
    我是第一層div
    <p>我是段落
        <h1>我是一級標題
            <h2>我是二級標題</h2>
        </h1>
    </p>
</div>
</body>

-結果<p>、<h1>、<h2>繼承了div的樣式,顏色都變成紅色


-最為常見的可繼承屬性有 color、font-size、font-style等非常多的屬性

-注意並非所有屬性都可繼承

二、後代選擇器

-寫一段 style 樣式,設定ul的em元素為紅色

<style type="text/css">
    ul em{
        color:red;
    }
</style>
<body>
<ul>
    <li><em>被選擇了</em>
        <ol>
            <li><em>被選擇了</em>
                <ol>
                    <li>
                        <em>被選擇了</em>
                    </li>
                </ol>
            </li>
            </li>
        </ol>
    </li>
</ul>
</body>

-ul和ol的區別在其符號的不同,可通過type屬性更改符號

-ul元素與後代元素em之間的層次間隔可以無限

-任意後代em元素都被設為紅色


三、子選擇器【>

-style樣式設定子元素的顏色為綠色,字型大小為20畫素

<style type="text/css">
    h1>em{
        color: green;
        font-size:20px;
    }
</style>
<body>
<h1>
    <em>我是第一個em</em>
    <p><em>我是第二個em</em></p>
    <h2><em>我是第三個em</em></h2>
</h1>
</body>


-觀察效果圖,第一個子元素em被選中,第二第三個em元素都沒有選中

-父元素與子元素之間有層次間隔會破壞子選擇器的作用效果

四、相鄰選擇器【+

-相鄰選擇器語法規則:相鄰兄弟選擇器使用了加號(+)

<style type="text/css">
    li+li{
        font-weight:bold;
    }
</style>
<body>
<div>
    <ul>
        <li>List item1</li>
        <li>List item2</li>
        <li>List item3</li>
    </ul>
    <ol>
        <li>List item1</li>
        <li>List item2</li>
        <li>List item3</li>
    </ol>
</div>

-效果圖如下:item1的兄弟是item2,item2的兄弟是iem3,item2與item3都被選中


-再看看w3School上的demo,以下內容出自W3School

<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
h1 + p {color:red}
</style>
</head>
<body>
<h1>This is a heading.</h1>
<p>This is paragraph.</p>
<p>This is paragraph.</p>
<p>This is paragraph.</p>
<p>This is paragraph.</p>
<p>This is paragraph.</p>
</body>
</html>
-效果圖:h1的兄弟是第一個<p>被選中,字型變為紅色


-結合其他選擇器
相鄰兄弟結合符還可以結合其他結合符:
html > body table + ul {margin-top:20px;}
這個選擇器解釋為:選擇緊接在 table 元素後出現的所有兄弟 ul 元素,該 table 元素包含在一個 body 元素中,body 元素本身是 html 元素的子元素。