css 浮动原理


1、float  浮动的定义:

使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停下来。

文档流是文档中可显示对象在排列时所占用的位置。

float 浮动:

(1)块在一排显示

(2)内联支持宽高

(3)默认内容撑开宽度

(4)脱离文档流

()提升层级半层


2、利用浮动实现一个左中右的简单布局:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
  <style>
    body div{margin: 0;padding: 0}
    .box{width: 900px; margin: 0 auto;}
    .left{width: 300px; float: left}
    .left div{height: 448px; background: #9F0; border: 1px solid #ffffff}
    .center{width: 300px; float: left}
    .center div{height: 298px; background: #CF0; border: 1px solid #ffffff}
    .right{width: 300px;  float: left;}
    .right div{height: 298px; background: #FF0; border: 1px solid #ffffff}
  </style>
</head>
<body>
  <div class="box">
    <div class="left">
      <div></div>
      <div></div>
    </div>
    <div class="center">
      <div></div>
      <div></div>
      <div></div>
    </div>
    <div class="right">
      <div></div>
      <div></div>
      <div></div>
    </div>
  </div>
</body>
</html>

浮动有两个参考点:

父元素的位置,相邻浮动元素(脱离文档流的元素)的位置

3、clear  浮动的清除

clear:left / right / both / inherit 

元素的某个方向上不能有浮动元素。

元素浮动后脱离了文档流,所以其父级元素的宽高不会被自己元素,也就是时浮动元素撑开,如下图:

所以在设置清除浮动时,也要考虑到该细节:

(1)给父级元素加高度,但是扩展性不好。

(2)让父级元素也浮动,但是margin左右自动的功能会失效

(3)设置父级 display: inline-block, margin 左右自动的功能会失效

(4)空标签清除浮动,IE div的最小高度19px,设置 font-size : 0; 后仍然会有2px的偏差

(5)br 清除浮动

(6)afler伪类,清除浮动 ,主流方法

 .clear:after{content: ''; display: block; clear: both}
    .clear{zoom: 1}

    /*
      after伪类:元素内部末尾添加内容,但是IE6,7 下不兼容
      zoom 缩放:
        a、触发IE而下 haslayout, 使元素根据zih自身内容计算宽高
        b、FF 不支持

      hasLayout  是IE特有的一个属性。很多IE下的css bug 都与其相关,在IE中,
      一个元素要么子集对自身的内容进行计算大小和组织,要么依赖于父元素来计算尺寸和
      组织内容。当一个元素的hasLayout 属性值为true时,他负责对自己和可能的子孙元素进行尺寸计算
      和定位。

      触发 hasLayout 的 css属性
      display:inline-block
      width/height : 除了auto 以外的值
      position: absolute
      float: left/ right
      zoom: 有值
    */
(7)通过overflow: hidden 来设置


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值