13 CSS中的浮动

技术交流QQ群:1027579432,欢迎你的加入!

欢迎关注我的微信公众号:CurryCoder的程序人生

1.为什么需要浮动(float)?

  • 反问1:如何让多个块级盒子div水平排列成一行
    目标效果.png
  • 标准流比较难以实现,虽然将块级元素转换为行内块元素可以实现一行显示,但是它们之间会产生大的空白间隙,间隙的宽度很难人为控制。
  • 反问2:如何实现下面两个盒子的左右对齐
    目标效果.png
  • 总结:有很多的布局效果,标准流没有办法完成,此时就可以利用浮动完成布局。因为浮动可以改变元素标签默认的排列方式
  • 浮动最典型的应用:可以让多个块级元素在一行内排列显示
  • 网页布局第一准则:多个块级元素纵向排列找标签流,多个块级元素横向排列找浮动

2.什么是浮动?

  • float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘。
  • 语法规范:
    选择器 {
        float: 属性值;
    }
    
浮动属性值.png

3.浮动特性[重难点]

  • 加了浮动后的元素,会具有很多新的特性,需要我们掌握。
    • 3.1浮动元素会脱离标准流(脱标);
    • 3.2浮动的元素会在一行内显示并且元素顶部对齐;
    • 3.3浮动的元素会具有行内块元素的特性;
3.1浮动元素会脱离标准流(脱标)
  • 设置了浮动float的元素最重要的特性:
    • a.脱离标准普通流的控制(浮)移动到指定位置(动),简称脱标;
    • b.浮动的盒子不再保留原先的位置;
  • 浮动特性的形象化解释:


    形象化解释1.png

    形象化解释2.png

    具体解释.png
3.2浮动的元素会在一行内显示并且元素顶部对齐
  • 如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并且顶端对齐显示
    浮动的元素会在一行内显示并且元素顶部对齐.png
  • 注意:浮动的元素是互相贴在一起的(不会有间隙的),如果父级宽度装不下这些浮动的盒子,多出来的盒子会另起一行对齐
3.3浮动的元素会具有行内块元素的特性
  • 浮动元素具有行内块元素特性;
  • 任何元素都可以浮动,不管原先是什么模式的元素,添加完浮动之后具有行内块元素相似的特性
    • 如果块级盒子没有设置宽度,默认宽度和父级宽度一样宽,但是加了浮动后,它的大小根据具体内容来决定;
    • 浮动的盒子中间是没有空隙的,是紧挨在一起的;
    • 行内元素同理;

4.浮动元素经常搭配标准流的父级元素搭配使用

  • 为了约束浮动元素位置,网页布局一般采取的策略是:先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置。符合网页布局第一准则
    浮动元素经常搭配标准流的父级元素搭配使用.png
  • 网页布局的第二准则:先设置盒子的大小,之后再设置盒子的位置

5.常见网页布局

  • 常见的网页布局如下:


    网页布局1和2.png

    网页布局3.png

6.浮点的两个注意点

6.1 浮动和标准流的父盒子搭配使用
  • 先用标准流的父元素排列上下位置,之后内部子元素采用浮动排列左右位置
6.2 一个元素浮动了,理论上其余的兄弟元素也要浮动
  • 一个盒子里面包含多个子盒子,如果其中一个盒子浮动了,那么其他兄弟盒子也应该浮动,从而防止引起问题。
  • 浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流

7.前面浮动元素有一个标准流的父元素,它们有一个共同的特点都是有高度的。但是,所有的父盒子都必须有高度吗?

  • 答:不是。例如下面的网页:


    示例1.png

    示例2.png
  • 解决方法:理想中的状态,让子盒子撑开父盒子,有多少孩子,我的父盒子就有多高

8.为什么需要清除浮动?

  • 由于父级盒子在很多情况下,不方便设置高度。但是,子盒子浮动又不占有位置,导致父级盒子高度为0时,最终会影响下面区域的标准流盒子。由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响。
    原因分析.png

9.清除浮动的本质

  • 清除浮动的本质就是清除浮动元素造成的影响
  • 如果父盒子本身有高度,则不需要清除浮动
  • 清除完浮动后,父级盒子就会根据浮动的子盒子自动检测出高度。父级盒子有了高度,就不会影响下面区域中的标准流了
  • 语法格式:
    选择器 {
        clear: 属性值;
    }
    
常见的属性值.png
  • 在实际开发中,常用到的是clear: both;
  • 清除浮动的策略是:闭合浮动

10.清除浮动方法

  • 常用方法如下:
    • 额外标签法也称为隔墙法,是W3C推荐的做法
    • 父级盒子添加overflow属性
    • 父级盒子添加after伪元素
    • 父级盒子添加双伪元素
10.1 清除浮动之额外标签法
  • 额外标签法也称为隔墙法,是W3C推荐的做法。
  • 额外标签法会在浮动元素末尾添加一个空的标签。例如<div style="clear:both;"></div>,或者其他标签(如<br/>等)。
  • 优点:通俗易懂,书写方便;
  • 缺点:添加许多无意义的标签,结构化较差;
  • 注意:要求这个新的空标签必须是块级元素
10.2 清除浮动之父元素添加overflow
  • 可以给父级元素添加overflow属性,将其属性值设置为hidden、auto、scroll
  • 子不教父之过,注意是给父级元素添加代码
  • 优点:代码简洁;
  • 缺点:无法显示溢出的部分;
10.3 清除浮动之:after伪元素法
  • :after方式是额外标签法的升级版本,也是给父级元素添加
  • 语法格式:
    .clearfix:after {
        content: "";
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
    }
    
    .clearfix {  /* IE6、7专有 */
        *zoom: 1;
    }
    
  • 优点:没有增加标签,结构更简单;
  • 缺点:照顾低版本浏览器;
  • 代表网站:百度、淘宝、网易等常用的清除浮动方法;
10.4 清除浮动之双伪元素法
  • 给父元素添加
  • 语法格式:
    .clearfix:before, 
    .clearfix:after {
        content: "";
        display:table;
    }
    
    .clearfix:after {
        clear: both;
    }
    .clearfix { /* IE6、7专有 */
        *zoom: 1;
    }
    
  • 优点:代码更简洁;
  • 缺点:照顾低版本浏览器;
  • 代表网站:小米、腾讯等常用的清除浮动方法;

11.清除浮动总结

  • 为什么需要清除浮动
    • 父级盒子没有设置高度;
    • 子盒子浮动了;
    • 影响下面的布局,此时就需要清除浮动了;
  • 清除浮动的常用方法
    清除浮动的常用方法总结.png

12.资料下载

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,635评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,543评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,083评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,640评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,640评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,262评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,833评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,736评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,280评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,369评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,503评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,870评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,340评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,460评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,909评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,512评论 2 359