浮动的工作原理

浮动元素脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框则停留。

浮动元素可能引起的问题

1.父元素的高度无法被撑开,影响与父级元素同级的元素

2.与浮动元素同级的非浮动元素会跟随其后

3.若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面的显示结构

清除浮动有什么解决办法?

一般来说有三种办法。

1.使用空标签清除浮动

在所有浮动标签后面添加一个空标签并定义CSS属性  clear:both

对比图:div未被撑开

加个空标签就可以,弊端是增加了无语义标签

<style type="text/css">
html,body,div{ margin: 0;padding: 0;}
.box{border: 1px solid #333;}
p{border: 1px dotted #333;}
.box img{float: left;}
.box p{float: left;}
.cb{clear: both;}
</style>
</head> <body> <div class="box">
<img src="1.jpg" width="50px" height="50px">
<p>one</p>
<!--在这里增加 <div class="cb"></div> -->
</div>
</body>

当然了,如果浮动元素的后边元素你不需要浮动,可以顺便给它加个clear:both ,这样也不错。

2.使用overflow

给包含浮动元素的父元素标签添加CSS属性,overflow:hidden or auto; zoom:1  ,其中zoom:1用于兼容IE6,目的是为了触发hasLayout

3.使用after伪对象清除浮动。

但该方法只适用于非IE浏览器,还要注意的是使用的时候要记得为需要清除浮动元素的伪对象设置height:0; 否则该对象会比实际高出若干像素。

<head>
<style>
html,body,div{ margin: 0;padding: 0;}
.box{border: 1px solid #333;}
p{border: 1px dotted #333;}
.box img{float: left;}
.box p{float: left;}
.cb{clear: both;} .clearfix{display: inline-block; /*zoom:1;*/ } /* for IE ; or use zoom:1 to trigger the hasLayout; */ .clearfix:after{content: "."; display: block; height: 0; visibility: hidden;clear: both;}
</style>
</head> <body> <div class="box clearfix">
<img src="1.jpg" width="50px" height="50px">
<p>one</p>
</div>
</body>

4.就是给浮动元素的父元素也浮动起来,但这整体又浮动了所以不推荐~

5.还有一种就是直接给浮动的元素添加属性  display:table;

FF Chrome等支持,IE6/IE7测试显示不支持~ 所以还得触发hasLayout ,加上zoom:1  或者 display:inline-block 吧

谈谈CSS的浮动问题的更多相关文章

  1. 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  2. css清除浮动深度解析

    首先引入一个新的概念"包裹". float:left会使得该属性的作用容器包裹住其内部元素:那么还有么有其他属性能够产生类似于浮动这种包裹性? 答案是有的:像"浮动&qu ...

  3. css清除浮动大全共8种方法

    原文链接http://www.jb51.net/css/173023.html 清除浮动是每一个 web前台设计师必须掌握的机能.css清除浮动大全,共8种方法. 浮动会使当前标签产生向上浮的效果,同 ...

  4. CSS清除浮动技巧

    一般浮动是什么情况呢?一般是一个盒子里使用了CSS float浮动属性,导致父级对象盒子不能被撑开,这样CSS float浮动就产生了. 本来两个黑色对象盒子是在红色盒子内,因为对两个黑色盒子使用了f ...

  5. 从倒影说起,谈谈 CSS 继承 inherit(转)

    从倒影说起,谈谈 CSS 继承 inherit 给定一张有如下背景图的 div: 制作如下的倒影效果: 方法很多,但是我们当然要寻找最快最便捷的方法,至少得是无论图片怎么变化,div 大小怎么变化,我 ...

  6. DIV+CSS 清除浮动方法总结

    DIV+CSS 清除浮动是页面布局中常见的问题,相信各位高手也都有自己的方法,今天在这里对常见的几种方法进行总结(PS:谈不上是原创,这里是我自己做的归纳总结,也是我自己内化的过程),希望对您能够有所 ...

  7. CSS清除浮动八种方法

    在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了,下面总结8种清除浮动的方法,测试已通过 ie chrome firefox opera,需要的朋友可以参考下 清除浮动是每一个 web前台设 ...

  8. css清除浮动的方法汇总

    这是在其他地方看到的一篇文章,汇总的不错,摘过来做个记录. 引用地址 : http://www.cnblogs.com/ForEvErNoME/p/3383539.html ------------- ...

  9. 更简洁的 CSS 清理浮动方式

    CSS清理浮动有很多种方式,像使用 br 标签自带的 clear 属,使用元素的 overflow,使用空标签来设置 clear:both 等等.但考虑到兼容问题和语义化的问题,一般我们都会使用如下代 ...

随机推荐

  1. [翻译]NUnit---RequiredAddin and RequiresMTA Attributes(十六)

    RequiredAddinAttribute (NUnit 2.5) RequiredAddin特性用于提示一个程序集需要特殊的插件才能保证功能正常.如果没有安装插件,整个程序集会被标记为未运行. N ...

  2. Asp.net MVC + Redis(Linux安装Redis)

    最近有幸在工作中用到了redis,玩的还算开心.但是发现Redis在Windows上并不是满血状态的,所以决定安装一个Linux的虚拟机,让Redis在Linux上运行. 虚拟环境 虚拟机,我已经玩了 ...

  3. c#开发sqlite

    教程:https://www.cnblogs.com/icebutterfly/p/7850689.html 下载sqlite-netFx40-setup-bundle-x64-2010-1.0.96 ...

  4. 毕业回馈-89C51之数码管的使用

    7段码的数码管由7个LED等共同组成,根据公共端的不同有共阴和共阳之分.现在很多数码管在7段码的基础上加了一个.即dp,其内部结构如下图所示: 公共端为LED灯的阴极,所以为共阴极接法: 公共端为阳极 ...

  5. 使用Git上传代码到远程仓库

    1.进入文件夹,cd f:/test/ 2.初始化远程仓库,git init 3.添加代码,git add . (注意add后面的点前面有一个空格) 4.提交代码到远程仓库,git commit -m ...

  6. SQL语句中的TOP(expression) [PERCENT] [WITH TIES] 用法

    TOP(expression) [PERCENT] [WITH TIES] expression : 指定返回行数的数值表达式.如果指定了PERCENT,则expression默认转换为FLOAT值, ...

  7. C#之asp.net 及MVC 生成动态验证码:

    C#之asp.net 及MVC 生成动态验证码: 1.生成验证码字符串 // 随机生成指定长度的验证码字符串private string RandomCode(int length) { string ...

  8. Day71 分页,cookie and Session

    cookie 是保存在客户端的键值对. cookie本身最大支持4096字节,保存在客户端的 session是保存在服务器端的键值对.(依赖cookie) cookie和session cookie的 ...

  9. Android------------fragment数据传递

    一.activity向fragment的数值之间的传递 关键点:fragment.setArguments(bundle);---->activity发出的信息      Bundle bund ...

  10. 虚拟安装centos后无法上网、DNS无法解析问题解决

    1.保证拟机ip和VMnet8的ip在同一网段内 2.虚拟机网关和VMnet8相同