CSS 創(chuàng)建

2020-11-11 17:32 更新

CSS 創(chuàng)建


當(dāng)讀到一個(gè)樣式表時(shí),瀏覽器會(huì)根據(jù)它來(lái)格式化 HTML 文檔。


如何插入樣式表

插入樣式表的方法有三種:

  • 外部樣式表
  • 內(nèi)部樣式表
  • 內(nèi)聯(lián)樣式

外部樣式表

當(dāng)樣式需要應(yīng)用于很多頁(yè)面時(shí),外部樣式表將是理想的選擇。在使用外部樣式表的情況下,你可以通過(guò)改變一個(gè)文件來(lái)改變整個(gè)站點(diǎn)的外觀。每個(gè)頁(yè)面使用 標(biāo)簽鏈接到樣式表。 標(biāo)簽在(文檔的)頭部

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

瀏覽器會(huì)從文件 mystyle.css 中讀到樣式聲明,并根據(jù)它來(lái)格式文檔。

外部樣式表可以在任何文本編輯器中進(jìn)行編輯。文件不能包含任何的 html 標(biāo)簽。樣式表應(yīng)該以 .CSS 擴(kuò)展名進(jìn)行保存。下面是一個(gè)樣式表文件的例子:

hr {color:sienna;}            

p {margin-left:20px;}            

body {background-image:url(/images/back40.gif);}

Remark 不要在屬性值與單位之間留有空格。假如你使用 "margin-left: 20 px" 而不是 "margin-left: 20px" ,它僅在 IE 6 中有效,但是在 Mozilla/Firefox 或 Netscape 中卻無(wú)法正常工作。


內(nèi)部樣式表

當(dāng)單個(gè)文檔需要特殊的樣式時(shí),就應(yīng)該使用內(nèi)部樣式表。你可以使用 <style> 標(biāo)簽在文檔頭部定義內(nèi)部樣式表,就像這樣:

<head>

<style>

hr {color:sienna;}

p {margin-left:20px;}

body {background-image:url("images/back40.gif");}

</style>

</head>


內(nèi)聯(lián)樣式

由于要將表現(xiàn)和內(nèi)容混雜在一起,內(nèi)聯(lián)樣式會(huì)損失掉樣式表的許多優(yōu)勢(shì)。請(qǐng)慎用這種方法,例如當(dāng)樣式僅需要在一個(gè)元素上應(yīng)用一次時(shí)。

要使用內(nèi)聯(lián)樣式,你需要在相關(guān)的標(biāo)簽內(nèi)使用樣式(style)屬性。Style 屬性可以包含任何 CSS 屬性。本例展示如何改變段落的顏色和左外邊距:

實(shí)例

<p style="color:sienna;margin-left:20px">這是一個(gè)段落。</p>

嘗試一下 ?

多重樣式

如果某些屬性在不同的樣式表中被同樣的選擇器定義,那么屬性值將從更具體的樣式表中被繼承過(guò)來(lái)。

例如,外部樣式表?yè)碛嗅槍?duì) H3 選擇器的三個(gè)屬性:

h3       

{        

color:red;        

text-align:left;     

font-size:8pt;    

}

而內(nèi)部樣式表?yè)碛嗅槍?duì) H3 選擇器的兩個(gè)屬性:

h3       

{        

text-align:right;        

font-size:20pt;     

}

假如擁有內(nèi)部樣式表的這個(gè)頁(yè)面同時(shí)與外部樣式表鏈接,那么 H3 得到的樣式是:

color:red; text-align:right;        

font-size:20pt;

即顏色屬性將被繼承于外部樣式表,而文字排列(text-alignment)和字體尺寸(font-size)會(huì)被內(nèi)部樣式表中的規(guī)則取代。


多重樣式將層疊為一個(gè)

樣式表允許以多種方式規(guī)定樣式信息。樣式可以規(guī)定在單個(gè)的 HTML 元素中,在 HTML 頁(yè)的頭元素中,或在一個(gè)外部的 CSS 文件中。甚至可以在同一個(gè) HTML 文檔內(nèi)部引用多個(gè)外部樣式表。

層疊次序

當(dāng)同一個(gè) HTML 元素被不止一個(gè)樣式定義時(shí),會(huì)使用哪個(gè)樣式呢?

一般而言,所有的樣式會(huì)根據(jù)下面的規(guī)則層疊于一個(gè)新的虛擬樣式表中,其中數(shù)字 4 擁有最高的優(yōu)先權(quán)。

  1. 瀏覽器缺省設(shè)置
  2. 外部樣式表
  3. 內(nèi)部樣式表(位于 head 標(biāo)簽內(nèi)部)
  4. 內(nèi)聯(lián)樣式(在 HTML 元素內(nèi)部)

因此,內(nèi)聯(lián)樣式(在 HTML 元素內(nèi)部)擁有最高的優(yōu)先權(quán),這意味著它將優(yōu)先于以下的樣式聲明: 標(biāo)簽中的樣式聲明,外部樣式表中的樣式聲明,或者瀏覽器中的樣式聲明(缺省值)。

Remark 提示:如果你使用了外部文件的樣式在內(nèi)部樣式中也定義了該樣式,則內(nèi)部樣式表會(huì)取代外部文件的樣式。

多重樣式優(yōu)先級(jí)深入理解

優(yōu)先級(jí)用于瀏覽器是通過(guò)判斷哪些屬性值與元素最相關(guān)以決定并應(yīng)用到該元素上的。

優(yōu)先級(jí)僅由選擇器組成的匹配規(guī)則決定的。

優(yōu)先級(jí)就是分配給指定的CSS聲明的一個(gè)權(quán)重,它由匹配的選擇器中的每一種選擇器類(lèi)型的數(shù)值決定。

多重樣式優(yōu)先級(jí)順序

下列是一份優(yōu)先級(jí)逐級(jí)增加的選擇器列表,其中數(shù)字 7 擁有最高的優(yōu)先權(quán):

  1. 通用選擇器(*)
  2. 元素(類(lèi)型)選擇器
  3. 類(lèi)選擇器
  4. 屬性選擇器
  5. 偽類(lèi)
  6. ID 選擇器
  7. 內(nèi)聯(lián)樣式

!important 規(guī)則例外

當(dāng) !important 規(guī)則被應(yīng)用在一個(gè)樣式聲明中時(shí),該樣式聲明會(huì)覆蓋 CSS 中任何其他的聲明,無(wú)論它處在聲明列表中的哪里。盡管如此,!important 規(guī)則還是與優(yōu)先級(jí)毫無(wú)關(guān)系。使用 !important 不是一個(gè)好習(xí)慣,因?yàn)樗淖兞四銟邮奖肀緛?lái)的級(jí)聯(lián)規(guī)則,從而使其難以調(diào)試。

一些經(jīng)驗(yàn)法則:

  • Always 要優(yōu)化考慮使用樣式規(guī)則的優(yōu)先級(jí)來(lái)解決問(wèn)題而不是 !important
  • Only 只在需要覆蓋全站或外部 css(例如引用的 ExtJs 或者 YUI )的特定頁(yè)面中使用 !important
  • Never 永遠(yuǎn)不要在全站范圍的 CSS 上使用 !important
  • Never 永遠(yuǎn)不要在你的插件中使用 !important

權(quán)重計(jì)算:

201712181559548677

以下是對(duì)于上圖的解釋?zhuān)?/p>

  • 內(nèi)聯(lián)樣式表的權(quán)值最高 1000
  • ID 選擇器的權(quán)值為 100
  • Class 類(lèi)選擇器的權(quán)值為 10
  • HTML 標(biāo)簽選擇器的權(quán)值為 1

利用選擇器的權(quán)值進(jìn)行計(jì)算比較,em 顯示藍(lán)色,我們提供了詳細(xì)的代碼參考:

實(shí)例

<html>  

<head>   

<style type="text/css">   

#redP p {   

/* 權(quán)值 = 100+1=101 */    

color:#F00;  /* 紅色 */   

}    

#redP .red em {    

/* 權(quán)值 = 100+10+1=111 */    

color:#00F; /* 藍(lán)色 */   

}   

#redP p span em {   

/* 權(quán)值 = 100+1+1+1=103 */

color:#FF0;/*黃色*/   

}    

</style>    

</head>   

<body>  

<div id="redP">

<p class="red">red    

<span><em>em red</em></span>   

</p>  

<p>red</p>

</div>

</body>    

</html>


嘗試一下 ?

CSS 優(yōu)先級(jí)法則:

  •  A 選擇器都有一個(gè)權(quán)值,權(quán)值越大越優(yōu)先;
  •  B 當(dāng)權(quán)值相等時(shí),后出現(xiàn)的樣式表設(shè)置要優(yōu)于先出現(xiàn)的樣式表設(shè)置;
  •  C 創(chuàng)作者的規(guī)則高于瀏覽者:即網(wǎng)頁(yè)編寫(xiě)者設(shè)置的 CSS 樣式的優(yōu)先權(quán)高于瀏覽器所設(shè)置的樣式;
  •  D 繼承的 CSS 樣式不如后來(lái)指定的 CSS 樣式;
  •  E 在同一組屬性設(shè)置中標(biāo)有 "!important" 規(guī)則的優(yōu)先級(jí)最大;


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)