CSS高级实用技巧-浮动

CSS高级实用技巧-浮动

一、了解浮动

什么是浮动?

  • 元素的浮动是指设置了浮动属性的元素会脱离普通标准流的控制,移动到其父元素中对应位置的过程
  • 在css中通过float属性来定义浮动
  • 浮动的目的:是让多个块级元素能够在同一行上显示

浮动的特性

  • 总则:浮动会脱离标准流,不会占位置,但是会影响标准流
  • 特性1:浮动元素总是会找离它最近的父级元素对齐,但是不会超出父级元素的内边距
    在这里插入图片描述
  • 特性2:浮动元素的排列位置,跟上一个块级元素有关;如果上一个元素是标准流,则浮动元素顶部会和上一个元素底部对齐
    在这里插入图片描述
    如果上一个元素有浮动,则浮动元素的顶部会和上一个元素的顶部对齐
    在这里插入图片描述
  • 特性3:一个夫盒子里面的子盒子需要一行对齐,只要其中一个元素优浮动,其他的子级元素也要浮动,这样才能在同一行显示
二、清除浮动和浮动后的影响

为什么要清楚浮动?

  • 清除浮动是为了解决父级元素因为子级元素浮动而引起内部高度为 0 的问题

  • 在标准流中,如果父盒子没有高度,只有子盒子有高度,会撑开父盒子;父盒子下面的其他盒子可以正常排列
    在这里插入图片描述

  • 子盒子浮动,脱离标准流;父盒子没有高度,就不会撑开盒子,下面的其他盒子的布局就会整体上移,从而影响整个页面的布局
    在这里插入图片描述

浮动所产生的影响代码参考:

css代码:
<style>
        * {
            margin: 0;
            padding: 0;
        }
        .box1 {
            width: 1200px;
            background-color: yellowgreen;
            text-align: ;
        }
        .son1 {
            width: 100px;
            height: 100px;
            background-color: red;
            /*子盒子浮动,父盒子高度将为0*/
            float: left;
        }
        .son2 {
            width: 100px;
            height: 100px;
            background-color: yellow;
            /*子盒子浮动,父盒子高度将为0*/
            float: left;
        }
        .box2 {
            width: 1200px;
            height: 200px;
            background-color: pink;
        }
    </style>

html结构:
<body>
    <div class="box1">
        <div class="son1">son1</div>
        <div class="son2">son2</div>
    </div>
    <div class="box2">box2</div>
</body>

如何清除浮动-( 利用双伪元素清除浮动)

  • 优点:代码简洁
  • 缺点: 由于IE6-7不支持:after,使用 zoom:1触发 hasLayout
html结构:
  <div class="box1 clearfix">
        <div class="son1">son1</div>
        <div class="son2">son2</div>
    </div>
    <div class="box2">box2</div>
    
css代码:
.clearfix:before, 
.clearfix:after {
            content:".";
            display:table;
        }
        .clearfix:after {
            clear:both;
        }
        .clearfix {
            *zoom:1;
        }

如何清除浮动 -(利用after伪元素清除浮动)

  • 优点:不需要添加新的标签,符合闭合浮动的思想;结构语义化明确
  • 缺点:由于IE6-7不支持after:所以可以使用zoom:1;来触发 hasLayout
  • 注意:content:" " 里面最好是跟一个小点,或者是其他,尽量不要为空,否则在firefox 7.0前的版本会有生成空格。
.clearfix:after {
            content: ".";
            display: block;
            height: 0;
            clear: both;
            visibility: hidden;
        }
        .clearfix {*zoom: 1;}   /* IE6、7 专有 */
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值