[問題] 為什麼這裡的CSS是tag較class有優先權?
我們都知道
CSS selector的優先權是:
inline style > ID > Class > Tag
◎ inline style 就是內嵌在各標籤 裡的「style="..."」 這個attribute
◎ ID 就是 「井字號 (#)」開頭的Selector
◎ Class 就是 「點 (.)」開頭的Selector
◎ Tag 就是像「h1」、「span」、「a」這種用Tag來做依據的Selector
但是以下為什麼Tag優先權會比Class來得高呢?
<style>
.myclass { font-size: 20px; }
ul#aaa li { font-size: 15px; }
li.myclass { font-size: 10px; }
ul.bbb li { font-size: 25px; }
ul { font-size: 30px; }
</style>
<ul id="aaa" class="bbb">
<li id="myli" class="myclass">Hello</li>
</ul>
優先順序是:
ul#aaa li > ul.bbb li > li.myclass > .myclass > ul
「ul」的「font-size」是繼承而來的,優先權最低這無庸置疑,
但是為什麼「.myclass」的優先權居然比「ul#aaa li」、「ul.bbb li」和「li.myclass
」還來得低呢?
尤其是「ul#aaa li」和「ul.bbb li」
明明這兩個Selector是Tag層級的,為什麼優先權會比Class層級的「.myclass」 (還有「
li.myclass」)還來得高呢?
另外,
「li.myclass」優先權比「.myclass」 還來得高又該怎麼解釋呢?
請各位高手解釋
感激不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.138.128.62
※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1499991201.A.DD6.html
推
07/14 08:36, , 1F
07/14 08:36, 1F
→
07/14 08:36, , 2F
07/14 08:36, 2F
推
07/14 09:17, , 3F
07/14 09:17, 3F
→
07/14 09:22, , 4F
07/14 09:22, 4F
推
07/14 09:48, , 5F
07/14 09:48, 5F
推
07/14 09:53, , 6F
07/14 09:53, 6F
→
07/14 09:54, , 7F
07/14 09:54, 7F
感謝各位
我剛才有個疑問
假設今天有三個權重一樣:「.c1 span」、「.c2 span」和「span .c3」
為什麼「.c1 span」、「.c2 span」會優於「span .c3」呢?
難道判斷優先權是從父元素來判斷的?
還是甚至是從它們的「最原始祖先元素」來判斷的?
為什麼不是從子元素判斷呢?
感謝各位
※ 編輯: rrr0832 (101.138.128.62), 07/14/2017 10:14:41
各位好
1樓給的網址的文章的作者好像有點讓人錯亂
剛才試了一下
原來多個權重相同的選擇器是看出現順序的先後來決定
之所以「.c1 span」、「.c2 span」會優於「span .c3」原來是它把「span .c3」放在「
.c1 span」和「.c2 span」的前面
所以「span .c3」的Style才會被覆蓋過去
害我想半天都想不出來…
不過還是感謝各位的解答
※ 編輯: rrr0832 (101.138.128.62), 07/14/2017 10:23:10
推
07/14 16:42, , 8F
07/14 16:42, 8F
推
07/14 18:14, , 9F
07/14 18:14, 9F
→
07/14 18:15, , 10F
07/14 18:15, 10F
→
07/14 18:16, , 11F
07/14 18:16, 11F
→
07/14 18:17, , 12F
07/14 18:17, 12F
→
07/14 18:32, , 13F
07/14 18:32, 13F
推
07/15 18:35, , 14F
07/15 18:35, 14F