html>
<html>
<head>
<meta charset="utf8" http-equiv="content-type" content="text/css">
<title>dsaftitle>
<style>
p{
color: pink;
}
div{
color: red;
}
p div{
color: green;
}
style>
head>
<body>
<div>bbbb
<p>aaaa
<div>ccccdiv>
p>
div>
body>
html>
问题1:为什么aaaa是粉色而不是红色,首先p继承了div,都说继承后权重为0,也就是此时p标签权重为0,但是又定义了p的样式,所以此时p权重为1,而div权重也是1,权重相同的情况下最终结果应该是div里面的red才对啊。
问题2:为什么cccc是红色而不是绿色,按照权重来说p div的权重是2要高于p和div,所以应该执行p div里面的green才对呀
问题1:为什么aaaa是粉色而不是红色,首先p继承了div,都说继承后权重为0,也就是此时p标签权重为0,但是又定义了p的样式,所以此时p权重为1,而div权重也是1,权重相同的情况下最终结果应该是div里面的red才对啊。
<div> 样式设置为红色
<p> 样式设置为粉色
p 为div子元素,则p本身样式覆盖继承的样式
你关于权重的理解是错误的,上一个问答我已经有说明了
问题2:为什么cccc是红色而不是绿色,按照权重来说p div的权重是2要高于p和div,所以应该执行p div里面的green才对呀
p 标签是一个比较特殊的标签,他会在遇到块级元素时断开,自动补全,所以,页面 dom 最后不是 <p><div></div></p> 而是 <p></p><div></div><p></p>
问题1:匹配到aaa的颜色样式只有p{color:pink;}
,自然是粉红色的。对p的颜色设置和对div的颜色设置并不冲突。继承的权重与div本身的权重并不相加。
问题2:p标签里面不能放块级标签,所以你的HTML中aaa和ccc那里最后会被解析成如下,自然设置green的地方找不到p里面的div,无效设置。
<p>aaa<p>
<div>ccc</div>
<p></p>
父元素设置
.box{
overflow:hidden
}
添加一个空div
.clear{
clear:both
}
<div class="box">
<div class="left"></div>
<div class="right"></div>
<div class="clear"></div>
</div>
使用伪元素(常用)
.clearfix:after{
/*此元素将显示为块级元素,此元素前后会带有换行符*/
display:block;
/*清除浮动*/
clear:both;
/*content 属性与 :before 及 :after 伪元素配合使用,来插入生成内容*/
content:""
}
<div class="box clearfix">
<div class="left"></div>
<div class="right"></div>
</div>