设置了clear:left之后,它将会视前面设置了float:left样式的元素为普通文档流。
注意这句加粗的,是该元素之前的元素,也就是说,设置了clear:left之后的元素在普通文档流中。
但若同时设置了float:left之后,该元素就不在文档流中了,但其前面的元素仍将视为在普通文档流中,也就是说:两句代码同时起作用。
可以做个小试验:
有些会,有些不会
backgroung-color
父元素与子元素的关系是由元素相对于在文档中的位置决定的,若B元素包含在A元素内部,则A是B的父元素。
举例:<div class="box1">
<div class="box2"></div>
</div>
这里box2位于box1内部,box1便是box2的父元素。如果在box1里面再加入其它元素,box1也是这些元素的父元素。
设置height:xx;line-height:xx; 取一样大的值就行
百度复制:
一个元素设置了浮动样式后,会影响它的兄弟元素,至于如何影响,要看它的兄弟元素是块级元素还是内联元素。如果兄弟元素是块级元素,会无视这个浮动元素,即兄弟元素和浮动元素共处同行,浮动元素会覆盖兄弟元素。除非这些 div 设置了宽度,并且父元素的宽度不足以包含它们,这样兄弟元素才会被强制换行;如果兄弟元素是内联元素,则会尽可能围绕浮动元素。
个人理解:
三个同级div,box1、box2、浮动后box1,2脱离标准文档流不再占用空间,块级元素box3无视box1,2导致12覆盖box3,但box3中的文本内容属于内联元素,所以围绕非标准文档流元素显示
尽管问题提出好久了,还是说下我的一点浅见吧,开始我也想着是浏览器会找出某元素左边的元素,然后处理下。不过后来自己试了下,觉得这个clear:left ,在此处并不是识别出位于某元素左侧的元素,并清除浮动效果的意思。
我的理解是,某元素设置clear:left属性,则对于该元素而言,此前设置了 float:left 的元素都可以视为“普通文档流”层,这样的话新的样式就在之前设置了float:left的元素下一行开始了。那么clear:left = “忽略之前左侧浮动元素“实现的效果,把他们视作普通文档流实现的。
貌似样式和文档是是分离的,举个例子,题主截图例子中,假设div3中有文字(文字们本来位于div的左上角),如果div3不设置clear:left ,那么样式会像上图一样显示(重叠),但是div3中的文字则不然,文字此时不会在div的左上角。这时,当设置了所谓“忽略左侧浮动元素“效果clear:left 后,把之前元素的效果都当做是普通文档流的效果,这样样式会另起一行,而文字也会显示正常了。
同理,为什么clear属性还有一个right,一样的,也不是根据位置来分的,那就是”忽略右侧浮动元素效果”,即,对于设置clear:"rught”的当前元素而言,所有的右侧浮动效果(float:right),都视作普通文档流实现,所谓忽略浮动。
css,html,js都可以写在一个界面中,但是要用不同的标签将他们区分开。写css需要写在head中,并用style标签将css内容包裹起来,js可以写在head里面也可以放在body里面,但是要用script标签把包裹起来,下面是完整的代码结构:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>XXX</title> <style> .box{ width:10px; height:10px} </style> <script>//这里写js代码</script> </head> <body> <div class="box1">hello world!</div> <script>//这里写js代码</script> </body> </html>
可以多看看别人的代码并自己动手写写,会有不错的收获~
因为假如你在box2中设置clear为left,那么第二个则不会浮动,哪怕你设置了float属性,还是不会起作用,但我们的目标是为第三个,你设置第二个,对第三个div没有卵用,也违背了我们初始的想法,所以必须得设置第三个div为clear:left;
其实我们可以用在水底和水面来打个比方,两个块级元素等于在没有设置浮动前等于是两块沉在水底的木头,设置了第一块木头浮动,它浮上水面,后面一块元素还在水底因为元素的特性它会顶替浮上来这块元素的位置,那浮上来的元素去哪里了?在水面上。我们的视角看页面等于是我们垂直的从水面往水底看,所以才会出现重叠的视角。
用 自适应宽度了或用JS响应式改变它们的宽度
每个电脑的屏幕宽度都不一样,你要设置宽度自适应或者用JS响应式改变它们的宽度,获取浏览器的默认宽度用window.innerWidth
float浮动就是脱离正常文档流了。可以想象成设置了float的box2为浮动在半空中,其后未设置float的box3还在地面上,自然可以占据box2原先在地面上的位置。
而如果box3也设置了浮动,则想象成box3也和box2一样脱离了文档流,但两个都浮动在空中处于同一层,自然就无法进行覆盖了。都设置浮动为什么会紧贴着是因为一旦将元素设置了float属性后,会隐式的将其属性改为inline-block。
拓展:可以试试在box3中加入一些文字然后再看看。会发现block类型的box3可以占据box2原先的位置,但是box3中的文字(inline以及inline-block类型)会环绕box2。想要渗入理解这一点可以去看CSS的haslayout。
clear语法:
clear : none | left | right | both
取值:
none : 默认值。允许两边都可以有浮动对象
left : 不允许左边有浮动对象
right : 不允许右边有浮动对象
both : 不允许有浮动对象
应该是清除clear 属性规定元素的哪一侧不允许其它之前浮动元素
因为上面的BOX2盒子设置了左浮动,影响了BOX3,所以就清除左浮动,也就是清除左浮动的影响
关于浮动需要用到的float和position属性如果不够熟悉,应该先学习基础课程
一般情况下是是这样的。 区别 应该是 浏览器默认的问题吧
你把它清除了,