css清浮动

我们在平常做项目的时候,float这个css属性经常会用到。元素浮动会让元素脱离文档流,从而不能撑开父级的内容。今天我将展示常见的清除浮动的方法。

什么是浮动

浮动元素脱离文档流并且向左或者向右移动,直到浮动元素的边缘碰到父级框或者另一个浮动元素的边框为止。

浮动的影响

浮动元素会使得父级元素高度塌陷

html:

<ul><li></li><li></li><li></li>
</ul>

css:

* { // 实际项目中不要用通配符*去设置样式margin: 0;padding: 0;
}
ul {border: 10px solid red;
}
li {width: 100px;height: 100px;margin-left: 10px;list-style: none;background: orange;float: left;
}

效果图:

由于浮动元素脱离文档流,不再占据原来的文档流空间,不能撑开父级的内容,所以父级的高度就不存在了。

下面我们将介绍清浮动的两个大类。

清浮动的方法

clear清浮动(clearfix方案)

在css中专门有一个来解决高度塌陷的属性,那就是我们常用的clear属性。clear的用法如下:

clear: none | right | left | both | inherit;

下面对clear值的解释来之w3c

  • none:默认值。允许浮动元素出现在两侧。
  • right:在右侧不允许浮动元素。
  • left:在左侧不允许浮动元素。
  • both:在左右两侧均不允许浮动元素。
  • inherit:规定应该从父元素继承 clear 属性的值。

我们清除浮动的时候常用

clear: both;
注意: clear属性只对块级元素起作用。

下面展示一个与clear值为both有关的例子。

html:

<ul><li></li><li></li><li></li><li></li><li></li>
</ul>

css:

* {margin: 0;padding: 0;
}
li {width: 100px;height: 100px;margin-left: 10px;list-style: none;background: orange;float: left;margin-bottom: 10px;
}
li:nth-child(3) {clear: both;
}

上面代码所渲染出来的效果是下面的图:

不知道当大家看到这个结果的时候,是不是开始怀疑w3c中的解释了。实际上clear值为both指的是让自身和前面的浮动元素不相邻。没错,是前面的,并不是前面后面都兼顾,所以上面的例子中展示的效果是两列而不是三列。

下面展示使用clear清浮动,接着最开始的代码,我们对其进行清浮动。(注意下面只展示在最开始代码中增加的代码)

css:

ul {zoom: 1;        // 为了兼容IE6/7
}
ul:after {          // 内联content: '';    // 内容为空字符是为了不影响本来的domdisplay: block; // 这里的值也可以是table | list-item,只要能够让伪类成为块级元素。clear: both;
}

效果图:

BFC清浮动

BFC的全称block formatting context,中文意思是“块级格式化上下文”。

BFC特性

“css世界的结界”(引自张鑫旭的《css世界》),在这个结界中内部子元素不管如何变化都不会对外部的元素有影响。BFC元素的margin不会发生折叠,因为margin折叠影响外部元素的布局。清除浮动,如果BFC不能够清除浮动,那么BFC元素高度就会塌陷,那么内部的元素就会影响到其他的元素的布局,这跟前面说的BFC元素内部的子元素不会影响外部元素相违背。

BFC的实现:(引自张鑫旭的《css世界》)

  • 根元素
  • float的值非none
  • overflow的值为auto、scroll、hidden
  • display的值为table-cell、table-caption和inline-block
  • position的值不为relative和static

css:

ul {overflow: auto; // 使浮动元素的父级成为BFC就行可以实现清浮动
}

效果如下图:

大家有可能会有疑问只要一句话实现BFC,那为什么我们还要用上面的clearfix方案?

overflow: auto;
不支持IE6/7。
overflow: hidden;
不支持IE6,使用这个属性容器外的元素可能被隐藏。

但是,大家想下现在使用IE6/7/8的用户还有好多。我个人觉得现在我们没必要去管IE6/7/8,抛弃那部分用户对于我们的影响微不足道。上面这段话只是个人想法,并没有想过让他人必须这样想,如果大家对这段有什么不满请轻喷。

最后建议大家不要一味的使用clearfix方案。

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

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

相关文章

小心缓存管理器

如果使用spring和JPA&#xff0c;则很有可能利用ehcache&#xff08;或其他缓存提供程序&#xff09;。 您可以在两种不同的情况下进行此操作&#xff1a;JPA 2级缓存和spring方法缓存。 在配置应用程序时&#xff0c;通常会设置JPA提供程序的二级缓存提供程序&#xff08;在我…

DirectX11 学习笔记7 - 支持自由移动的摄像机

如今将又一次制定一个camera摄像机。能够自由移动。比方前进 后退&#xff0c;上游 下潜。 各个方向渲染之类的。 首先设置按键。 这个时候须要在 XWindow.h 里面 bool XWindow::frame() {//推断是否按下ESC键if(x_input->isKeyDown(VK_ESCAPE))return false;//假设A,S,D,W,…

腾讯吃鸡 android,腾讯吃鸡手游《光荣使命》正式上线:安卓/iOS不限号测试

IT之家11月29日消息 今天下午&#xff0c;腾讯首款百人战术竞技手游《光荣使命》在安卓、iOS双平台正式上线&#xff0c;开启全面测试。(官网下载&#xff1a;点此链接&#xff0c;双平台已开放下载。)该游戏采用第三人称射击视角&#xff0c;玩家化身参与“使命行动”军事演习…

lazada铺货模式的选品_lazada小白的运营难点→铺货与精细化运营的优劣势详解

lazada是铺货还是精细化经营第一种铺货铺货作为平台早期都是比较受欢迎的&#xff0c;平台的蛮荒期&#xff0c;成长期当中&#xff0c;铺货的商家是非常受欢迎的&#xff0c;因为平台需要更多SKU产品&#xff0c;去吸引买家&#xff0c;铺货这个时候是最好的也是能最快的成长起…

ife 零基础学院 day 2

第二天&#xff1a;给自己做一个在线简历吧 最后的验证&#xff0c;提出了几个问题&#xff0c;尝试解答一下 HTML是什么&#xff0c;HTML5是什么 HTML的定义摘抄自w3school的HTML 简介 HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Langua…

excel数据生成sql insert语句

excel数据生成sql insert语句 excel表格中有A、B、C三列数据&#xff0c;希望导入到数据库users表中&#xff0c;对应的字段分别是name,sex,age 。 在你的excel表格中增加一列&#xff0c;利用excel的公式自动生成sql语句&#xff0c;方法如下&#xff1a; 1、增加一列&#xf…

Java中的推断异常

借用和窃取其他语言的概念和想法总是很高兴的。 Scala的Option是我真正喜欢的一个主意&#xff0c;因此我用Java编写了一个实现。 它包装了一个可能为null或不为null的对象&#xff0c;并提供了一些可按某种功能使用的方法。 例如&#xff0c;isDefined方法添加了一种面向对象的…

重载,覆盖,隐藏

转载于:https://www.cnblogs.com/jhcelue/p/7145525.html

Animate.css介绍

Animate.css简介 animate.css 动画库&#xff0c;预设了抖动&#xff08;shake&#xff09;、闪烁&#xff08;flash&#xff09;、弹跳&#xff08;bounce&#xff09;、翻转&#xff08;flip&#xff09;、旋转&#xff08;rotateIn/rotateOut&#xff09;、淡入淡出&#x…

logstash 吞吐量优化_1002-谈谈ELK日志分析平台的性能优化理念

在生产环境中&#xff0c;我们为了更好的服务于业务&#xff0c;通常会通过优化的手段来实现服务对外的性能最大化&#xff0c;节省系统性能开支&#xff1b;关注我的朋友们都知道&#xff0c;前段时间一直在搞ELK&#xff0c;同时也记录在了个人的博客篇章中&#xff0c;从部署…

spark SQL(三)数据源 Data Source----通用的数据 加载/保存功能

Spark SQL 的数据源------通用的数据 加载/保存功能 Spark SQL支持通过DataFrame接口在各种数据源上进行操作。DataFrame可以使用关系变换进行操作&#xff0c;也可以用来创建临时视图。将DataFrame 注册为临时视图允许您对其数据运行SQL查询。本节介绍使用Spark Data Sou…

sqlserver日期函数

SQLServer时间日期函数详解,SQLServer,时间日期, 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上&#xff0c;返回新的 datetime 值 例如&#xff1a;向日期加上2天 select dateadd(day,2,2004-10-15) --返回&#xff1a…

荣耀鸿蒙系统开机动画,荣耀赵明:鸿蒙系统首发设备欲屏蔽开机广告

来源&#xff1a;硅谷分析狮余承东表示8月9日会发布鸿蒙系统&#xff0c;而从他透露的一些细节看&#xff0c;鸿蒙系统将首先运用在智慧屏终端上&#xff0c;其配合大屏幕和自研芯片(麒麟AI芯片&#xff0c;鸿鹄智慧显示芯片&#xff0c;凌霄WIFI芯片)&#xff0c;将实现生态上…

编写Maven插件的提示

最近&#xff0c;我花了很多时间来编写或为Maven开发插件。 它们简单&#xff0c;有趣且有趣。 我以为我会分享一些技巧&#xff0c;使他们在编写时变得更轻松。 提示1&#xff1a;将任务与Mojo分开 最初&#xff0c;您将把mojo的所有代码放入mojo的类&#xff08;即&#xf…

oracle通信通道的文件结尾_ORA-03113:通信通道的文件结尾解决

提示ORA-03113&#xff1a;通信通道的文件结尾解决事情原由&#xff1a;oracle安装到win7下&#xff0c;以为都是直接sqlplus / as sysdba&#xff0c;使用数据库&#xff0c;但最近连接时频繁报错&#xff0c;提示ORA-03113&#xff1a;通信通道的文件结尾进程 ID &#xff1a…

Python_迭代器与生成器

迭代器 迭代是Python最强大的功能之一&#xff0c;是访问集合元素的一种方式。。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问&#xff0c;直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法&#xff1a;iter()…

JSOI 2009 BZOJ 1444 有趣的游戏

题面 题目描述 小阳阳发明了一个有趣的游戏&#xff1a;有n个玩家&#xff0c;每一个玩家均有一个长度为 l 的字母序列&#xff0c;任何两个玩家的字母序列不同。共有m种不同的字母&#xff0c;所有的字母序列都由这m种字母构成&#xff0c;为了方便&#xff0c;我们取大写字母…

html语言dl与ul,HTML中DL、UL、OL用哪个比较好

大家好~ 我是一枚正直纯洁的苦逼程序员&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;ul&#xff0c;ol&#xff0c;dl标签是CSS网页布局中常用的列表元素。 列表将具有相似特征或先后顺序的内容按照从上到下的顺序排列起来。1.ul标签&#xff1a;无序列表始于…

slot多作用域 vue_详解Vue.js 作用域、slot用法(单个slot、具名slot)

作用域HEi免费资源网在介绍slot前&#xff0c;需要先知道一个概念&#xff1a;编译的作用域。比如父组件中有如下模板&#xff1a;HEi免费资源网{{message}}这里的message就是一个slot&#xff0c;但是它绑定的是父组件的数据&#xff0c;而不是组件< child-component >的…

Java – JDK 8的远景

世界正在缓慢但肯定地发生变化。 经过更改后&#xff0c;Java有了JDK 7的全新外观&#xff0c;Java社区期待JDK 8&#xff08;可能还有JDK 9&#xff09;所带来的其余改进。 JDK 8的目标目的是填补JDK 7实施中的空白-该实施中剩下的部分难题&#xff0c;应该在2013年底之前为广…