今天在google reader上看到一篇博文,然後在問了組裡的幾位同事之後才發現自己曾經一直對css selector的理解存在著誤區。據說老外的文章中很早就提到了關於css selector是優先順序演算法,只是到了國內被部分人員翻譯之後,誤解了其中的含義,導致現在很多人以為css選擇符的優先順序運算是將ID名、類名等等全部相加後做比較的。 這樣認為的人,其中一個就是我,而今天我才真正認識到這個css選擇符的運用。不知道自己的那本《CSS那些事兒》有沒有提到,如果有的話,我估計很有可能也是那種錯誤的理解,在這裡小志對各位讀者朋友表示十分的抱歉。 在這裡也感謝小繁的blog中提到了這個選擇符的問題,然後小志我有機會明白,更感謝組內的同事分享。 這篇博文命名為《CSS Selector的優先順序》,主要是圍繞“11個class與1個id”的話題展開的,具體的小志就在這裡就不再囉嗦,大家可以點擊上面的連結直接瀏覽。簡單的來說就是這樣的,一個擁有id名和class名的div被十個div包含著,然後樣式是: .a1 .a2 .a3 .a4 .a5 .a6 .a7 .a8 .a9 .a10 .a11{color:red;} #b{color:green;} HTML結構比較長,如下:CSS Selector的優先順序
按照以往的理解,都說css中的class是10,id是100,然後腦袋中很自然地就想到,11個class的話,那麼不就是110了嘛。這樣就一定會比id要大了,最終的顏色應該是紅色,但其實不然,最終的顏色是綠色,是那個id的顏色。 當時看到這個我表示十分納悶,然後看文中的介紹又是一頭霧水,後來經過組內同事指導以及個人心中對自我很嚴重的BS之後,終於明白了為什麼會這樣。其實當時在看一些書籍的時候,其中介紹到的那些1和0組成的數字,其實僅僅只是1和0而已,並不是1000、100、10、1之類。 引用一下小繁的blog的圖片。 在圖中可以看到,一個id選擇符時是0,1,0,0,然後兩個id的選擇符則是0,2,0,0,以此類推,每增加一個id選擇符的話,那麼就是代表左起第二個數字會遞增,僅僅只是這個數字在增加而已。同理,使用class的選擇符也是一樣的。那麼回到前面提到的“11個class與1個id”的問題,用這樣的方式計算結果就是: 1個id時:0,1,0,0 11個class時:0,0,11,0 擴充閱讀:http://www.cssforest.org/blog/index.php?id=164 顯然,這個問題中id的樣式肯定會出現,而class的樣式不會出現。緊記這次的教訓,以後多花點時間去看老外的文章,以及去鞏固和更好地掌握基礎知識。這一年來,心態上一直都在迷失著,太隨性了。目標和方向經常被自己遺忘,經常經曆這樣的事情對個人而言是好事,可以很清晰地看到自己的不足,然後進行彌補! 最後對自己說一句:繼續加油,小志! 原文:http://blog.linxz.de/about_css_selector/ 本文連結:http://www.blueidea.com/tech/web/2011/8388.asp 2012夏季新款韓版季女裝高腰弔帶無袖連衣裙2012夏季新款韓版時尚百搭弔帶網紗連衣裙如奕正品 2012春夏 新款 女 可愛波點 蛋糕群擺 雪紡連衣裙夏裝2011新款韓版複古甜美蝴蝶結低腰碎花短袖連衣裙收腰原單棉白益多派寧專賣店2012夏季新款韓版季女裝高腰弔帶無袖連衣裙2012夏季新款韓版時尚百搭弔帶網紗連衣裙如奕正品 2012春夏 新款 女 可愛波點 蛋糕群擺 雪紡連衣裙夏裝2011新款韓版複古甜美蝴蝶結低腰碎花短袖連衣裙收腰原單棉白艾維倫家居旗艦店【6折特價】姐妹花 優雅蕾絲聚胸上托B杯文胸3141【姐妹花內衣】 時尚蕾絲包邊聚胸A杯文胸3105【姐妹花內衣】簡約時尚側收B杯文胸9023H2 女裝頻道 電器