float

视频地址

float 设计的目的

实现文字环绕图片显示效果

清除 float 带来的影响

  1. float 元素底部插入 clear 的 block 水平元素。
    特点:与外界可以联系,比如 margin 重叠。
    实现方式:
/* HTML block 水平元素走起 */
<div ...></div>
/* CSS after 伪元素底部生成 */
.clearfix:after {
  content: '';
  display: block;
  height: 0;
  overflow: hidden;
  clear: both;
}
/* 或者 */
.clearfix:after {
  content: '';
  display: table;
  clear: both;
}
  1. 父元素 BFC 化
    特点:不与外界联系,比如不会发生 margin 重叠
/* BFC 通常声明 */
float: left/right
position: absolute/fixed
overflow: hidden/scroll
display: inline-block/table-cell

对 float 特性滥用(使用 float 来砌砖头)

原因:

  1. float 使元素 block 块状化(砖头化)
  2. 破坏性造成的紧密排列特性(去空格化)—— HTML 中标签间空隙会转化为一个空格间隙、但是 float 后空格间隙会消失;如果是 实现的空格在 float 后不会消失,只是图文环绕后移动到后面了。

float 与流体布局

  1. 图文环绕
/* float 元素 */
/* 后面是 inline 跟随元素 */
  1. 左右各有元素,中间元素在剩余空间居中对齐
<div>
    <p style="float: left">左边很长很长很长很长</p>
    <p style="float: right">Just Right</p>
    <div style="text-align: center;">我在剩余空间居中对齐</div>
    <div style="clear:both;"></div>
</div>
效果图.png
  1. 左侧固定,右侧自适应的流体布局
<div>
/* float: left; width: 75px */
/* margin-left/padding-left: 75px */
<div>
  1. 右侧固定,左侧自适应
    可以使用上面左侧固定的方式,但是代码会将 float:right 右侧的元素写在 DOM 流的前面,有点不符合习惯,所以换一种方式。
<div class="container" style="float: left; width: 100%">
    /* 内容区域:margin-right/padding-right: 75px */
    /* 右侧固定内容:float: left; margin-left: -75px; width: 75px */
</div>
  1. 左右两边都自适应
    右边可以根据左边的宽度自动填满,再也不用把左边的宽度写死了。
/* 左边元素:float: left */
/* 右边自适应内容:display: table-cell */
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 浮动定位 BFC 边距合并 浮动元素 div的顺序是HTML代码中div的顺序决定的。 浮动可以理解为让某个div...
    nianxiaoge阅读 743评论 0 0
  • 数年前,当开发者首次开始不使用table 来布局网页时,CSS中的一个property突然间显得格外重要,该属性就...
    花括弧阅读 621评论 0 2
  • CSS布局模型 布局:将元素以正确的大小摆放在正确的位置上 CSS包含3种基本的布局模型流动模型(Flow)浮动模...
    _空空阅读 1,108评论 0 4
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,861评论 1 92
  • 半咖阅读 170评论 0 0