请问5.1清除浮动章节内容中的浮动问题

请问5.1清除浮动章节内容中的浮动问题

老师你好,我想问下本节视频中老师讲的当div2,div3都是left浮动,div4不浮动时,法一在div4中清除浮动,法二单独设置classdiv清除浮动,法三在单独设置classdiv中添加伪元素清除浮动三种方法的父div1高度为div3+div4的高度。而我给div4设置为left浮动,其他不变时,法一父div1高度崩塌,法二法三父div1高度都为div3的高度,不明白为什么会出现不同,我的理解:一、关于老师讲的,三种方法的父div1高度为div3+div4的高度是因为div4是标准文档并用clear属性中的both值使div4左右没有浮动元素,所以div4没被div2和div3覆盖独占一行,同时因为div4在div2和div3下方,所以父div1高度才被迫是div4的高度加上div3的高度吧(div3的高度是虚充?若浮动层在下方,标准文档在上方,父div高度就是标准文档的高度吧。。。)。二、关于我修改div4为left浮动(修改div4为浮动为了测试下方没有标准文档的支撑父div1的高度会怎样),三种方法都是both值将div4移到下方,div2、div3、div4都是left浮动,那么三种方法应该都是父div1高度崩塌,为什么法二和法三还会有div3的高度?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

1、同学理解的没错

2、同学可能对clear:both,以及clear:left和clear:rigth 有所误解。

clear:both  是清除设置这个clear:both元素前边的浮动影响,

如对clearDiv设置clear:both,则它会对div3无论是左浮动,还是右浮动,都起作用。如果设置的是clear:left ,则只有在div3设置的是左浮动时起作用,如果设置的clear:rigth  则只对 div3设置右浮动时起作用。 

它对div4没有清除浮动的作用。


http://img1.sycdn.imooc.com//climg/5eb8bf0909634f0907490276.jpg

3、综上所述,当第一种方法时,由于div4浮动起来了,它本身和div2 div3时一样了,虽然清除了div3的浮动,但div4也浮动了,导致了父元素的塌陷,如第一问中同学理解的那样,没有一个正常的标准文档流,它还是没办法撑起父元素的高度,所以div1 塌陷了。而第二三种方法,它只是对div3 起了清除浮动的作用,对div4是否浮动起来,它已经不管了,与方法一不同的是,我们有clearDiv这个正常的文档流,虽然它的高度为0,但却也是个正常的文档流,实际上是clearDiv与div3的高度撑起了父元素的高度,因为clearDiv高度是0。所以,变成了div3的高度。

如果我的回答解决了你的疑问,请采纳,祝学习愉快。


好帮手慕阿莹 2020-05-10 19:47:50

1、关于:“一、关于老师讲的,三种方法的父div1高度为div3+div4的高度是因为div4是标准文档并用clear属性中的both值使div4左右没有浮动元素,所以div4没被div2和div3覆盖独占一行,同时因为div4在div2和div3下方,所以父div1高度才被迫是div4的高度加上div3的高度吧  ” 

是的:

同学理解的没错

并且关于同学的“div3的高度是虚充?若浮动层在下方,标准文档在上方,父div高度就是标准文档的高度吧。。。”这句话,老师没有看懂同学的意思

2、关于我修改div4为left浮动(修改div4为浮动为了测试下方没有标准文档的支撑父div1的高度会怎样),三种方法都是both值将div4移到下方,div2、div3、div4都是left浮动,那么三种方法应该都是父div1高度崩塌,为什么法二和法三还会有div3的高度?

因为clear: both;  只能对它前边的元素起作用,没有办法对<div id="clearDiv"></div> 后边的元素起作用。例如,div和它换换地方,则:

http://img1.sycdn.imooc.com//climg/5eb7e8ba09e45cae04490233.jpg

http://img1.sycdn.imooc.com//climg/5eb7e8ef09932b1610460260.jpg

第三种方法只是对第二种方法的升级。也是同理。

3、建议同学下次提问可以分条提问,都写在一起的话,老师担心会漏答同学的问题。

可以通过换行以及结合代码,这样老师更容易理解同学的问题。

如果我的回答解决了你的疑问,请采纳。祝学习愉快。


  • 提问者 qq_酒半熏_0 #1
    谢谢老师的回复,老师我想问:1.“div3的高度是虚充?若浮动层在下方,标准文档在上方,父div高度就是标准文档的高度吧。。。”视频老师讲的父元素div1高度为div3+div4,我的理解为是不是消除浮动后浮动层div3和标准文档div4在一层了所以高度为两者相加。2.我不理解老师说的“因为clear: both; 只能对它前边的元素起作用,没有办法对<div id="clearDiv"></div> 后边的元素起作用。”,both不是不允许左右出现浮动元素么?若clear值为left才对后边元素不起作用吧。3.视频老师中div4不是left浮动,我设置div4为left浮动,三种方法中方法一中父div1高度崩塌,方法二和方法三中父div1高度为div3,为什么会不一样? html代码: <!DOCTYPE html> <html> <head> <title>css消除浮动</title> <link rel="stylesheet" href="floatTest1.css"> </head> <body> <div class="div1"> <div class="div2"></div> <div class="div3"></div> <div class="classdiv"></div> <div class="div4"></div> </div> </body> </html> css代码: .div1{ background:black; } .div2{ width:200px; height:200px; background:red; float:left; } .div3{ background:pink; width:220px; height:220px; float:left; } .div4{ background:yellow; width:240px; height:240px; float:left; clear:both; } /*.classdiv{ clear:both; }*/ /*.classdiv::after{ content:""; visibility:hidden; height:0px; display:block; clear:both; }*/
    2020-05-10 20:18:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师