清除浮动方法2 为什么 使设置了clear: both的元素的margin-top属性失效?
.s2的margin-top为什么失效了?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>float_issue</title> <style> .blue { background-color: #002868; } .red { background-color: #cf142b; } .junior { width: 100px; height:200px; float: left; } .s1 { /*margin-top: 300px;*/ /*border: 1px solid black;*/ } .s2 { clear:both; height:100px; background-color: gold; margin-top: 300px; } </style> </head> <body> <div class="s1"> <div class="junior blue"></div> <div class="junior"></div> <div class="junior red"></div> </div> <div class="s2"></div> </body> </html>
.s1的margin-top是有效的
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>float_issue</title> <style> .blue { background-color: #002868; } .red { background-color: #cf142b; } .junior { width: 100px; height:200px; float: left; } .s1 { margin-top: 300px; /*border: 1px solid black;*/ } .s2 { clear:both; height:100px; background-color: gold; /*margin-top: 300px;*/ } </style> </head> <body> <div class="s1"> <div class="junior blue"></div> <div class="junior"></div> <div class="junior red"></div> </div> <div class="s2"></div> </body> </html>
26
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小李
2022-09-01 13:34:38
同学你好,解答如下:
1、s1与s2做为兄弟元素,当s1的子元素使用浮动,但s1没有主动清除浮动,s2添加clear:both实际上是起不了作用的,那么s2就会呈现出这样的问题。同学可以打开控制台看看s1的结构会发现s1本身是没有模型的,但它是真实存在的,这是因为s1内部的元素脱离了文档流。
2、如上面所说因为s1内部的元素进行浮动,但是s1并没有清除其内部的浮动,那么它是没有模型的,但是它是真实存在的,给s1设置外边距时,同学可以观察它依然没有一个实质的模型,但是它确实是存在的。这里也是应正了这个观点。那么既然是存在的那么他就可以设置外边距。
3、使用clear:both在视频中有讲到,是有“副作用的”因为它没办法踹一个没有高度的盒子。视频中5分29秒处同学可以在回顾一下。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星