成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? CSS規則層疊時的優先級算法
全站頭部文字 我要出現在這里
CSS規則層疊時的優先級算法 413 2024-10-16   

inline style
embeded style
external style
user style
inline style是丑陋的,它們穿梭在HTML文檔中,與HTML元素扭成一團,給Web前端開發人員造成了許多麻煩。它們往往以這樣的面目出現:

<p style="color:red;">This is a paragraph.</p>
embeded style比inline style紳士一些,它們也寄宿在HTML文檔中,但是它們不屑于與HTML元素扭成一團。它們往往在 <style> 元素中出現:

<style type="text/css" media="screen">
p{
color : red;
}
</style>
external style是個貴族,它不愿意同HTML呆在一起,所以干脆以外部文件的形式獨立存在。通常我們使用 <link> 元素或者@import語句將它們導入HTML。

<link rel="stylesheet" type="text/css" media="screen" />
我們應當盡可能使用external style,我想理由有很多,大家都知道,我也就不重復了。

還有一種user style與以上三者略有不同,如果你使用IE瀏覽器,那么你可以在Tools ? Internet Options ? General ? Appearance ? Accessibility ? User style sheet 下找到添加user style的地方(原諒我沒有中文版的IE瀏覽器)。

既然我們有如此多的添加style的方法,那么難以避免樣式會產生層疊。如:

<p class="intro" style="color:red;">This is a paragraph.</p>
我們在使用以上inline style的同時,又在我們的external style中使用了:

p{
color : yellow;
}
我們甚至還在擁有 class="intro" 的 <p> 元素上應用了:

p.intro{
color : blue;
}
這樣我們就 在同一元素的同一屬性 color 上,擁有多條CSS規則指定了值 。這種情況被稱為層疊(Cascading)。當層疊發生時,CSS Parser將根據優先級算法來確定最終選用的值。

優先級算法按照先后順序考慮以下三個方面:

CSS規則的重要性和來源
CSS規則的特殊性
CSS規則在文檔中出現的順序
算法過程分為4步:

1、針對某一元素的某一屬性,列出所有給該屬性指定值的CSS規則。如上例中,在 class="intro" 的 <p> 元素上,有三條CSS規則指定了 color 屬性。

2、根據聲明的重要性和來源進行優先級排序

重要性有兩種:

important
normal(即非important)
在CSS規則后添加 !important 的重要性要高于沒有添加的。

來源有三種:

user agent stylesheet ? 瀏覽器默認樣式
author stylesheet ? 開發人員定義的樣式
user stylesheet ? 用戶在瀏覽器中定義樣式
重要性和來源的優先級排序從低到高是:

user agent stylesheet
user style sheets中的normal規則
author style sheets中的normal規則
author style sheets中的important規則
user style sheets中的important規則
經過以上排序,如果有一條CSS規則的優先級高于其他所有競爭規則,那么算法結束,返回該最高優先級指定的值。如果有多條CSS規則具有最高優先級,那么它們將要繼續競爭下去,算法將進入第3步。

3、按照特殊性(Specificity)排序

CSS將計算多條規則中指定每一規則的selector的特殊性值,該值越高,優先級越高。

特殊性值是一個由4個整數組成的一個類似數組的值:a,b,c,d,其中a的權重最高,依次類推,d的權重最低。selector特殊性值的計算方法是:

如果該規則是一條inline style,那么a = 1
如果該規則由selector指定,selector中出現的id selector的數量就是b的值
如果該規則由selector指定,selector中出現的屬性selector(包括class selector)或者偽類selector的數量總和就是c的值
如果該規則由selector指定,selector中出現的元素selector或者是偽元素selector的數量總和就是d的值。
universal selector * 的特殊性值為0,0,0,0
官方網站 提供了一些例子可以加深理解。

在根據特殊性值排序時,由于a的權重最高,因此首先比較a,在a相同的情況,在比較b,依次類推。因此不論b,c,d值有多大,inline style總是具有最高的特殊性。

如果根據以上特殊性排序后,有一條CSS規則的優先級高于其他所有競爭規則,那么算法結束,返回該最高優先級指定的值。如果有多條CSS規則具有最高優先級,那么它們將要繼續競爭下去,算法將進入第4步。

4、比較CSS規則在文檔中出現的順序

出現在后的總是比出現在前的具有更高的優先級,因此出現在最后的那條語句將被作為該屬性的值。

至此,算法結束。我徹底暈了。


主站蜘蛛池模板: 蒙羞之旅| 国产老阿姨| 疯狂48小时| 美丽人生在线完整版免费观看| 山楂树之恋电影剧情简介| 《隐秘而伟大》电视剧| 一级片黄色毛片| 2024年怀男怀女表图| 斯科特阿金斯主演所有电影| 郭柯彤| 颂赞诗歌| www.黄视频| 郭碧婷是哪里人| 勇者义彦| 贤惠好儿媳在线观看完整版| 免费看污视频在线观看| 学校要的建档立卡证明图片| 泰国《永恒/eternity》| 战狼15电影在线观看| 蓝家宝电影| 四川不锈钢水箱制造厂| 相武纱季| 世界轮廓图| 快播电影网| cctv6电影节目表| 变形金刚1普通话版| 速度与激情 电影| 2024新款微信图片| 美容室4| 春天的芭蕾歌词| 中诺矫平机| 韩佳熙的电影全部作品| 散文诗二首批注| 母亲とが话しています免费| 母与子| 萱草花合唱谱二声部| 林智妍三级全部电影| 叶子楣作品| 好像怎么造句 二年级| 我和大姨子| 陈慧娴个人资料|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103