html標籤屬性和css屬性哪個優先順序高

2021-05-21 16:01:06

html標籤屬性和css屬性相比,css屬性的優先順序高。原因:W3C標準提倡使用CSS樣式,提倡用CSS樣式代替HTML標籤屬性;網頁製作標準是標籤跟樣式分離;且在標籤屬性裡設定樣式,重複使用比較難。

本教學操作環境:windows7系統、CSS3&&HTML5版、Dell G3電腦。

今天在看w3c的CSS教學中的尺寸(Dimension)那一節,進行了如下實驗:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>W3Cschool教學(w3cschool.cn)</title> 
<style>
html {height:100%;}
body {height:100%;}
img.normal {height:auto;}
img.big {height:50%;}
img.small {height:10%;}
</style>
</head>

<body>
<img class="normal" src="/attachments/cover/cover_css.png" width="95" height="84" /><br>
<img class="big" src="/attachments/cover/cover_css.png" width="95" height="84" /><br>
<img class="small" src="/attachments/cover/cover_css.png" width="95" height="84" />
</body>
</html>

執行結果如下:

實驗運行結果
當時令我不解的是,為什麼相比於img標籤裡的height屬性,反而是內部樣式表中的img的height屬性起了作用,然後就進行了各種的百度搜尋。


最終得出了相關結論:
(1) 現在發現當時的我把標籤內的屬性設定和內聯樣式搞混了,所以剛開始才會那麼驚訝無法理解,之後嘗試內聯樣式

<img class="big" src="/attachments/cover/cover_css.png"  style="width:95px; height:84px" /><br>

實驗結果表明還是內聯樣式的優先順序高於內部樣式表。

(2) 重新搞清楚概念後,再觀察會發現其實是內部樣式表的樣式設定優先順序高於html標籤屬性的樣式設定,隨後進行了外部樣式表的實驗

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>W3Cschool教學(w3cschool.cn)</title> 
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<img src="cover_css.png" width="50px" height="84" />
</body>
</html>

發現外部樣式表的優先順序也高於img標籤內部的height屬性,由此可知,css的樣式會優先於標籤的屬性

(3) W3C標準提倡使用CSS樣式,提倡用CSS樣式代替HTML標籤屬性;網頁製作標準是標籤跟樣式分離。因為在標籤屬性裡設定,重複使用比較難,個人猜測這可能就是css樣式優先順序高於標籤屬性的原因。


(4) 雖然提倡使用CSS樣式,但是W3School中進行了詳細的介紹:「為影象指定 height 和 width 屬性是一個好習慣。如果設定了這些屬性,就可以在頁面載入時為影象預留空間。如果沒有這些屬性,瀏覽器就無法瞭解影象的尺寸,也就無法為影象保留合適的空間,因此當影象載入時,頁面的佈局就會發生變化。」

「請不要通過 height 和 width 屬性來縮放影象。如果通過 height 和 width 屬性來縮小影象,那麼使用者就必須下載大容量的影象(即使影象在頁面上看上去很小)。正確的做法是,在網頁上使用影象之前,應該通過軟體把影象處理為合適的尺寸。」

「height 和 width 屬性的兩個值可以比實際的尺寸大一些或小一些,瀏覽器會自動調整影象,使其適應這個預留空間的大小。但需要注意的是:瀏覽器還是必須要下載整個檔案,不管它最終顯示的尺寸到底是多大,而且,如果沒有保持其原來的寬度和高度比例,影象會發生扭曲。
使用 height 和 width 屬性的另外一種技巧,是可以非常容易地實現對頁面區域的填充,同時還可以改善檔案的效能。設想一下,如果你想在檔案中放置一個彩色的橫條。您不需要建立一個具有完整尺寸的影象,相反,您只要建立一個寬度和高度都為 1 個畫素的影象,並把自己希望使用的顏色賦給它。然後使用 height 和 width 屬性把它擴充套件到更大的尺寸。」

「如果提供了一個百分比形式的 width 值而忽略了 height,那麼不管是放大還是縮小,瀏覽器都將保持影象的寬高比例(因為不設定height時的預設值為auto自適應)。這意味著影象的高度與寬度之比將不會發生變化,影象也就不會發生扭曲。」

就像露兜文章中一個ID為「於江水」的評論:「img 的 alt 屬性是必須的,width 和 height 是推薦的。因為 img 在網頁的載入是要比 p 這些結構慢的,所以往往是結構和文字先載入了,再載入的圖片。這時候,由於瀏覽器預先不知道圖片的尺寸大小,所以無法渲染圖片在網頁中的位置和尺寸。等圖片載入進來之後,再進行渲染,這時候就產生重繪(就是瀏覽器重新計算相關元素的位置,具體表現就是圖片出現了,圖片下面的文字跑到下面了,淘寶的商品介紹頁面,這裡非常明顯。)
而帶有 width 和 height 的 img,瀏覽器會計算出來,留空,然後等待圖片載入,避免頁面重繪,提高前端效能和使用者體驗,這裡在知乎上多圖的答案可以看出來。

在響應式佈局(一個網站能夠相容多個終端——而不是為每個終端做一個特定的版本;這個概念是為解決行動網際網路瀏覽而誕生的)的圖片處理中,應該對 img標籤設定 max-width: 100%; height: auto; 這兩條屬性,才可以保證成比例拉伸。」

(學習視訊分享:)

以上就是html標籤屬性和css屬性哪個優先順序高的詳細內容,更多請關注TW511.COM其它相關文章!