浮动的理解及实际应用

1.CSS布局的三种机制:

网页布局的核心,是用CSS来摆放盒子。

CSS有三种传统布局方式:普通流、浮动和定位。

普通流:也叫标准流或文档流。普通流的标签按照规定的默认方式排列,块级元素独占一行从上往下排;行内元素从左到右排,排到父元素的边缘时自动换行。

浮动:可以改变元素的默认排列方式,让盒子从普通流中浮起来。主要是让多个块级元素横向在一行上排列。

定位:将盒子定在浏览器窗口的某个位置。

2.为什么需要浮动?

在实际布局中,如果遇到以下问题:

如何让块级盒子在一行上水平排列?

如何让块级盒子实现左右对齐?

 显然,标准流的布局方式无法实现。标准流不能满足我们的需求,所以需要用浮动来解决这种网页布局的问题。

3.什么是浮动?

浮动是指给元素设置了浮动属性后会脱离标准流的控制,让元素移动到指定的位置。

4.浮动的作用:

让块级盒子在一行上水平排列显示。

可以实现盒子的左右对齐。

浮动还可以控制图片,实现文字环绕图片的效果。

5.语法:  

选择器 {float: 属性值;}

float的属性值有三个:默认none,元素不浮动;left设置为左浮动;right设置为右浮动。

6.特点:

①设置了浮动的元素会浮在普通流的上面,不占据位置,脱离标准流,简称“脱标”。

<div class="one">1</div>
<div class="two">2</div>
    .one {
      width: 100px;
      height: 100px;
      background-color: pink;
      float: left;
    }

    .two {
      width: 200px;
      height: 200px;
      background-color: skyblue;
    }

 盒子1设置了浮动,就会浮在普通流的盒子2上面,浮动的盒子1不再占有位置。

②浮动的元素互相紧贴在一起,当父盒子装不下浮动的子盒子时,多出来的子盒子就会另起一行排列。

  <div class="father">
    <div class="one">1</div>
    <div class="two">2</div>
    <div class="three">3</div>
    <div class="four">4</div>
  </div>
<style>
    .father {
      width: 450px;
      height: 450px;
      background-color: blanchedalmond;
    }
    .one,
    .two,
    .three,
    .four {
      width: 140px;
      height: 140px;
      float: left;
    }
    .one {
      background-color: pink;
    }
    .two {
      background-color: skyblue;
    }
    .three {
      background-color: greenyellow;
    }
    .four {
      background-color: orange;
    }
  </style>

盒子1,2,3,4都有浮动,他们会紧挨在一起水平排列。父盒子的宽度不够放第4个盒子了,盒子4就另起一行去排列。

 如果给子盒子设置了display:inline-block,也可以让子盒子在一行上水平排列,但是这样做,盒子之间会存在间隙。不会像浮动一样盒子之间紧挨在一起。

③浮动只会影响当前或后面标准流的元素,并不会影响到浮动之前标准流的元素。

7.清除浮动:

7.1为什么要清除浮动?

有一种情况就是父盒子里面子元素很多,父盒子的高度不好给,想让子元素的内容把父盒子的高度撑起来。但是子元素设置了浮动,就会脱离标准流,并不会撑起父元素的高度,是父元素的高度为0。

7.2清除浮动的本质:

就是解决父元素因为子元素浮动而引起的父元素高度为0的问题。清楚浮动后,父元素会自动根据浮动的子元素检测高度。父盒子有了高度,就不会影响到后面标准流的元素。

7.3清除浮动的方式:

①额外标签法(隔墙法):在最后一个浮动的元素后面加上一个标签(W3C推荐做法)

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

缺点:添加许多无意义的标签,结构性较差

②给父级加overflow:将属性设置为:hidden或auto或scroll

    .father {
      width: 450px;
      height: 450px;
      background-color: blanchedalmond;
      overflow: hidden;
    }

缺点:会让内容隐藏掉,无法显示溢出的部分

③给父级加:after伪元素:

额外标签发的升级,相当于盒子后面加了一个新盒子

    .clearfix:after {
      content: "";
      display: block;
      height: 0;
      clear: both;
      visibility: hidden;
    }

    .clearfix {
      /* IE6、7 专有 */
      *zoom: 1;
    }

优点:没有增加新标签,结构更简单

缺点:需要照顾低版本浏览器

④给父级加双伪元素:

    .clearfix:before,
    .clearfix:after {
      content: "";
      display: table;
    }

    .clearfix:after {
      clear: both;
    }

    .clearfix {
      *zoom: 1;
    }

优点:代码更简洁

缺点:需要照顾低版本浏览器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值