7.19浮动

目录

一、 浮动样式的原理

1、普通文档流

 2、浮动之后的文档流

 3、注意

二.、浮动元素父级高度塌陷

1、解决高度塌陷方法:

2、 补充


今天给大家分享一些关于浮动的知识点

一、 浮动样式的原理

1、普通文档流

浏览器在默认情况下规定一个块元素在父元素内的排列规则:

  • 从上往下排列

  • 从左开始排列

  • 一个块元素占一行

<style>
    .parent{width:800px; height:400px; border:10px solid blue;}

    .box1{width:250px; height:80px; background-color:#ed7d31;}
    .box2{width:400px; height:100px; background-color:#70ad47;}
    .box3{width:200px; height:200px; background-color:#7030a0;}
</style>
<div class="parent">
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
</div>

 2、浮动之后的文档流

<style>
    .parent{width:800px; height:400px; border:10px solid blue;}

    .box1{float:left; width:250px; height:80px; background-color:#ed7d31;}
    .box2{width:400px; height:100px; background-color:#70ad47;}
    .box3{width:200px; height:200px; background-color:#7030a0;}
</style>
<div class="parent">
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
</div>

下面图片地址

 http://static.zzhitong.com/lesson-files/html/img/9-4.png

 3、注意

若一个元素要浮动,那么它的祖先元素一定要有高度,有高度的盒子才能关住浮动;

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

浮动的元素不会超过它的上边兄弟元素,最多是一边齐;

若浮动元素的上边是一个没有浮动的块元素,则浮动元素无法上移;

浮动的元素不会盖住文字,文字会自动环绕在浮动元素周围。

二.、浮动元素父级高度塌陷

当父级元素没有设置高度时,高度会由文档流内容撑开。

而当子元素浮动之后,脱离了文档流,所以父级高度不会被撑开,这对我们后续的布局结构会造成很多困扰。

1、解决高度塌陷方法:

  • 方法1 -- 子元素加clear

    在浮动元素后面加一个空的子元素,并给其CSS属性clear

    <div style="clear:both"></div>

    clear取值: left 清除左浮动 | right 清除右浮动 | both 清除所有浮动

  • 方法2 -- 父元素加宽高

    直接规定父元素的宽高,就不存在塌陷问题了。缺点是,得手动计算合适的宽高,并且扩展性不好。

  • 方法3 -- 父元素BFC(Block formatting context)化

    父元素满足下列条件之一即可:

    • 根元素

    • float属性不为none

    • position不为static和relative

    • overflow不为visible(较常用,通常设置overflow : hidden来解决高度塌陷

    • display为inline-block / table-cell / table-caption / flex / inline-flex

  • 方法4 -- 父元素利用伪类after

    当前最主流的方式,利用伪元素,相当于给父级多加了一个子元素,同时我们可以将样式公用,所有需要清除浮动的父元素加上一个相同的class名clear就可以解决:

    .clear{zoom: 1;}/*IE6,7不支持::after伪类,所以没法用下面的代码,这个神奇的zoom可以直接解决IE6,7的清除浮动问题*/
    .clear::after{ content: ""; display: block; clear:both; }

    2、 补充

  • 注意:元素浮动之后,不再支持margin:auto,只支持margin确切的值。

  • 推荐使用浮动来做横向布局而不是inline-block

    line-block布局的基线对齐处理较为麻烦,浮动不用担心这个问题;

    line-block布局空格会被解析显示在页面中,浮动不用担心这个问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值