清除浮动方法解析

清除浮动方法解析

清除浮动带来的额外影响

如果对于浮动不熟悉的同学,可以看看介绍float的文章。传送门:CSS float

我们知道,在一个父元素内如果遇到某个浮动元素,此时父元素的高度会发生塌陷。针对父元素高度塌陷的问题,现在已经有了很多的解决方案。针对每一个方案,我们来进行深度的剖析。

添加空块级元素

这种方法比较容易,但是要注意的是这个空元素必须是一个块级元素,不能是行内元素或者是行内块元素。缺点就是多了一些没有意义的标签。代码如下。

//HTML <div class="content"> <div class="float"> </div> <div class="clearfix"></div> //用于清除浮动的元素必须是块级元素 </div> //CSS .content {  background:pink; } .clearfix {  clear: both; } .float {  width: 50px;  height: 50px;  float: left;  background: tan; }

之所以可以使用clear属性清除浮动带来的额外影响,还要回归clear属性的本质。

clear属性规定元素的哪一侧不允许其他浮动元素。

本质:在CSS2.1中,clear属性会给清除元素(即设置了clear属性的元素)的上外边距之上添加清除空间,而元素本身的外边距并不改变。再说的详细一些,也就是给元素设置

clear:left|right|both
时,会使清除元素的上外边距边界刚好在该边上浮动元素的下外边距边界之下。

overflow

在父元素中设置

overflow:hidden|auto|scroll
可以解决父元素高度塌陷的问题。为什么可以通过overflow来解决父元素高度塌陷的问题?这里涉及到了另外一个知识点,也就是BFC(块级格式化上下文),先看解决方法。原理下篇文章分享。

父元素设置: overflow:hidden|auto;

下面是设置overflow前和overflow后的效果图


:after伪元素

在父元素上增加:after伪元素,可以解决父元素高度塌陷的问题。

//HTML <div class="content"> <div class="float"> </div> <p>会给覆盖吗?</p> </div> //CSS .content { background: tan; &:after {  content: '.';  display: block;  clear: both;  height: 0;  visibility: hidden; } } .float {  width: 100px;  height: 100px;  float: left;  background: olive; }

放到浏览器上,父元素高度正常显示。

要理解伪元素解决父元素高度塌陷的方案,需要知道额外的一些知识。

浮动
  • 当某个元素发生浮动(left || right)时,该元素会脱离普通文档流。
  • 当某个元素发生浮动,并且DOM后面的元素没有文本内容时,此时浮动元素会覆盖掉紧跟其后的元素。
  • 当某个元素发生浮动,并且DOM后面的元素具有文本内容时,此时浮动元素同样会覆盖掉紧跟其后的元素,但是文字环绕在float元素周围显示,而不是被覆盖。

什么意思呢?其实仔细思考还是挺好理解的。这里放上一段代码解释前三点。

//HTML与上面的相同,将div换成了span,class换成了float-inline。 //CSS .float-inline {  float:left;  width:100px;  height:100px;  background:pink; }

相应的效果如下。

此时,可以设置宽高说明了内联元素span的行内框变成了块框。同时,在浮动元素同级的下一个元素是具有文本内容的,此时文字就会环绕在float元素的周围。因为浮动元素的存在,父元素高度塌陷了。

伪元素

伪元素,顾名思义是一个在某个元素之后添加内容。

  • 伪元素内容的添加必须放在content属性里面。
  • 伪元素是行内元素,不过可以通过display改变伪元素的框的类型。

ok,到这里。我们就已经掌握了理解:after伪元素清除浮动所需要的知识了。放上解决方案。按顺序剖析。

.clearfix: { zoom:1 } //触发IE的haslayout. .clearfix:after {  content: '.';  display: block;  clear: both;  height: 0;  visibility: hidden; }
  • 设置伪元素的内容为'.',content的内容放什么都可以。
  • 设置height:0;
  • 设置visibility:hidden。这里是要让content隐藏掉。
  • 设置clear:both。 清除伪元素的两侧都不允许出现浮动。
  • 最重要的是设置display属性为block,并且只能是block,不能是inline-block。前面也说过,伪元素是行内元素,行内元素是无法设置宽高的。设置display:block,此时元素可以设置宽高,将height:0,此时元素不占据任何高度。如果只设置了前四个属性,而没有改变伪元素的display,将会没有效果。

这里介绍了三种清除浮动带来的额外影响的三种方法,这里所说的额外影响指的是浮动元素给兄弟元素和父元素带来的影响。这里做一个小小的总结

  • 添加空div和:after伪元素的有一个共同的思想:就是使用clear属性。clear属性会给清除元素(即设置了clear属性的元素)的上外边距之上增加清除空间,而元素本身外边距并不改变。并且会使清除元素的上外边距的边界刚好在浮动元素的下外边距边界之下。所以才能达到清除浮动带来额外影响的效果。
  • 父元素使用overflow不为visible,也就是设置
    overflow:hidden|auto
    ,此时也可以达到清除浮动的效果。这里涉及到BFC的概念,下一篇文章分享。

- 此文章转载-转载自:http://www.cnblogs.com/Uncle-Keith/p/6082667.html

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

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

相关文章

进程间的通信----管道

前提&#xff1a;本文是基于Linux系统下的学习 用户态的进程是如何组织的呢&#xff1f;所有的用户态进构成了一棵树。进程树。 进程树的树根是init.也就是1号进程。是用户态进程的祖宗进程。如何查看进程树&#xff1f;pstree 进程之间的关系 父子进程和兄弟进程查看进程的信息…

web项目启动时,自动执行代码的几种方式

在项目开发过程中&#xff0c;往往需要一些功能随着项目启动而优先启动&#xff0c;下面我总结几种方式&#xff08;非spring boot&#xff09; spring boot的参考 spring boot 学习之路9 (项目启动后就执行特定方法) 方式一&#xff1a; ServletContextListener监听器&#…

设计模式:状态

本文将介绍状态设计模式 。 它是行为设计模式之一 。 您无需了解许多理论即可了解模式的主要概念。 该文章将分为几个部分&#xff0c;在其中我将提供有关需要应用该模式的情况&#xff0c;它所具有的利弊以及用法示例的信息。 有时&#xff0c;当对象的内部状态更改时&#…

[UWP]了解模板化控件(9):UI指南

[UWP]了解模板化控件(9)&#xff1a;UI指南 原文:[UWP]了解模板化控件(9)&#xff1a;UI指南1. 使用TemplateSettings统一外观 TemplateSettings提供一组只读属性&#xff0c;用于在新建ControlTemplate时使用这些约定的属性。 譬如&#xff0c;修改HeaderedContentControl的Co…

Java的反射API

如果您曾经问​​过自己以下问题&#xff1a; –“如何在字符串中仅包含其名称的方法调用&#xff1f;” –“如何动态列出类中的所有属性&#xff1f;” –“如何编写一种将任何给定对象的状态重置为默认值的方法&#xff1f;” 然后您可能已经听说过Java的Reflection API…

linux服务器基本常识,服务器搭建-Linux基础知识

服务器搭建还是需要一些Linux知识的&#xff0c;这节就聊点基础的。文件权限操作查看权限Linux中每个文件对每个用户来说都有对应的权限&#xff0c;在任一路径中输入ll就可以查看这些信息&#xff1a;rootip-*** /usr/local # lltotal 32Kdrwxr-xr-x 2 root root 4.0K Jan 14 …

CSS实现单行与多行文字省略(truncation)

在上一篇文章小div布局之卡片堆叠&#xff08;card-stacking&#xff09;中有多行文字溢出省略的效果&#xff0c;这篇文章就对这种效果&#xff08;包括单行文字溢出省略&#xff09;的实现做个简单的记录&#xff0c;以防自己忘记。具体来说&#xff0c;就是要实现这种文字排…

logback配置详解和使用

最近知道一种打印日志的新方法&#xff0c;在此做一下学习总结。 转自&#xff1a;行走在云端的愚公 https://www.cnblogs.com/warking/p/5710303.html 一、logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站&#xff1a; http://logback.qos.ch。它当前…

RAID技术超详细讲解

RAID 技术是一种多磁盘技术&#xff0c;面对数据的各方面有着两面性的影响&#xff0c;整体来说优点大于缺点的&#xff0c;下面我将详细介绍一下 RAID &#xff0c;简称磁盘阵列技术。 一、RAID 概述 1988 年美国加州大学伯克利分校的 D. A. Patterson 教授等首次在论文 “A C…

Java安全教程–创建SSL连接和证书的分步指南

在有关应用JEE安全性的系列文章中&#xff0c;我们为您提供了另一个有关如何在Java EE应用程序中创建SSL连接和创建证书的详细教程。 如我们之前的文章中所述&#xff0c; 安全套接字层&#xff08;SSL&#xff09;/传输层安全性&#xff08;TLS&#xff09;将启用客户端和Web服…

[转]CSS hack大全详解

转自&#xff1a;CSS hack大全&详解 1、什么是CSS hack? CSS hack是通过在CSS样式中加入一些特殊的符号&#xff0c;让不同的浏览器识别不同的符号&#xff08;什么样的浏览器识别什么样的符号是有标准的&#xff0c;CSS hack就是让你记住这个标准&#xff09;&#xff0c…

产品经理应该具备的技能(2)如何做一个好的数据产品经理?

一、如何做一个好的数据产品经理&#xff1f; PD&#xff08;指产品经理&#xff0c;下同&#xff09;本身就是在做牛做马&#xff0c;关系圈异常复杂。数据PD也不例外。而且打交道的人更多。以下是我用PPT绘制的数据产品经理关系圈。如果你也做过 数据产品的产品经理&#xff…

Java EE CDI程序化依赖关系消歧示例–注入点检查

在本教程中&#xff0c;我们将看到在注入Java EE CDI bean时如何避免程序依赖消除歧义。 我们已经在Jave EE依赖关系消除歧义示例中展示了如何避免CDI Bean中的依赖关系歧义消除。 在这里&#xff0c;我们将向您展示如何以动态方式避免依赖消除歧义。 我们将通过检查注入另一个…

机器学习算法整理(四)集成算法—随机森林模型

随机&#xff1a;数据采样随机&#xff0c;特征选择随机 &#xff08;数据采样&#xff0c;有放回&#xff09; 转载于:https://www.cnblogs.com/douzujun/p/8386930.html

linux人脸识别视频推流,RTMP推流协议视频智能分析/人脸识别/直播点播平台EasyDSS接口调用注意事项介绍...

TSINGSEE青犀视频目前推出了前端支持不同协议设备接入的视频智能分析平台&#xff0c;包括RTSP协议的EasyNVR、GB28181协议的EasyGBS&#xff0c;RTMP推流协议的EasyDSS&#xff0c;还有能够进行人脸识别、车牌识别的EasyCVR&#xff0c;这些平台均提供了视频转码分发的能力&am…

在基于图论的Java程序中基于DSL的输入图数据的方法

我们大多数人已经编写了一些程序来处理图论算法&#xff0c;例如查找两个顶点之间的最短路径&#xff0c;查找给定图的最小生成树等等。 在这些算法的每一种中&#xff0c;表示图形的编程方式是使用邻接矩阵或邻接表 。 两者都不是定义图形输入的非常直观的方法。 例如&#xf…

Remmarguts' Date(POJ2449+最短路+A*算法)

题目链接&#xff1a;http://poj.org/problem?id2449 题目&#xff1a; 题意&#xff1a;求有向图两点间的k短路。 思路&#xff1a;最短路A*算法 代码实现如下&#xff1a; 1 #include <set>2 #include <map>3 #include <queue>4 #include <stack>5 …

usb3.0 linux无法识别,USB3.0接口不能识别U盘的解决方法

USB接口可以说是电脑的标配&#xff0c;现在基本上所有电脑都会搭载USB接口。而USB标准从1.0发展到现在的3.0&#xff0c;甚至更新的也已出来。不过&#xff0c;如果USB3.0无法识别U盘&#xff0c;那该怎么办呢?USB3.0是一种技术也是一种规范&#xff0c;现在很多笔记本都是默…

table 鼠标移上去改变单元格边框颜色。

表格定义了 border-collapse:collapse;边框会合并为一个单一的边框。会忽略 border-spacing 和 empty-cells 属性。用td:hover,显示不全 搜索了好久&#xff0c;没有找到好的方法&#xff0c;用左右边框也不完美。 于是就在想&#xff0c;移上去的时候给加个伪元素after&#…

PotPlayer安装与配置

目录 1.简介 2.安装 3.设置 基本选项设置&#xff1a; 播放选项设置&#xff1a; PotPlayer皮肤设置&#xff1a; 1.简介 PotPlayer一款小巧简单的视频播放软件&#xff0c;具有于强大的定制能力和个性化功能。 2.安装 官网下载 potplayer http://potplayer.daum.net/?langzh_…