浮动元素容易造成页面错位现象。下面说说关于清除浮动的几种方法。

首先。先创建一个浮动导致错位的页面。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CSS---浮动</title>
<style>
.float-left{
float: left;
width: 200px;
height: 200px;
border: 2px solid red;
}
.float-right{
float: right;
width: 200px;
height: 200px;
border: 2px solid blue;
}
.float-box{
background-color: pink;
}
.no-float{
color: #fff;
background-color: pink;
}
</style>
</head>
<body>
<div class="float-box">
<div class="float-left">左浮动</div>
<div class="float-right">右浮动</div>
</div>
<div class="no-float">被浮动影响地元素</div>
</body>
</html>

浮动导致的错位HTML结构

可以看出,左右浮动元素和class为no-float的正常元素重叠了。而且左右浮动元素由于浮动,没法撑开父元素float-box的高度,因此父元素的背景元素也没有显示出来。

解决这个问题,一般可以用下面几个方法:

  • 在浮动元素的父元素也即是class为float-box的元素最后加入一个div标签,

    <div class="float-box">
    <div class="float-left">左浮动</div>
    <div class="float-right">右浮动</div>
    <div class="clear-float"></div>
    </div>

    属性设置如下:

    .clear-float{
    clear:both;
    }

    这样就可以清除浮动了并且父元素float-box也有高度了。

  • 在浮动元素的父元素之后加入BR标签,<br/>标签具有clear属性,其属性值为left/right/all。
  • <div class="float-box">
    <div class="float-left">左浮动</div>
    <div class="float-right">右浮动</div>
    <br clear="all"/>
    </div>

    这方法的效果同第一种方法。

  • 在浮动元素的父元素中加入overflow属性。如下
    .float-box{
    overflow: hidden;
    background-color: #eee;
    }

    overflow:hidden;但在内容过多导致溢出时会自动隐藏多余的内容

   利用overflow:hidden涉及到BFC块级格式化上下文。通过在父元素中设置

  1. float:left/right;
  2. overflow除了visible之外的值,
  3. display (table-cell,table-caption,inline-block)
  4. position(absolute,fixed)
  5. fieldset元素

     均可以触发BFC,BFC可以闭合浮动,因此可以达到清除浮动的效果。

  • 利用伪类:after消除浮动。可以理解为在浮动元素之后加入了一个伪类控制的伪类层,这是一个没有高度没有内容并且带有clear:both属性的层,可以消除浮动。

    .float-box:after{
    display: block;
    visibility: visible;/*设置伪类层为块元素并且可见*/
    clear:both;/*清除浮动*/
    height: 0;
    line-height:0;
    font-size:;
    content: "";/*伪类层内容清空*/
    }

    最后一种方法更深的分离了HTML和CSS,更加方便我们维护页面。

CSS读书笔记(3)---清除浮动的几种方法的更多相关文章

  1. [Web 前端] 018 css 清除浮动的四种方法

    清除浮动的四种方法 加 clear: ...(见例1) 父级上增加属性 overflow:hidden(见例2.1) 在最后一个子元素的后面加一个空的 div,给它一个样式属性 clear: both ...

  2. CSS 小结笔记之清除浮动

    浮动是一个非常好用的属性,但是有时会出现一些问题,需要进行清除浮动.例如 <!DOCTYPE html> <html lang="en"> <head ...

  3. 活学活用,CSS清除浮动的4种方法

    清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近. CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受. 1.结尾处加空div标签 ...

  4. css清除浮动的几种方法整理

    四种清除浮动方法如下: 1.使用空标签清除浮动.空标签可以是div标签,也可以是P 标签.这种方式是在需要清除浮动的父级元素内部的所有浮动元素后添加这样一个标签 清除浮动,并为其定义CSS代码:cle ...

  5. [css]浮动-清除浮动的3种方法

    清除浮动的方法: 内墙法 注: 这是个奇淫技巧,没什么原理可言,记住即可 这个技巧又使得父box重新可以被子box撑开高度了. 隔墙法-适用于2个box之间上下排列 由于2个box高度依旧是0, 彼此 ...

  6. css清除浮动的8种方法以及优缺点

    浮动会使当前标签产生上浮的效果,同时会影响到前后的标签.父级标签的位置及width height 属性.而且同样的代码,在各种浏览器中效果可能不同,这样让清除浮动更难了.清除浮动引起的问题有很多的方法 ...

  7. CSS 清除浮动的4种方法

    此为未清除浮动源代码,运行代码无法查看到父级元素浅黄色背景.<style type=”text/css”> <!– *{margin:0;padding:0;} body{font: ...

  8. CSS 清除浮动的几种方法

    导读: CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列,Float(浮动),往往是用于图像,使得文字围绕图片的效果,而它在布局时一样非常有用.不过有利也有弊,使用浮动 ...

  9. CSS 清除浮动的四种方法

    在实际项目中,我们经常会用到float属性来对页面进行布局.当使用float时,意味着该元素已经脱离了文档流,相当于浮于文档之上,不占据空间.但是针对兄弟元素为文字内容时,会占据一定空间,从而产生文字 ...

随机推荐

  1. 配置Jupyter

    前几天见同学有用Jupyter notebook的,有点喜欢,于是今天自己配了一下. Jupyter是一个非常好用编辑器,因为Jupyter notebook 不仅可以编写代码运行,并且可以直接在代码 ...

  2. Linux思维导图之计划任务

    查漏补缺,理解概念,及时总结,互相交流,欢迎拍砖. 用yum install -y vixie-cron这个命令进行安装计划任务服务,可以在安装之前使用crontab -e进行检测一下,服务器是否安装 ...

  3. 7.ES几种常见的搜索方式

    主要知识点  1, query string search (1)  GET /ecommerce/product/_search (2) GET/ecommerce/product/_search? ...

  4. laravel Job 和事件

    在做项目的时候,一直对Job和Event有个疑惑.感觉两者是相同的东西,搞不清楚两者的区别在哪里!经过一段时间的琢磨和查找了相关的资料,对Job和Event做了一些总结,以便记忆. Job Job既可 ...

  5. 单例模式的理解【php】

    单例模式(Singleton Pattern):顾名思义,就是只有一个实例.作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 为什么要使用单例模式 1.P ...

  6. NLTK学习笔记(二):文本、语料资源和WordNet汇总

    目录 语料库基本函数表 文本语料库分类 常见语料库及其用法 载入自定义语料库 词典资源 停用词语料库 WordNet面向语义的英语字典 语义相似度 语料库基本函数表 示例 描述 fileids() 语 ...

  7. elasticsearch 分布式阅读笔记(二)

    说明 扩展分为 纵向扩展:购买更好的服务器 横向扩展:增加服务器(elasticsearch更适合横向扩展) elasticsearch可以用于构建高可用和可扩展的系统,elasticsearch天生 ...

  8. HDU 2224 The shortest path

    The shortest path Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. 日志输出最不重要的就是控制台输出,控制台输出就是system.out而已

    1.日志输出最不重要的就是控制台输出,控制台输出就是system.out而已 2.所以日志输出时候会存在一个Bug就是:stdout要配置在日志输出的最前面,因为stdout控制台输出,最不重要,如果 ...

  10. 【android】uses-permission和permission具体解释

    1.<uses-permission>: 官方描写叙述: If an application needs access to a feature protected by a permis ...