從零開始學習html(九)CSS的繼承、層疊和特殊性,css層疊

來源:互聯網
上載者:User

從零開始學習html(九)CSS的繼承、層疊和特殊性,css層疊
一、繼承

 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>繼承</title> 6 <style type="text/css"> 7 p{color:red;} 8  9 </style>10 </head>11 <body>12     <h1>勇氣</h1>13     <p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩,上課從來不敢回答老師提出的問題,生怕回答錯了老師會批評我。就一直沒有這個勇氣來回答老師提出的問題。學校舉辦的活動我也沒勇氣參加。</p>14     <p id="second">到了三年級下學期時,我們班上了一節公開課,老師提出了一個很<span>簡單</span>的問題,班裡很多同學都舉手了,甚至成績比我差很多的,也舉手了,還說著:"我來,我來。"我環顧了四周,就我沒有舉手。</p>15 </body>16 </html>
繼承

CSS的某些樣式是具有繼承性的,那麼什麼是繼承呢?

繼承是一種規則,它允許樣式不僅應用於某個特定html標籤元素,而且應用於其後代。

比如下面代碼:如某種顏色應用於p標籤,這個顏色設定不僅應用p標籤,

還應用於p標籤中的所有子項目文本,這裡子項目為span標籤。

p{color:red;}<p>三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>

可見結果視窗中p中的文本與span中的文本都設定為了紅色。但注意有一些css樣式是不具有繼承性的。如border:1px solid red;

p{border:1px solid red;}<p>三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>

在上面例子中它代碼的作用只是給p標籤設定了邊框為1像素、紅色、實心邊框線,而對於子項目span是沒用起到作用的。

任務

我也來試試,為段落加入一個邊框

1.在編輯器的第8行,輸入:

p{border:1px solid red;}

注意p標籤中的span標籤是否有加入邊框樣式?

 

二、特殊性
 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>特殊性</title> 6 <style type="text/css"> 7 p{color:red;} 8 .first{color:green;}/*因為權值高顯示為綠色*/ 9 10 span{color:pink;}/*設定為粉色*/11 12 13 </style>14 </head>15 <body>16     <h1>勇氣</h1>17     <p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩,上課從來不敢回答老師提出的問題,生怕回答錯了老師會批評我。就一直沒有這個勇氣來回答老師提出的問題。學校舉辦的活動我也沒勇氣參加。</p>18     <p id="second">到了三年級下學期時,我們班上了一節公開課,老師提出了一個很簡單的問題,班裡很多同學都舉手了,甚至成績比我差很多的,也舉手了,還說著:"我來,我來。"我環顧了四周,就我沒有舉手。</p>19 </body>20 </html>
特殊性

有的時候我們為同一個元素設定了不同的CSS樣式代碼,那麼元素會啟用哪一個CSS樣式呢?我們來看一下面的代碼:

p{color:red;}.first{color:green;}<p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>

p和.first都匹配到了p這個標籤上,那麼會顯示哪種顏色呢?green是正確的顏色,那麼為什麼呢?

是因為瀏覽器是根據權值來判斷使用哪種css樣式的,權值高的就使用哪種css樣式。

下面是權值的規則:

標籤的權值為1,類選擇符的權值為10,ID選擇符的權值最高為100。例如下面的代碼:

p{color:red;} /*權值為1*/p span{color:green;} /*權值為1+1=2*/.warning{color:white;} /*權值為10*/p span.warning{color:purple;} /*權值為1+1+10=12*/#footer .note p{color:yellow;} /*權值為100+10+1=111*/

注意:還有一個權值比較特殊--繼承也有權值但很低,有的文獻提出它只有0.1,所以可以理解為繼承的權值最低。

試一試:為“膽小如鼠”這幾個文本設定顏色為紫色

要求:為“膽小如鼠”這幾個文本設定權值更高的CSS樣式代碼來覆蓋以前的CSS樣式代碼

在第11行輸入下面的代碼:

p span{color:purple;}

p>span{color:purple;}
三、層疊
 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>層疊</title> 6 <style type="text/css"> 7 p{color:red;} 8 p{color:green;} 9 10 </style>11 </head>12 <body>13     <h1>勇氣</h1>14     <p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩,上課從來不敢回答老師提出的問題,生怕回答錯了老師會批評我。就一直沒有這個勇氣來回答老師提出的問題。學校舉辦的活動我也沒勇氣參加。</p>15     <p id="second">到了三年級下學期時,我們班上了一節公開課,老師提出了一個很<span>簡單</span>的問題,班裡很多同學都舉手了,甚至成績比我差很多的,也舉手了,還說著:"我來,我來。"我環顧了四周,就我沒有舉手。</p>16     17 </body>18 </html>
層疊

我們來思考一個問題:如果在html檔案中對於同一個元素可以有多個css樣式存在並且這多個css樣式具有相同權重值怎麼辦?

層疊就是在html檔案中對於同一個元素可以有多個css樣式存在,當有相同權重的樣式存在時,

會根據這些css樣式的前後順序來決定,處於最後面的css樣式會被應用。

如下面代碼:

p{color:red;}p{color:green;}<p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>

最後 p 中的文本會設定為green,這個層疊很好理解,理解為後面的樣式會覆蓋前面的樣式。

所以前面的css樣式優先順序就不難理解了:

內聯樣式表(標籤內部)> 內建樣式表(當前檔案中)> 外部樣式表(外部檔案中)。

來試一試:使用層疊的方式設定兩段文字顏色為粉色

在代碼編輯器中的第9行輸入:

p{color:pink;}

四、重要性

重要性

我們在做網頁代碼的時,有些特殊的情況需要為某些樣式設定具有最高權值,怎麼辦?這時候我們可以使用!important來解決。

如下代碼:

p{color:red!important;}p{color:green;}<p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>

這時 p 段落中的文本會顯示的red紅色。

注意:!important要寫在分號的前面

這裡注意當網頁製作者不設定css樣式時,瀏覽器會按照自己的一套樣式來顯示網頁。

並且使用者也可以在瀏覽器中設定自己習慣的樣式,比如有的使用者習慣把字型大小設定為大一些,使其查看網頁的文本更加清楚。

這時注意樣式優先順序為:瀏覽器預設的樣式 < 網頁製作者樣式 < 使用者自己設定的樣式,

但記住!important優先順序樣式是個例外,權值高於使用者自己設定的樣式。

來試試,使用!important語句來改變樣式權重

在編輯器的第7行,相應位置插入!important 語句。

這樣做的目的是也把第一段文字的顏色設定為紅色。

第7行是否是輸入這樣的代碼:

p{color:red!important;}

複習:
繼承、特殊性,層疊,重要性的區分。
繼承是指標籤的樣式可以由子代繼承,但有些標籤是不能繼承的,比如:border。
特殊性指用用權重來確定最後起作用的樣式,id=100,class=10,標籤=1,繼承=0.1;
層疊指當權重相同時,後面的樣式覆蓋前面的樣式。
重要性important的使用。

就近原則 離標籤近就會被引用
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.