CSS权重计算问题
2017-06-23 16:52
309 查看
很多CSS的初学者觉得CSS的权重计算问题令人头疼,其实权重计算问题是有窍门的。下面这是一个很有意思的比较权重的代码,读者不妨猜猜输出的会是什么颜色。
运行结果:权重计算,如果都选中了按优先级的高低选择,id,class,html.
原因就是输出的那句话,当有多个选择器的时候,系统会根据优先级的大小排序,比如第一个选择器就是1一个id,1个class,1个Html标签,而第二个选择器,则是1个id,0个class,3个html标签,所以第一个是大于第二个的,第三个是0个id,2个class,2个html标签,优先级自然也是最小的,就好比是111>103>023,这样就比较好理解了。
如果权重计算结果一样怎么办呢?这时候又有另外一个规则:如果权重一样,那么后出现的会覆盖掉先出现的。看下面这段代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>权重计算2</title>
<style>
#box1 #box2 p {
color: red;
}
#box2 #box3 p {
color: blue;
}
</style>
</head>
<body>
<div class="hezi1" id="box1">
<div class="hezi2" id="box2">
<div class="hezi3" id="box3">
<p>计算权重的第二步: 如果权重一样,那么后出现的会覆盖掉先出现的。</p>
</div>
</div>
</div>
</body>
</html>这里的运行结果会变成蓝色的。这是因为第二个是后出现的,权重要大于第一个。
这里还有一个有趣的问题,请看下面的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#hezi2 #hezi3 {
color: green;
}
#hezi1 #hezi2 {
color: red;
}
</style>
</head>
<body>
<div class="box" id="hezi1">
<div class="box" id="hezi2">
<div class="box" id="hezi3">
<p>猜猜我是什么颜色?</p>
</div>
</div>
</div>
</body>
</html>
运行结果:猜猜我是什么颜色?
为什么会是绿色呢?
权重比较第四步: 如果都没有选中,那么谁离目标元素近就听谁的
他们都没有选择到最精确的<P>标签 那么看离得最近的。
关于CSS权重问题还有很多有意思的问题,往后的学习中应该多多注意权重问题的陷阱。
8f8b
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>权重计算</title> <style type="text/css"> #box1 .he2 p { color:red; } div div #box3 p{ color:yellow; } div.he2.he3 p { color:blue; } </style> </head> <body> <div class="he1" id="box1"> <div class="he2" id="box2"> <div class="he3" id="box3"> <p>权重计算,如果都选中了按优先级的高低选择,id,class,html.</p> </div> </div> </div> </body> </html>
运行结果:权重计算,如果都选中了按优先级的高低选择,id,class,html.
原因就是输出的那句话,当有多个选择器的时候,系统会根据优先级的大小排序,比如第一个选择器就是1一个id,1个class,1个Html标签,而第二个选择器,则是1个id,0个class,3个html标签,所以第一个是大于第二个的,第三个是0个id,2个class,2个html标签,优先级自然也是最小的,就好比是111>103>023,这样就比较好理解了。
如果权重计算结果一样怎么办呢?这时候又有另外一个规则:如果权重一样,那么后出现的会覆盖掉先出现的。看下面这段代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>权重计算2</title>
<style>
#box1 #box2 p {
color: red;
}
#box2 #box3 p {
color: blue;
}
</style>
</head>
<body>
<div class="hezi1" id="box1">
<div class="hezi2" id="box2">
<div class="hezi3" id="box3">
<p>计算权重的第二步: 如果权重一样,那么后出现的会覆盖掉先出现的。</p>
</div>
</div>
</div>
</body>
</html>这里的运行结果会变成蓝色的。这是因为第二个是后出现的,权重要大于第一个。
这里还有一个有趣的问题,请看下面的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#hezi2 #hezi3 {
color: green;
}
#hezi1 #hezi2 {
color: red;
}
</style>
</head>
<body>
<div class="box" id="hezi1">
<div class="box" id="hezi2">
<div class="box" id="hezi3">
<p>猜猜我是什么颜色?</p>
</div>
</div>
</div>
</body>
</html>
运行结果:猜猜我是什么颜色?
为什么会是绿色呢?
权重比较第四步: 如果都没有选中,那么谁离目标元素近就听谁的
他们都没有选择到最精确的<P>标签 那么看离得最近的。
关于CSS权重问题还有很多有意思的问题,往后的学习中应该多多注意权重问题的陷阱。
8f8b
相关文章推荐
- CSS权重的问题:选择器权重值的计算
- css中的权重计算,手风琴样式时遇到的问题
- css的层叠性:就是处理冲突的能力,所有的权重计算没有任何兼容问题。
- CSS外层BOX自动计算高度问题
- CSS权重关系及问题剖析
- 问题:CSS样式引入方法以及CSS权重分配问题.........
- CSS的一些基础样式,继承性权重问题
- css权重问题--学习笔记
- CSS-层叠性中的权重计算规则
- CSS 选择器权重计算规则
- CSS的选择器的权重问题
- 有关不同浏览器不同版本号的css以及js计算高度的问题
- CSS权重计算
- 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧
- 有关不同浏览器不同版本的css以及js计算高度的问题
- CSS样式优先级与权重计算方式
- 关于CSS权重问题
- CSS特异性(CSS Specificity)的细节之CSS样式权重的计算与理解(CSS样式覆盖规则)
- css 权重 计算
- 在引入bootstrap后,在引入自定义的css,可以覆盖掉一部分bootstrap的样式,例如字体颜色就可以改变,但是有些也改变不了,别人说是css权重的问题