权重就是我同个元素,有多个选择器的状况下,我该选择哪个选择器的样式。css
<!doctype html> <html> <head> <title></title> <meta charset="utf-8" /> <style type="text/css"> #p{ background: red; } .p{ background: skyblue; } p{ background: green; } </style> </head> <body> <p style="background: pink" id="p">行内的样式</p> <p class="p" id="p">id的样式</p> <p class="p">class的样式</p> <p>p标签的样式 </p> </body> </html>
经过上面的比较,能够得出,行内样式>id选择器>类选择器>标签选择器>通配符html
那么有没有可能让标签选择大于全部的选择器呢,答案是有的,只要加上这行代码!important
,任何选择器的权重就是无限大了。code
<!doctype html> <html> <head> <title></title> <meta charset="utf-8" /> <style type="text/css"> #p{ background: red; } .p{ background: skyblue; } p{ background: green !important; } *{ background: brown } </style> </head> <body> <p style="background: pink" id="p">行内的样式</p> <p class="p" id="p">id的样式</p> <p class="p">class的样式</p> <p>p标签的样式 </p> </body> </html>
ID选择器 #idhtm
类选择器 .class继承
标签选择器 p,div等utf-8
属性选择器 [type="text"]input
通用选择器 *it
伪类选择器 :hoverclass
伪元素选择器 ::beforeimport
子选择器、相邻选择器
第一等:行内样式是 1000,行内样式虽然没被列入选择器里,但它的权重是最高的
第二等:id选择器是 100
第三等:类选择器、伪类选择。属性选择器、属性选择器 10
第四等:标签选择器和伪元素选择器 1
其余选择器的权重为0
继承的样式没有权重
若是等级相同,那么最后的样式会覆盖前面的样式
最后请记住!important
的权重是无限大的
将选择器的权重加起来
<!doctype html> <html> <head> <title></title> <meta charset="utf-8" /> <style type="text/css"> body input{ color: blue; } input{ color: red; } </style> </head> <body> <input type="text" name="" value="ssss"> </body> </html>
最终的样式是文字为蓝色
由于body input 的权重是2,body,input每一个的权重是1,因此加起来就2
#id .input input{ color: yellow; }
上面的权重就是 100 + 10 +1 = 111