CSS选择器的层叠性

479 阅读2分钟

CSS选择器的层叠性:

  1. 层叠性指的是当CSS的样式产生冲突时的处理机制。
  2. 层叠性的优先级:算权重,谁的权重大就采用谁的样式表,权重小的被覆盖掉
    3.计算权重:(id选择器个数,类名选择器的个数,标签名选择器的个数)先比较id选择器个数,如果id选择器个数相同,在比较类选择器个数,最后才比较标签选择器个数,
    顺序:在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式、作为style属性写在元样式、id选择器、类选择器、标签选择器、通配符选择器、浏览器自定义或继承。
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		#box1 .d2 p{
			color: red;  //(1,1,1)
		}
		div div #box3 p{
			color: green;   
		}
		div.d1 div.d2 div.d3 p{
			color: blue;
		}
	</style>
</head>
    <div class="d1" id="box1">
    	<div class="d2" id="box2">
    		<div class="d3" id="box3">
    			<p>文字颜色</p>
    		</div>
    	</div>
    </div>
</body>
</html>

第一个为(1, 1,1);
第二个为(1,0,3);
第三个为(0,3, 4);先比较id选择器个数排除第三个,在比较类选择器个数,排除第二个。最后显示红色。
4.id选择器的优先级最高,class优先级次之,标签名选择器的优先级最低,3者之间可认为不存在进位,其实存在进位(255进一位)但是无意义不考虑。
5.如果选中同一个元素,且权重相同,谁写在最后,为谁的样式。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		.d1 p{
			color: green;
		  }
		div .duanluo{
			 color:red;
		}
	</style>
</head>
<body>
	  <div>
	  	<div>
	  	     <div class="d1">
	  		<p class="duanluo">
	  			文字颜色
	  		</p>
	  	</div>
	  	</div>
	  </div>
</body>
</html>

此时选中了同一个元素,权重相同,那个样式写在最后,为那个样式,如果两个选择器换位,就会显示绿色。
6.如果是继承过来的样式,权重是0。(如果没有选中这个标签权重为0)

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		#box1 #box2 #box3{
               color: red;
		}
		div.d1 div.d2 div.d3{
            color: green;
		} 
		p{
			color: orange;
		}
	</style>
</head>
<body>
	     <div id="d1" class="box1">
	     	<div id="d2" class="box2">
	     		<div id="d3" class="box3">
	     		<p>
	     			 文字颜色
	     		</p>
	     	</div>
	     	</div>
	     </div>
</body>
</html>

此时显示橙色,
因为前两个没有选中,p被选中,不考虑权重。
7.如果都没有选中,权重为0,此时采用“就近原则”,

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	   div.d3{
			color: green;
		}
		#box1{
			 color:red;
		}
	</style>
</head>
<body>
	  <div id="box1" class="d1">
	  	<div id="box2" class="d2">
	  		<div id="box3" class="d3">
	  		<p>
	  			文字颜色
	  		</p>
	  	</div>
	  	</div>
	  </div>
</body>
</html>

此时上面两个选择器都没有选中,不能比较去权重,id为box1离p标签远,
class="d3"离p标签近,所以此时会显示绿色。
判断方法:
1.先看有没有选中元素
2.如果选中元素,计算权重排除,
3.如果权重相同,谁写在最后谁起作用,
4.如果没选中元素,采用“就近原则”,谁的表达离标签近,谁起作用。