為什麼在CSS中不要再使用@import,CSS再使用@import

來源:互聯網
上載者:User

為什麼在CSS中不要再使用@import,CSS再使用@import

http://www.stevesouders.com/blog/2009/04/09/dont-use-import/
為什麼在CSS中不要再使用@import


CSS裡 @import用法

引入CSS的方法有兩種,一種是@import,一種是link
@import url('地址');
<link href="地址" rel="stylesheet" type="text/css" />
現在絕大部分的網站都採用後一種link方式,原因在於
@import先載入HTML,後載入CSS
link先載入CSS,後載入HTML。

所以前者載入網頁會出現令瀏覽者以外的格式,後者則是帶格式的載入網頁。
 
css中為何要把@import放在樣式表的最前面?

實際上,@import並不是一定要在最前面

W3C的CSS2.1標準中,對@import作了以下規定:
In CSS 2.1, any @import rules must precede all other rules (except the @charset rule,if present).
在CSS2.1中,任何@import命令必須放在所有其它語句之前(除了用到@charset時)。

而在CSS3標準中,則是這樣規定:
Any ‘@import’ rules must follow all ‘@charset’ rules and precede all other at-rules and rule sets in a style sheet.
在樣式表中,任何@import命令必須緊跟在@charset命令之後(如果有的話),放在其它@命令和樣式語句之前。

還有,@import命令放在注釋之後同樣生效。你不需要知道為什麼,只要記住如果不這樣做@import就會失效就行了。假如你一定要追究為什麼要做這樣的硬性規定,我認為主要出於這樣的考慮:

<p id="intro" class="frame head">I'm just a <p> element used test specificity of selectors. So leave me alone!</p>

p#intro { font: italic 1em Candara, Arial, sans-serif; }
p.frame { font: bold 3em Arial, Helvetica, sans-serif; }
p { font: italic 2em Georgia, serif; }

你認為頁面最終會使用哪條規則的font樣式?是第一條p#intro。這裡涉及到一個優先順序(specificity)的問題:#id > .class > element(標籤名)。所以即便p{font}樣式出現在p#intro{font}和p.frame{}之後,最終被應用的還是p#intro{font}。而容易導致問題的是下一種情況:

p.head { font: italic 1em Candara, Arial, sans-serif; }
p.frame { font: bold 3em Arial, Helvetica, sans-serif; }

這次你認為會使用哪條font樣式?是第二條p.frame。這裡涉及到cascading的問題。p.head的優先順序和p.frame的優先順序相同,但p.frame寫在p.head之後,按規則p.frame的font樣式會覆蓋p.head的font樣式。

在這種情況下,再允許把@import放在一堆樣式當中,到底@import引入的樣式表中有沒有會覆蓋當前樣式表的條目,諸如此類的判斷會更加困難。實際上,即便CSS標準裡沒有作這樣的規定,程式員也還是會這樣做,因為這樣可以減少很多不必要的麻煩。
參考資料:www.w3.org/...import...餘下全文>>
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.