1. 程式人生 > >CSS樣式的展現方式和效果順序

CSS樣式的展現方式和效果順序

CSS類樣式的展現方式

一般在HTML檔案中加入樣式有3種方式:

1. 內部樣式

內部樣式是指在HTML檔案的加入<style></style>,然後在其內部加入css樣式。

<style>
    p{
    color:red;
    }
</style>

一般這個樣式會加在HTML<head>部分中。

2. 內聯樣式

內聯樣式就是指樣式直接寫在HTML的元素中。

<p style="color:red;">xxx</p>

3. 外部樣式

外部樣式是有外部的樣式檔案連結到HTML檔案中,從而展現樣式效果。
又兩種樣式連結方式:
第一種方式:
使用<link>

來進行連結。

<link rel="stylesheet" type="text/css" href="css/style.css">

其中rel屬性是指定了HTML檔案與所連結的檔案之間的關係,一般常見的是stylesheet了,因為主要是用於連結css樣式檔案。
type屬性是規定了文件的資訊型別,type屬性在有href的情況下可以選擇MIME_type這個值,這個值會根據被連線文件的型別而定的。
href是指文件的路徑。
rel屬性還有一個值icon也較為常用。這個主要用在網頁圖示(這裡只是提供了一個方法)

 <link rel="icon" href
="images/胡蘿蔔之怒小logo.ico" type="MIME_type" >

其效果如下圖所示:
網頁logo

第二種方式:

<style>
@import+空格+url(樣式檔案路徑)
</style>

第二種樣式的連結方式的一般不常用,通常都使用第一中連結方式。

CSS樣式顯示效果順序

我們現在知道CSS樣式的展現方式有3種,其選擇器也有幾種情況:
1. 標籤選擇器:p{…}
2. 類選擇器:.class{…} (class=”class”)
3. ID選擇器:#id{…} (id=”id”)
4.派生選擇器

測試程式碼如下:
HTML檔案:

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <style>
        #ceshi1{
            color: blue;
        }
        #ceshi2{
            color: red;
        }
    </style>
</head>
<body>
        <p id="ceshi1" class="ceshi" style="color:rebeccapurple">測試有內聯樣式和內部樣式以及外部樣式-有內聯樣式有內部樣式有外部樣式</p>
        <p id="ceshi2" class="ceshi">測試有內聯樣式和內部樣式以及外部樣式-無內聯樣式有內部樣式有外部樣式</p>
        <p id="ceshi3" class="ceshi">測試有內聯樣式和內部樣式以及外部樣式-無內聯樣式無內部樣式有外部樣式</p>
        <p class="ceshi">測試有class,有元素的情況</p>
        <p>測試單元素的情況下</p>
        <div>
            <ul>
                <li id="cs1">測試1</li>
                <li id="cs2">測試2</li>
                <li id="cs3">測試3</li>
                <li id="cs4">測試4</li>
                <li class="cs5">測試5</li>
                <li id="cs6">測試6</li>
                <li id="cs7">測試7</li>
            </ul>
        <p class="cs5">測試8</p>
        <p>測試9</p>
        <a href="index.html">link</a>
        </div>
</body>

CSS檔案:

.ceshi{
    color:purple;
}

#ceshi1{
    color: green;
}
#ceshi2{
    color:#ff5689;
}
#ceshi3{
    color: yellow;
}
p{
    color: brown;
}
li.cs5{
    color:rosybrown;
}
li#cs2{
    color: olive;
}

div p{
    color: orange;
}
div>ul>li{
    color: palegreen;
}
 #cs3{
    color:slategrey;
}
#cs6{
    color: red;
}
#cs6{
    color: green;
}
a:link{
    color: orangered;
}
a{
    color: greenyellow;
}

首先前五個效果如下:

測試CSS樣式效果順序1

從圖中可以看出CSS樣式效果順序如下:

內聯樣式>內部樣式>外部樣式

ID選擇器>類選擇器>標籤選擇器

後面的div中可以看出:
派生選擇器中div p比p更為特定,所以呈現的是orange顏色;
選擇器li#cs2和li.cs5比div>ul>li更特定,所以呈現的顏色分別是olive和rosybrown,而不是palegreen;
選擇器#cs6有兩個樣式,但是最終呈現的是green顏色,說明在相同或者同樣特定的情況下,樣式會採取更後面的來呈現;
選擇器a:link和a相比,a:link更特定,所以會呈現orangered顏色。

[測試CSS樣式效果順序2

在這裡我引用《HeadFirst HTML和CSS》這本書中的簡易區分順序方法:

設定選擇器是一個百位數000
當這個選擇器中有一個id,則百位加1
當這個選擇器中有一個類(class)或者偽類(即類似:link),則十位加1
當這個選擇器中有一個元素,則個位加1
最後算出來的 百位數進行比大小,最大的數即為樣式最終呈現的狀態

在這裡我舉幾個例子方便於理解:

選擇器 百位數值
p 001
div>ul>li 003
li.cs5 011
.cs5 010
#cs6 100
a:link 011

本文僅用於記錄web前端學習情況。