【CSS】CSS 总结 ⑥ ( 盒子模型摆放机制 - 普通流 / 浮动 / 定位 | 浮动 - 脱离标准流 | 清除浮动语法 | 额外标签法 | after 伪元素清除浮动 ) ★

本文详细介绍了CSS中的浮动机制,包括盒子模型的位置摆放、浮动语法、脱离标准流、浮动元素与父容器的关系,以及清除浮动的各种方法,如额外标签法、父级元素设置overflow、after伪元素和双伪元素清除法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >





一、CSS 浮动



CSS 浮动 相关博客 :


1、盒子模型位置摆放三大机制 - 普通流 / 浮动 / 定位


盒子模型位置摆放三大机制 :

  • 普通流 : 默认的摆放样式 ;
    • 块级元素 摆放 : 每个 块级元素 独占一行 , 排列顺序 从上到下 ; 如 : div , p , h1 等 ;
    • 行内元素 摆放 : 多个 行内元素 在同一行显示 , 排列顺序 从左到右 , 显示到边缘 自动换行 ; 如 : span , strong , a 等 ;
  • 浮动 : 盒子模型 在 普通流 基础上 覆盖显示 , 多个 块级元素 可以在同一行 相互覆盖显示 ;
  • 定位 : 盒子模型 在 浏览器 指定位置 显示 ;

普通流 相当于 Android 中的 线性布局 ;
浮动 相当于 Android 中的 帧布局 或 相对布局 或 约束布局 ;
定位 相当于 Android 中的 绝对布局 ;


2、浮动语法说明


为 元素 设置了 浮动 CSS 属性 , 可以实现 :

  • 元素标签 不再受 标准流 控制 ; ( 块级元素 , 行内元素 , 行内块元素 的布局方式 )
  • 元素标签 可以 放置在指定的位置 , 靠左 或 靠右 ;

CSS 浮动语法 :

选择器 {
	float: 浮动属性值;
}

浮动属性值 取值 :

  • none : 默认设置 , 元素没有浮动效果 ;
  • left : 元素 左浮动 ;
  • right : 元素 右浮动 ;

3、浮动 - 脱离标准流


默认的 标准流 布局排列如下 ,

  • 块级元素 各占一行 , 从上到下排列 ;
  • 行内元素 多个公占一行 , 从有到右排列 ;

浮动特性 ( 脱离标准流布局 ) : 浮动的元素 会 脱离 标准流布局 , 剩余的标准流布局正常显示 , 脱离的浮动元素在标准流上方显示 ;

浮动特性 ( 取消占用位置 ) : 脱离标准流 的 浮动元素 原来在标准流布局中的位置 , 也被取消 , 被后面的标准流元素占据 ;


网页中的 Display 显示模式有 3 种 ;

  • 块级元素
  • 行内元素
  • 行内块元素

元素 的 浮动特性 会改变 该元素的 Display 显示模式 , 原来的 元素 不管是 块级元素 还是 行内元素 , 设置 浮动 样式后 , 其显示模式 类似于 行内块元素 ;


4、浮动元素与父容器盒子关系


父容器 盒子模型 中 , 将 子元素 设置为 浮动元素 , 会出现如下情况 :

  • 浮动元素位置 : 浮动元素 会自动 浮动到 父容器盒子模型 的左上角 与 右上角 ,
  • 浮动元素 与 父容器盒子模型边框 : 浮动元素 与 父容器 边框不重叠 , 如果没有内边距 , 浮动元素 紧贴边框 内测 ;
  • 浮动元素 与 父容器盒子模型 内边距 : 浮动元素 紧贴 父容器内边距 ;

在这里插入图片描述





二、CSS 清除浮动



CSS 清除浮动 相关博客 :


1、清除浮动 简介


在开发页面时 , 遇到下面的情况 ,

父容器 没有设置 内容高度 样式 , 容器中的 子元素 设置了 浮动样式 , 脱离了标准流 , 高度会默认设置为 0 像素 , 这样就会导致各种显示混乱情况 ;

为了应对上述情况 , 可以 使用 " 清除浮动 " 操作 ;


清除浮动 主要作用 : 解决 父容器盒子模型 因为 子元素 被设置为 浮动元素 导致 高度默认为 0 像素 的问题 ;

清除浮动 效果 : 父容器 检测高度时 , 会考虑 浮动子元素 的高度 , 将浮动元素的高度 计算在父容器的总高度中 ;


2、清除浮动 语法 - 额外标签法


清除浮动语法 :

CSS 选择器 {
	clear: 属性值;
}

属性值取值 :

  • left : 清除左侧浮动 ;
  • right : 清除右侧浮动 ;
  • both : 同时清除左右两侧浮动 ;

一般在使用的时候 , 只使用 clear: both; 一种样式 ;


推荐使用 " 额外标签法 " , 在最后一个浮动元素的末尾 , 添加一个额外标签 , 如下 :

<div class="clear"></div>

使用 其它标签 也可以 , 如 :

<br class="clear"/>
  • 优点 : 容易理解 , 使用方便 ;
  • 缺点 : 添加的 额外标签 无意义 , 使得 HTML 结构混乱 ;

3、清除浮动 语法 - 父级元素设置 overflow 样式


父级元素设置 overflow 样式 语法 :

		选择器 {
			/* 清除浮动 - 父级元素设置 overflow 样式 */
			overflow: hidden;
		}

overflow 样式可设置的属性值 :

  • hidden
  • auto
  • scroll

父级元素设置 overflow 样式 清除浮动 的优缺点 :

  • 优点 : 代码简单
  • 缺点 : 无法显示 溢出 的元素 , 如果 子元素 很多 , 不能自动换行 , 部分子元素会被隐藏 ;

4、额外标签法 和 overflow 样式法弊端


额外标签法 清除浮动 , 会 新增很多无意义标签 , 使得 HTML 标签结构混乱 ;

父级元素设置 overflow 属性 , 会 将溢出元素隐藏 , 或 生成滚动条 , 导致显示结果不理想 ;

这里提出第三种 清除浮动的方法 , 使用 after 伪元素清除浮动 ;


5、清除浮动 语法 - after 伪元素清除浮动


在 CSS 样式最上面 , 声明 清除浮动元素样式 ,

将选择器设置为 .clearfix:after , 其中的 :after 是伪元素 ,

		/* 清除浮动元素样式 */
		.clearfix:after {
			content: "";
			display: block;
			height: 0;
			visibility: hidden;
			clear: both;
		}

这种方式只有在 高版本浏览器才支持 , 低版本浏览器不支持该设置 , 为了兼容低版本浏览器 , 需要使用下面的样式 :

		/* 低版本浏览器 IE6 / IE7 清除浮动样式 */
		.clearfix {
			*zoom: 1;  
		}

如果需要 清除某个父容器中子元素的浮动样式 , 在该父容器的 class 类型上 , 添加 clearfix 类型即可 , 如 :

	<div class="father1 clearfix">
		<div class="son1"></div>
		<div class="son2"></div>
	</div>

使用上述方法 , 不会改变标签的结构 , 也不会出现隐藏移除元素的问题 ;


6、清除浮动 语法 - 使用双伪元素清除浮动


.clearfix:before.clearfix:after 并集选择器 , 设置如下样式 :

		/* 清除浮动 - 使用双伪元素清除浮动 */
		.clearfix:before,
		.clearfix:after {
			content: "";
			display: table;
		}

.clearfix:after 伪类选择器设置如下样式 :

.clearfix:after 伪元素选择器 的含义是 在 该父容器盒子 的内部 , 插入新的子元素 , 该子元素设置选择器中的样式 ;

		.clearfix:after {
			clear: both;
		}


低版本浏览器 IE6 / IE7 清除浮动样式 :

		.clearfix {
			*zoom: 1;
		}

声明完上述元素后 , 在需要清除浮动元素的 父容器 中 , 声明 clearfix 类 ;

	<div class="father1 clearfix">
		<div class="son1"></div>
		<div class="son2"></div>
	</div>
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值