攻克CSS記錄(1) 選擇器

2021-06-08 15:10:42 字數 1473 閱讀 1461

一直覺得自己css很搓很搓很搓~~~, 入職後決心要加強,以前學css都是看比較實踐的書籍,如《精通css》這些,大多是技巧,靠記憶~~ 發現這樣學來實在是根基不牢,永遠都要跟著別人後頭走。 個人覺得要在某個領域中強大,基礎原理是必不可少的,於是有了本人第一篇css學習的文章,文章主要是根據《css權威指南》來對自己的一些不牢靠的知識進行記錄鞏固,發現對這本書真是相見恨晚,以前學css太浮躁了,地基沒打好唉~~廢話不多說了,進入正題吧~

在選擇器上,主要是一些特殊性和層疊順序規則需要熟悉。

選擇器的特殊性由選擇器本身的元件確定。特殊性值表述為4個部分,如:0,0,0,0。乙個選擇器的具體特殊性如下確定:

一般第乙個0是為內聯樣式保留的。

按以下步驟順序確定層疊規則:

找出匹配元素的規則

按顯示權重對匹配元素所有宣告排序,!important規則權重高於沒有!important的規則;

按特殊性對宣告排序,較高特殊性勝出。

按順序對宣告排序,排在後的生出。

乙個坑

好吧,先來個例子: .test p span; 特殊行為: 0, 1, 2, 0。  

這次終於好不容易發揮了我一次研究生的鑽研精神,我就想了,這底層估摸是按位來實現的吧?這樣就只需1個數字就可以表示了。

有了猜測就要去論證,如何論證? 發揮我無恥的結論導向證明的精神,假設瀏覽器用1個數字按位表示特殊性,那麼每一類別的特殊性肯定都是有上限的,正常情況下應該不會太大,於是有了下面的**來證明:

基本思路:

給乙個id為test的div元素新增樣式規則,同時給這個元素新增一定數量的class,再將這些class結合給出另乙個規則,如果到達一定數量的class規則覆蓋了id規則,那麼就證實了我的猜想。

這是乙個div,id為test

類新增次數:

在輸入框中輸入要新增的類次數,js**會按照次數給div元素新增對應次數的類,同時會插入一條對應的規則,在**中,id規則為#test,

而類規則為,所以如果結論正確,那麼div的字型顏色會變為藍色。

通過本屌絲推測性的不懈努力的測試,發現255是個分水嶺,超過255次時,也就是2的8次方,二進位制11111111,在chrome下div的文字顏色變成了藍色,

也就是新增的類為256次時,特殊性變成了1,0,0,0,與id屬性特殊性持平,由於規則在後,故而勝出。

為了保持完整性,以下在各大瀏覽器進行了測試:

ff13, chrome22, ie9(包括在其環境下的ie7/8模式),safira5 下,256個類帶來的特殊性都等於1個id的特殊性,

然而在opera12,ie9下的怪異模式以及ietester下的ie6/7中,均不會超過id的特殊性,

推測為分別用數字儲存,而不是用乙個數字按位儲存。

例子比較極端,正常開發中我想是沒有人會弄個256個類的。。。just for fun ~ ~ !

CSS初學1 選擇器

首先認識了一下為什麼叫做css,原來是英文cascading style sheets的縮寫。中文叫做層疊樣式表。現在的最新版本的css好像是css3.0。一 對於css,設定樣式,具體設定的東西應該就是字的大小 顏色等。1.css是給html設定樣式,所以設定顏色當然是必不可少的了。我現在知道的設...

CSS複習1 選擇器

css 規則由兩個主要的部分構成 選擇器,以及一條或多條宣告。每條宣告由乙個屬性和乙個值組成。屬性 property 是您希望設定的樣式屬性 style attribute 每個屬性有乙個值。屬性和值被冒號分開。你可以對選擇器進行分組,這樣,被分組的選擇器就可以分享相同的宣告。用逗號將需要分組的選擇...

CSS 選擇器 1 基本

1.元素選擇器 elementname 元素名稱 2.類選擇器 classname 類名 3.id選擇器 idname id名 4.通配選擇器 號 效能低,慎用 5.屬性選擇器 屬性 值 1.attribute 匹配attribute的元素 2.attribute value 選擇匹配attribu...