CSS复习笔记二:浮动和清除浮动

Wesley13
• 阅读 467

 一、浮动的性质

1、浮动的元素脱离标准文档流,并且可以设置宽度和高度。

2、浮动的元素相互贴靠

3、浮动的元素有“文字环绕”效果 

        含有图片的div浮动,段落不浮动,文字会环绕图片。

4、div浮动了且没有设置宽度,那么将自动收缩为内容的宽度。

浮动(脱标)的元素是不能把容器惩处高度的。

二、浮动的清除

方法1:

        给浮动元素的祖先元素加高度。只要浮动在一个有高度的盒子中,那么这个浮动就不会影响后面的浮动元素。所以就是清除浮动带来的影响了。

换句话说,没有高度的容器无法关住浮动。所有后面盒子里面的浮动元素依然在贴上一个盒子里面浮动的元素。

网页制作的过程中,height属性很少出现,因为能被内容撑高。所以这个方法很少用。

方法2:

为后面浮动元素父亲添加clear: both;属性

1        <div>
2            <ul>
3                <li>HTML</li>
4                <li>CSS</li>
5                <li>JS</li>
6                <li>HTML5</li>
7                <li>设计模式</li>
8            </ul>
9        </div>
10    
11        <div class="box2">  → 这个div写一个clear:both;属性 
12            <ul>
13                <li>学习方法</li>
14                <li>英语水平</li>
15                <li>面试技巧</li>
16            </ul>
17        </div>

致命缺陷:margin 失效。本质原因还是因为两个div都没有高。

方法3:隔墙法

在两个div之间添加一个div

给这个div两个类 一个cl 给clear:both属性;一个h16给高度属性,用这个墙撑出高度,这样就避免了margin失效了。

虽然有中间的div(墙)撑出高度,但是前后两个div的高度依然是0。

.cl{
            clear: both;
        }
    .h16{
             height: 16px;
         }

<div class="box1">
        <ul>
            <li>HTML</li>
            <li>CSS</li>
            <li>JS</li>
            <li>HTML5</li>
            <li>设计模式</li>
        </ul>
    </div>
    
    <div class="cl h16"></div>

    <div class="box2">
        <ul>
            <li>学习方法</li>
            <li>英语水平</li>
            <li>面试技巧</li>
        </ul>
    </div>

方法4:内墙法

    <div class="box1">
        <ul>
            <li>HTML</li>
            <li>CSS</li>
            <li>JS</li>
            <li>HTML5</li>
            <li>设计模式</li>
        </ul>

        <div class="cl h16"></div>
    </div>

    <div class="box2">
        <ul>
            <li>学习方法</li>
            <li>英语水平</li>
            <li>面试技巧</li>
        </ul>
    </div>

把墙修在墙内,这样两个div都有高了

方法5:overflow:hidden;

一个父亲,不能被自己浮动的儿子撑出高度,但是,如果这个父亲加上了overflow:hidden;那么这个父亲就能够被浮动的儿子撑出高度了。这个现象,不能解释,就是浏览器的小偏方。并且,overflow:hidden;能够让margin生效。

点赞
收藏
评论区
推荐文章
LinMeng LinMeng
2年前
小记面试题-2021
CSS类1.解释浮动及其工作原理浮动的元素可以向左或者向右移动,直到它的外边缘碰到包含元素(父元素)或另一个浮动元素的边框为止。要想使元素浮动,必须为元素设置一个宽度。虽然浮动的元素已不在文档流中,但是它浮动后所处的位置依然在浮动之前的水平方向上。因为浮动元素不在文档流中,所以文档流中的块元素表现的就像浮动元素不存在一样,下面的元素会填补原来的位置。有些
Wesley13 Wesley13
2年前
CSS
在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了,下面总结8种清除浮动的方法,测试已通过iechromefirefoxopera,需要的朋友可以参考下清除浮动是每一个web前台设计师必须掌握的机能。css清除浮动大全,共8种方法。 浮动会使当前标签产生向上浮的效果,同时会影响到前后标签、父级标签的位置及widthhei
Wesley13 Wesley13
2年前
BFC清除浮动
BFC就是清除浮动用来处理文档脱离文档流的问题清除浮动的方法:a、父元素也添加一个浮动    产生弊端就是:margin不能使用b、给父元素添加一个:display:inlineblock     弊端同a一样:无法使用marginc、给父元素添加高     
Wesley13 Wesley13
2年前
CSS中清除浮动的作用以及如何清除浮动
1.什么是浮动,浮动的作用“浮动”从字面上来理解就是“悬浮移动、非固定”的意思。块级元素(div、table、span…)是以垂直方向排列,而在前端界面中往往要使用水平布局块级元素使界面更美观。这就要用到浮动了。被设置浮动的元素会脱离标准流(竖直排列),从而达到水平排列的效果。例如.未设置浮动时图1中的两张图片竖直排列在父级元素(橙色区域)
Wesley13 Wesley13
2年前
CSS清除浮动大全共8种方法
在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了,下面总结8种清除浮动的方法,测试已通过iechromefirefoxopera,需要的朋友可以参考下清除浮动是每一个web前台设计师必须掌握的机能。css清除浮动大全,共8种方法。浮动会使当前标签产生向上浮的效果,同时会影响到前后标签、父级标签的位置及widthheig
Stella981 Stella981
2年前
CSS之清除浮动 && float属性
DIV层内的元素在使用了float属性后无法自动改变高度的解决办法:有的时候为了让外侧层根据内容自动调整,没有设置高度或宽度,一般都会正常显示。但如果层内元素使用了float属性,就会使那些元素脱离文件流,就无法再扩充容器层,就会导致外层大小无法根据内容自动调整。关于这个问题,总结出以几种在当下几种主流浏览器都兼容的方法,供大家参考。1.清除浮动在层
Wesley13 Wesley13
2年前
CSS清除浮动的4种方式
1、使用空标签清除浮动。我用了很久的一种方法,空标签可以是div标签,也可以是P标签。这种方式是在需要清除浮动的父级元素内部的所有浮动元素后添加这样一个标签清除浮动,并为其定义CSS代码:clear:both。此方法的弊端在于增加了无意义的结构元素。2、使用overflow属性。此方法有效地解决了通过空标签元素清除浮动而不得不增加无意代码的弊端。使用
Wesley13 Wesley13
2年前
CSS 清除浮动 伪类
参考链接:https://www.cnblogs.com/yingsu/p/7261904.html不清楚浮动的结果和影响不再描述,清除浮动的代码别处也有很多,每种方法都有十分简洁的代码,我今天学到的是有伪类来清除浮动。他的原理简单来说就是再已经浮动的元素后面添加一个什么也没有的元素,以此来消除子元素因为浮动而让父元素塌陷的一种解决办法。
Wesley13 Wesley13
2年前
css为什么要清除浮动
DIV1宽度为100px,DIV2宽度为50px,如果上级DIV层的宽度大于DIV1DIV2的宽度,DIV2设置浮动属性float:left,DIV2会像流水一样,自动显示在DIV1的右侧,如果上级DIV层的宽度等于或者小于DIV1DIV2的宽度,那么,DIV2层就会被挤到DIV1的下方.如果DIV1设置了清除属性,DIV2就
Wesley13 Wesley13
2年前
CSS基础知识(定位、浮动)
12、浮动!(https://oscimg.oschina.net/oscnet/80b6fe9ed0e2c74d146667b2fdbd187f21a.jpg)特点:将当前元素脱离文档流   float:left即左浮动 float:right即右浮动注:\父与子元素,设置子元素浮动不能超出父元素的范围