【CSS】浮动笔记及案例

本文详细介绍了CSS浮动的概念、规则,包括元素的浮动方式、浮动对布局的影响以及解决高度塌陷问题的clear属性和常见清除浮动的方法。通过实例演示了如何应用这些知识进行京东浮动布局和多列布局,并提供了清除浮动的代码示例。
摘要由CSDN通过智能技术生成

CSS浮动

1. 认识浮动

  • float属性可以指定一个元素沿着左侧或者是右侧放置,允许文本和内联元素环绕它
    • float属性最初只使用文字环绕图片
    • 但却是早起CSS最好用的左右布局方案
  • 绝对定位、浮动都会让元素脱标,以达到灵活布局的目的
  • 可以通过float属性让元素脱标,产生浮动
    • none:默认,不浮动
    • left:左浮动
    • right:右浮动

2. 浮动的规则

  • 元素一旦浮动后,脱离标准流
    • 朝着向左或者向右方向移动,直到自己的边界紧贴着包含块(一般是父元素)或者其他浮动元素的边界为止
    • 定位元素会层叠在浮动元素上面
    • 标准流元素 < 浮动元素 < 定位元素(z-index >= 0)
  • 浮动元素的边界不能超过包含快的左右边界(包含块包含其中的margin、padding)

在这里插入图片描述

  • 浮动元素互相不能层叠
    • 如果一个元素浮动,会紧贴另外一个方向相同的浮动元素
    • 如果水平方向的空间不够显示浮动元素,浮动元素向下移动,直到有足够的空间为止
  • 浮动元素不能与行内级元素内容层叠,行内级内容会被浮动元素推出
    • 文字环绕图片的效果
  • 行内级元素、inline-block元素浮动后,其顶部将与所在行的顶部对齐

浮动练习:京东浮动布局,利用宽度的auto来解决兼容性问题

京东浮动布局,利用宽度的auto来解决兼容性问题

在这里插入图片描述

浮动练习2:京东多列布局

京东多列布局

在这里插入图片描述

浮动练习3:加边框的布局:

考拉布局

在这里插入图片描述

3. 浮动的问题

当一个元素中的某个子元素为浮动元素时,会脱标,不再给父元素汇报宽高,从而导致父元素的高度塌陷,为了解决这种问题,CSS推出了清除浮动,也就是clear属性

  • 父元素在计算总高度时,就不会计算浮动子元素的高度,导致了高度塌陷问题

  • 清除浮动的目的是

    • 让父元素计算总高度的时候,把浮动元素的高度算进去

3.1 清除浮动 clear

  • clear属性的意义
    • clear属性可以指定一个元素是否必须移动到在它之前浮动元素的下面(形成标准流,占用空间)
  • clear的常用取值
    • left: 要求元素的顶部低于之前生成的所有左浮动元素的底部
    • right:要求元素的顶部低于之前生成的所有右浮动元素的底部
    • both:要求元素的顶部低于之前生成所有浮动元素的底部
    • none:默认值,无特殊要求

3.2 清除浮动的方法

  • 方法一:给父元素设置固定的高度
    • 这样父元素就会有高度,不会因为子元素没有高度而撑不起盒子
  • 方法二:在父元素最后增加一个空的块级子元素,并且让它设置clear:both
    • 这样是利用clear属性将增加的子元素移动到所有浮动元素的后面,占据标准流,从而撑大父元素,给父元素宽高
  • 方法三:给父元素添加伪元素
    • 方法二的升级版,不再添加很多空白的标签,符合样式分离的原则

举例:

.box {
  width: 500px;
  background-color: pink;
  margin: 0 auto;
}
.box .left {
  float: left;
  width: 200px;
  height: 200px;
  background-color: aqua;
}
.box .right {
  float: right;
  width: 200px;
  height: 200px;
  background-color: red;
}
.box2 {
  width: 800px;
  height: 100px;
  background-color: pink;
  margin: 0 auto;
}
<div class="box">
  <div class="left">我是左浮动</div>

  <div class="right">我是右浮动</div>
</div>
<div class="box2"></div>

效果

在这里插入图片描述

很明显,在上面的效果图中,box2子元素直接布局到了浮动元素的下面,占据了本该属于box的位置,这就是高度塌陷问题

解决:

.clear_fix::after {
  content: '';
  /* block才能独占一行,伪元素创建时为行内元素 */
  display: block;
  clear: both;

  /* 浏览器版本兼容性 */
  visibility: hidden;
  height: 0;
}

.clear_fix {
  /* 兼容版本IE6/7 */
  *zoom: 1;
}
<div class="box clear_fix">
  <div class="left">我是左浮动</div>

  <div class="right">我是右浮动</div>
</div>

<div class="box2"></div>

在这里插入图片描述

将box添加浮动清除类,则可以将块级伪元素添加到所有子元素的底部,从而占据位置,解决box高度塌陷问题,本例中将清除浮动写成一个单独的class,可以在需要清除浮动的元素上引用它,方便开发

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值