一、css清除浮动方法学习笔记总结(超详细,简单易懂)

**

css清除浮动方法学习笔记总结(超详细,简单易懂)

**
在这里插入图片描述
问题:
上图中,由于container(父级元素)未设置高度,其内部子元素设置了float浮动,导致与container同级(也就是container下面的元素)位置发生错乱,出现在了container父元素的设置了浮动的子元素背面
原因:
父级元素的高度为0,设置了浮动的子元素,不会像未设置浮动的子元素那样会自动撑开父元素


1.为什么需要浮动?
布局的需要:让多个盒子(div)水平排列成一行;实现盒子的左右对齐

虽然我们行内块元素(inline-block)可以帮助我们实现多个元素一行显示,但是他却有自己的缺陷:
1). 它可以实现多个元素一行显示,但是中间会有空白缝隙
2). 它不能实现盒子左右对齐

2.什么是浮动(float)?
漂浮在普通流的上面。 脱离标准流。 俗称 “脱标”

1)概念:元素的浮动是指设置了浮动属性的元素

  1. 脱离标准普通流的控制
  2. 移动到指定位置。

2)作用:

  1. 让多个盒子(div)水平排列成一行,使得浮动成为布局的重要手段。
  2. 可以实现盒子的左右对齐
  3. 浮动最早是用来控制图片,实现文字环绕图片的效果

3)语法:

在 CSS 中,通过 float 中文,属性定义浮动,语法如下:

选择器 { float: 属性值; }
属性值描述
none元素不浮动(默认值
left元素向浮动
right元素向浮动

一、父级元素设置了高度的情况下:

在给父级元素设置了高度,子元素设置了float浮动的情况下,不需要清除浮动。因为,父级元素有高度,所有浮动的子元素只是在父级元素内部进行了浮动,这并不会对父级后面的其他元素在文档流中的位置产生影响。


二、父级元素没有设置高度的情况下:

有些实际情况中,可能不能够给父级元素设置高度,但是子盒子浮动就不占有位置,最后父级盒子高度为0,就影响了下面的标准流盒子。但我们实际想要达到一种子元素有多高,父级元素就自动有多高,也就是父元素被子元素所撑开的效果


在这种不设置高度的情况下,就必须清除浮动!

下面介绍四种不设置父级高度情况下的清除浮动的方法
1)在CSS中,clear属性用于清除浮动

  • 语法:
选择器{clear:属性值;}   clear 清除浮动
属性值描述
left不允许左侧有浮动元素(清除左侧浮动的影响)
right不允许右侧有浮动元素(清除右侧浮动的影响)
both同时清除左右两侧浮动的影响

但是我们实际工作中, 几乎只用 clear: both;

1).额外标签法(隔墙法)

是W3C推荐的做法是通过在浮动元素末尾添加一个空的标签
例如

 <div style=”clear:both”></div>

,或则其他标签br等亦可。
注意:这个浮动元素末尾新增的必须是块元素,不能是行内元素,否则清除浮动失效!

  • 优点: 通俗易懂,书写方便
  • 缺点: 添加许多无意义的标签,结构化较差。
    在这里插入图片描述
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>清除浮动的方法总结</title><style type="text/css">.container {width: 400px;/* 父元素container不设置高度的情况下,子元素设置float浮动,会出现父元素container的高度为0的情况 */background-color: #00BFFF;margin: 0 auto;}.box1 {float: left;width: 100px;height: 100px;background-color: #98FB98;}.box2 {float: left;width: 200px;height: 200px;background-color: bisque;}.footer {height: 300px;background-color: lightcoral;text-align: end;}.clear {clear: both; /* 清除浮动 */}</style></head><body><div class="container"><div class="box1">浮动的box1</div><div class="box2">浮动的box2</div><div class="clear"></div></div><div class="footer">container下面的footer</div></body>
</html>

2).父级添加overflow属性方法

可以给父级添加

 overflow为 hidden| auto| scroll  

都可以实现。

  • 优点: 代码简洁
  • 缺点: 内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素。
    在这里插入图片描述
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>清除浮动的方法总结</title><style type="text/css">.container {width: 400px;/* 父元素container不设置高度的情况下,子元素设置float浮动,会出现父元素container的高度为0的情况 */background-color: #00BFFF;margin: 0 auto;overflow: hidden;/* 给设置了浮动的子元素的父元素添加overflow:hidden 来清除浮动 */}.box1 {float: left;width: 100px;height: 100px;background-color: #98FB98;}.box2 {float: left;width: 200px;height: 200px;background-color: bisque;}.footer {height: 300px;background-color: lightcoral;text-align: end;}/* 	.clear {clear: both;} */</style></head><body><div class="container"><div class="box1">浮动的box1</div><div class="box2">浮动的box2</div><!-- 	<div class="clear"></div> --></div><div class="footer">container下面的footer</div></body>
</html>

3).使用after伪元素清除浮动

在这里插入图片描述

注意:这也是设置在父元素上面

:after 方式为空元素额外标签法的升级版,好处是不用单独加标签了

使用方法:

 .clearfix:after {  content: ""; display: block; height: 0; clear: both; visibility: hidden;  }   .clearfix {*zoom: 1;	}   /* IE6、7 专有 */
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>清除浮动的方法总结</title><style type="text/css">.container {width: 400px;/* 父元素container不设置高度的情况下,子元素设置float浮动,会出现父元素container的高度为0的情况 */background-color: #00BFFF;margin: 0 auto;/* overflow: hidden; *//* 给设置了浮动的子元素的父元素添加overflow:hidden 来清除浮动*/}.box1 {float: left;width: 100px;height: 100px;background-color: #98FB98;}.box2 {float: left;width: 200px;height: 200px;background-color: bisque;}.footer {height: 300px;background-color: lightcoral;text-align: end;}.clearfix:after {content: "";display: block;height: 0;clear: both;visibility: hidden;}.clearfix {*zoom: 1;}/* IE6、7 专有 *//* 	.clear {clear: both;} */</style></head><body><div class="container clearfix"><div class="box1">浮动的box1</div><div class="box2">浮动的box2</div><!-- 	<div class="clear"></div> --></div><div class="footer">container下面的footer</div></body>
</html>
  • 优点: 符合闭合浮动思想 结构语义化正确
  • 缺点: 由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。
  • 代表网站: 百度、淘宝网、网易等

4).使用双伪元素清除浮动

注意:这也是设置在父元素上面
在这里插入图片描述

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>清除浮动的方法总结</title><style type="text/css">.container {width: 400px;/* 父元素container不设置高度的情况下,子元素设置float浮动,会出现父元素container的高度为0的情况 */background-color: #00BFFF;margin: 0 auto;/* overflow: hidden; *//* 给设置了浮动的子元素的父元素添加overflow:hidden 来清除浮动*/}.box1 {float: left;width: 100px;height: 100px;background-color: #98FB98;}.box2 {float: left;width: 200px;height: 200px;background-color: bisque;}.footer {height: 300px;background-color: lightcoral;text-align: end;}/* 	.clearfix:after {content: "";display: block;height: 0;clear: both;visibility: hidden;} */.clearfix:before,.clearfix:after {content: "";display: table;}.clearfix:after {clear: both;}.clearfix {*zoom: 1;}/* IE6、7 专有 *//* 	.clear {clear: both;} */</style></head><body><div class="container clearfix"><div class="box1">浮动的box1</div><div class="box2">浮动的box2</div><!-- 	<div class="clear"></div> --></div><div class="footer">container下面的footer</div></body>
</html>

使用方法:

.clearfix:before,.clearfix:after { content:"";display:table; 
}
.clearfix:after {clear:both;
}
.clearfix {*zoom:1;
}
  • 优点: 代码更简洁
  • 缺点: 由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。
  • 代表网站: 小米、腾讯等

清除浮动总结

一、什么时候用清除浮动呢?

  1. 父级没高度
  2. 子盒子浮动了
  3. 影响下面布局了,我们就应该清除浮动了。
清除浮动的方式优点缺点
额外标签法(隔墙法)通俗易懂,书写方便添加许多无意义的标签,结构化较差。
父级overflow:hidden;书写简单溢出隐藏
父级after伪元素结构语义化正确由于IE6-7不支持:after,兼容性问题
父级双伪元素结构语义化正确由于IE6-7不支持:after,兼容性问题

二、清除浮动的本质:
​ 清除浮动主要为了解决父级元素因为子级浮动引起内部高度为0 的问题。清除浮动之后, 父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了。
由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响。准确地说,并不是清除浮动,而是清除浮动后造成的影响

三、清除浮动的策略:
闭合浮动.只让浮动在父盒子内部影响,不影响父盒子外面的其他盒子。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 2115. 从给定原材料中找到所有可以做出的菜(拓扑排序)

文章目录1. 题目2. 解题1. 题目 你有 n 道不同菜的信息。给你一个字符串数组 recipes 和一个二维字符串数组 ingredients 。 第 i 道菜的名字为 recipes[i] &#xff0c;如果你有它 所有 的原材料 ingredients[i] &#xff0c;那么你可以 做出 这道菜。一道菜的原材料可能是 另…

C语言makefile文件详解,makefile讲解

仅供自己学习使用一、Makefile介绍Makefile 或 makefile: 告诉make维护一个大型程序&#xff0c; 该做什么。Makefile说明了组成程序的各模块间的相互 关系及更新模块时必须进行的动作&#xff0c; make按照这些说明自动地维护这些模块。执行make命令时&#xff0c;需要一个 Ma…

二、MySQL连接查询学习笔记(多表连接查询:内连接,外连接,交叉连接详解)

MySQL连接查询&#xff08;多表连接查询&#xff1a;内连接&#xff0c;外连接&#xff0c;交叉连接详解&#xff09; 6&#xff1a;多表连接查询 笛卡尔乘积&#xff1a;如果连接条件省略或无效则会出现 解决办法&#xff1a;添加上连接条件连接查询的分类&#xff1a; 1.按…

二维数组和指针数组

#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int arr1[3]; int arr2[3]; int arr3[3]; int * ptr; // ptr1是一个指向 int [3] 的指针&#xff0c;即ptr的类型和&arr1的类型是一样的&#x…

android 本机号码一键登录,什么是本机号码一键登录?APP本机号码一键登录如何实现?...

三大运营商推出一键登录的服务后&#xff0c;由于其便捷性和安全性都好于传统短信验证码&#xff0c;越来越多的APP注册登录环节都在使用本机号码一键登录验证方式。本文主要介绍了本机号码一键登录特点以及实现方法。一、什么是本机号码一键登录&#xff1f;平时我们填手机号接…

LeetCode 2116. 判断一个括号字符串是否有效(栈)

文章目录1. 题目2. 解题1. 题目 一个括号字符串是只由 ( 和 ) 组成的 非空 字符串。 如果一个字符串满足下面 任意 一个条件&#xff0c;那么它就是有效的&#xff1a; 字符串为 ().它可以表示为 AB&#xff08;A 与 B 连接&#xff09;&#xff0c;其中A 和 B 都是有效括号字…

NavigationController

前面的一篇文章《iOS开发16&#xff1a;使用Navigation Controller切换视图》中的小例子在运行时&#xff0c;屏幕上方出现的工具栏就是Navigation Bar&#xff0c;而所谓UINavigationItem就可以理解为Navigation Bar中的内容&#xff0c;通过编辑UINavigationItem&#xff0c;…

android studio windows,AndroidStudio的使用(Windows)

演示模式View---Enter presentation mode演示代码快捷提示commondshfita最近修改的文件ctrlshfite代码书签在一行代码处使用F11也可以在navigate--bootmarkPaste_Image.png回退到上一个浏览的地方ctrlaltleft/right快速进入方法内ctrlb查看方法的参数定义commondpPaste_Image.p…

一、MySQL查询学习笔记(基础查询、条件查询、排序查询、常见函数、分组查询 详解)

DQL语言的学习 一、基础查询 语法&#xff1a; **SELECT 要查询的东西 【FROM 表名】;**类似于Java中 :System.out.println(要打印的东西); 特点&#xff1a; ①通过select查询完的结果 &#xff0c;是一个虚拟的表格&#xff0c;不是真实存在 ② 要查询的东西 可以是常量值、…

LeetCode 2119. 反转两次的数字

文章目录1. 题目2. 解题1. 题目 反转 一个整数意味着倒置它的所有位。 例如&#xff0c;反转 2021 得到 1202 。反转 12300 得到 321 &#xff0c;不保留前导零 。 给你一个整数 num &#xff0c;反转 num 得到 reversed1 &#xff0c;接着反转 reversed1 得到 reversed2 。 …

JVM系列五:JVM监测工具[整理中]

转自本站&#xff1a;http://www.cnblogs.com/redcreen/archive/2011/05/09/2040977.html 前几篇篇文章介绍了介绍了JVM的参数设置并给出了一些生产环境的JVM参数配置参考方案。正如之前文章中提到的JVM参数的设置需要根据应用的特性来进行设置&#xff0c;每个参数的设置都需要…

红米k30 android版本,Redmi K30 Pro 推送 MIUI 12.2.1 稳定版:为安卓跨版本升级

今日&#xff0c;Redmi K30 Pro 推送了 MIUI 12.2.1 稳定版内测更新。新系统基于 Android 11 深度定制&#xff0c;更新了 2020 年 10 月谷歌安全补丁。需要注意的是&#xff0c;本次更新为安卓跨版本升级&#xff0c;为降低升级风险&#xff0c;建议提前备份个人数据。同时&am…

三、MySQL子查询学习笔记(标量子查询、列子查询、行子查询、表子查询 详解)

三、MySQL子查询学习笔记 7&#xff1a;子查询 含义&#xff1a; 一条查询语句中又嵌套了另一条完整的select语句&#xff0c;其中被嵌套的select语句&#xff0c;称为子查询或内查询&#xff1b;在外面的查询语句&#xff0c;称为主查询或外查询 分类&#xff1a; 一、按子查…

LeetCode 2120. 执行所有后缀指令(模拟)

文章目录1. 题目2. 解题1. 题目 现有一个 n x n 大小的网格&#xff0c;左上角单元格坐标 (0, 0) &#xff0c;右下角单元格坐标 (n - 1, n - 1) 。 给你整数 n 和一个整数数组 startPos &#xff0c;其中 startPos [startrow, startcol] 表示机器人最开始在坐标为 (startrow…

android代理生命周期,了解 Activity 生命周期

当用户浏览、退出和返回到您的应用时&#xff0c;您应用中的在生命周期回调方法中&#xff0c;您可以声明用户离开和再次进入 Activity 时 Activity 的行为方式。例如&#xff0c;如果您正构建流媒体视频播放器&#xff0c;当用户切换至另一应用时&#xff0c;您可能要暂停视频…

Module System of Swift (简析 Swift 的模块系统)

原文地址: http://andelf.github.io/blog/2014/06/19/modules-for-swift/ Swift 中模块是什么&#xff1f;当写下 Swift 中一句 import Cocoa 的时候到底整了个什么玩意&#xff1f;官方 ibook 很含糊只是提了半页不到。 本文解决如下问题 介绍 Swift 中两种可 import 的模块如…

四、MySQL分页查询 + 子查询复习 学习笔记 (复习连接查询相关内容 详解)

8&#xff1a;分页查询 应用场景&#xff1a;当要显示的数据&#xff0c;一页显示不全&#xff0c;需要分页提交sql请求 语法&#xff1a; SELECT 查询列表 FROM 表名 【JOIN type JOIN 表2 ON 连接条件 WHERE 筛选条件 GROUP BY 分组字段 HAVING 分组后的筛选 ORDER BY 排序的…

LeetCode 2121. 相同元素的间隔之和(前缀和)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始、由 n 个整数组成的数组 arr 。 arr 中两个元素的 间隔 定义为它们下标之间的 绝对差 。更正式地&#xff0c;arr[i] 和 arr[j] 之间的间隔是 |i - j| 。 返回一个长度为 n 的数组 intervals &#xff0c;其中 interva…

jquery中怎么删除ul中的整个li包括节点

1.$(ul li).remove(); 2.$(ul li).each(function(){ $(this).remove(); }); 3.$("ul").find("li").remove(); 4.$(ul).children().filter(li).remove();转载于:https://www.cnblogs.com/zhujiabin/p/5008006.html

在android添加数据采集,一种基于Android系统的地理信息数据采集方法与流程

本方法属于采集地理信息数据的发明&#xff0c;是一种基于android操作系统和gis地理信息系统进行户外地理信息数据采集的方法。背景技术&#xff1a;众所周知地理信息数据采集在很多行业中都有应用&#xff0c;比如说农业中的土地普查、城市管理中的地下管线普查、工业中的地质…