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

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

<!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. 【例题 4-4 uva 213】Message Decoding

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 输入的二进制长度最长为7 所以得开个sta[7][2^7]的样子才存的下所有的字符的.. 定义这么一个数组当字典. 然后一个字符一个 ...

  2. lucene_09_solrj的使用

    什么是solrj solrj 是访问Solr 服务的java客户端,提供索引(增删改)和搜索(查)的请求方法,Solrj 通常在嵌入在业务系统中,通过Solrj的API接口操作Solr服务,如下图: ...

  3. 0926mysql join的原理

    转自 http://www.cnblogs.com/shengdimaya/p/7123069.html MySQL JOIN原理   先看一下实验的两张表: 表comments,总行数28856 表 ...

  4. Yarn的工作流程

    http://study.163.com/course/courseLearn.htm?courseId=1002887002#/learn/video?lessonId=1003346099& ...

  5. 利用runtime动态生成对象?

    利用runtime我们能够动态生成对象.属性.方法这特性 假定我们要动态生成DYViewController,并为它创建属性propertyName 1)对象名 NSString *class = @ ...

  6. Git与SVN区别 \git学习

    http://blog.csdn.net/w13770269691/article/details/38705473/ https://git-scm.com/book/zh/v2

  7. Oracle 数据块损坏与恢复具体解释

    1.什么是块损坏: 所谓损坏的数据块,是指块没有採用可识别的 Oracle 格式,或者其内容在内部不一致. 通常情况下,损坏是由硬件故障或操作系统问题引起的.Oracle 数据库将损坏的块标识为&qu ...

  8. 关联查询之map的延伸使用方法

    <select id="front.sort.selectListall" parameterType="myshop.services.front.sort.be ...

  9. 获得拼凑SQL语句运行后的结果

    拼凑式的SQL语句太普遍了,比如说,任意条件的查询. 这种拼凑SQL语句,如果在数据库端组装,必然是一条长长的字符串,然后 exec(@sql). 如果这条语句写在存储过程里边,存储过程的调用方会获得 ...

  10. SQL SERVER读书笔记:nolock

    让查询语句不去申请共享锁,从而消除死锁,效果立竿见影. 缺点: 1.脏读 2.只能解决共享锁(S锁)参与的问题 3.需要修改语句本身才能使用