[問題] 為什麼這裡的CSS是tag較class有優先權?

作者: rrr0832 (rrr0832)   2017-07-14 08:13:18
我們都知道
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」 還來得高又該怎麼解釋呢?
請各位高手解釋
感激不盡
作者: nottt (無)   2017-07-14 08:36:00
作者: ssccg (23)   2017-07-14 09:17:00
ul#aaa li和ul.bbb li↑id ↑class
作者: ilovekebi   2017-07-14 09:48:00
http://muki.tw/tech/css-specificity-document/.myclass 只有一個class的權重,ul#aaa li 除了原本li的tag權重,前面還多一個id為aaa的權重,優先權會較高
作者: enwebbs   2017-07-14 16:42:00
id=100 class=10 tag=1,假如兩者分數相同,就看先後順序
作者: EPGo   2017-07-14 18:14:00
權重還會看階級 id:1-0-0, class:0-1-0, tag:0-0-11個tag = 階級3權重1分, 1個class = 階級2權重1分權重相同比順序,但是階級無法被超越可以參考ilovekebi大貼的連結最初的例子加上權重https://jsfiddle.net/gpofsko0/
作者: xdraculax (首席怪叔叔)   2017-07-15 18:35:00
不明覺厲

Links booklink

Contact Us: admin [ a t ] ucptt.com