CSS浮动

1. 浮动

 float  通过浮动可以使一个元素向其父元素的左侧或右侧移动。
    
            可选值:
                  none (默认值)元素不浮动
                  left   元素向左浮动
                  right  元素向右移动


2. 浮动的特点

     1. 浮动元素会完全脱离文档流,不在占据文档流的位置。                 
     2. 元素脱离文档流后,元素类型就转化为行内块元素。
     3. 浮动元素只会在父元素中的左侧或右侧移动,默认不会从父元素中移除。
     4. 浮动元素之间默认是按照某个方向排列,不会覆盖。但是可以通过margin属性,产生覆盖功能。

3.高度坍塌

定义:父元素没有指定高度,父元素的高度由于子元素撑起来的,当子元素的由于布局需要浮动,浮动的子元素会脱离文档流,导致了子元素无法再撑起父元素,所以父元素的高度塌陷了。
 

写一个盒子,高度为0,为了更方便讲解,我们设置个padding(30px),设置个背景色(粉色),这样大家就能看到背景的存在。然后再在里面放3个浮动盒子(橙色)。

这时,我们发现了什么,内容(浮动盒子)并不能撑开容器,容器的高度还是0;

这就是高度坍塌!

那么,造成高度坍塌的根源是什么?

常规流盒子的自动高度(高度为auto时),在计算时,不会考虑浮动盒子

所以,我们的父元素没有高度,那么高度是auto,由内容来撑开,内容决定父元素的高度。但是,内容里面有浮动盒子,按照规则,它不会把浮动元素的高度计算进去,所以,上图,父元素的高度还是0!因为常规流计算高度,而浮动盒子是脱离常规流的。

以上所有高度坍塌呢,指的是自动高度,那么手动高度呢,就不算在内啦!

解决高度坍塌的办法:

1. 清除浮动:clear

给父元素内部添加一个空的div元素,设置clear:both。

clear 属性规定元素的哪一侧不允许其他浮动元素。

 例:在container父元素中,在item(浮动盒子)的最后,添加一个空盒子(clearfix),来清除浮动,以解决高度坍塌


    <div class="container">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <!-- 空盒子,用来解决高度坍塌 -->
        <div class="clearfix"></div>
    </div>

 


.container .clearfix {
    clear: both;
}

效果:

 

2.  利用伪类::after

利用::after来清除浮动,跟上面的添加一个空元素来解决浮动是差不多的意思,但是不会凭空添加无意义元素,而是通过伪类的方式。

例:在父元素(.container)中直接添加css样式(.clearfix)

   <div class="container clearfix">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
    </div>

 总结:

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值