清楚浮动3种办法

一、浮动产生的原因

一般浮动是什么情况呢?一般是一个盒子里使用了CSS float浮动属性,导致父级对象盒子不能被撑开,这样CSS float浮动就产生了。

不用float属性,高可以被撑起来

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <style type="text/css">
            .box{width:100%; border:red solid 1px;}
            .one,.two{width: 100px; height: 100px; border:black solid 1px; }
        </style>
    </head>
    <body>
        <div class="box">
            <div class="one"></div>
            <div class="two"></div>
        </div>
    </body>
</html>

但是用了float后:本来两个黑色对象盒子是在红色盒子内,因为对两个黑色盒子使用了float浮动,所以两个黑色盒子产生了浮动,导致红色盒子不能撑开,这样浮动就产生了。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <style type="text/css">
            .box{width:100%; border:red solid 1px;}
            .one,.two{width: 100px; height: 100px; border:black solid 1px; }
            .one{float: left;}
            .two{float: left;}
        </style>
    </head>
    <body>
        <div class="box">
            <div class="one"></div>
            <div class="two"></div>
        </div>
    </body>
</html>

二、浮动带来的影响

1、背景不能显示
由于浮动产生,如果对父级设置了(CSS background背景)CSS背景颜色或CSS背景图片,而父级不能被撑开,所以导致CSS背景不能显示。
2、边框不能撑开
如上图中,如果父级设置了CSS边框属性(css border),由于子级里使用了float属性,产生浮动,父级不能被撑开,导致边框不能随内容而被撑开。
3、margin padding设置值不能正确显示【现在浏览器已经修复这个BUG,所以不会影响了,忽略此条】
由于浮动导致父级子级之间设置了css padding、css margin属性的值不能正确表达。特别是上下边的padding和margin不能正确显示。

三、清除浮动

1、对父级设置适合CSS高度

对父级设置适合高度样式清除浮动,这里对“父级DIV”设置一定高度即可,一般设置高度需要能确定内容高度才能设置。这里我们假设知道内容高度是100PX+上下边框为2px,这样具体父级高度为102px

2、clear:both清除浮动

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <style type="text/css">
            .box{width:100%; border:red solid 1px;}
            .one,.two{width: 100px; height: 100px; border:black solid 1px; }
            .one{float: left;}
            .two{float: left;}
            .clear{clear: both;}
        </style>
    </head>
    <body>
        <div class="box">
            <div class="one"></div>
            <div class="two"></div>
            <div class="clear"></div>
        </div>
    </body>
</html>

3、父级div定义 overflow:hidden

为什么加入overflow:hidden即可清除浮动呢?那是因为overflow:hidden属性相当于是让父级紧贴内容,这样即可紧贴其对象内内容(包括使用float的div盒子),从而实现了清除浮动。Css overflow:hidden清除浮动方法我推荐使用。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <style type="text/css">
            .box{width:100%; border:red solid 1px; overflow:hidden ;}
            .one,.two{width: 100px; height: 100px; border:black solid 1px; }
            .one{float: left;}
            .two{float: left;}
        </style>
    </head>
    <body>
        <div class="box">
            <div class="one"></div>
            <div class="two"></div>
        </div>
    </body>
</html>

小结:以上三点即是兼容各大浏览器清除浮动的方法,其它有的浏览器不兼容有的不兼容的方法就没必要介绍了,大家记住以上三点解决float浮动清除浮动方法。但这里推荐第三点和第二点解决清除浮动方法。

参考:http://www.divcss5.com/jiqiao/j406.shtml

时间: 2024-10-02 20:39:09

清楚浮动3种办法的相关文章

两种办法提交表单

办法1.同一个页面中建立两个表单 各自提交: <form action="?" name="form1" id="form1">  <!-- 表单内容 --> <input type="submit" /> </form> <form action="?" name="form1" id="form1">  

Cocos2d-x 3.1.1 学习日志4--cocos2d-x解决中文乱码问题的几种办法

做个打飞机的游戏,由于版本太新,网上基本没有教教程,我的版本是cocos2d-x 3.1.1的,今天遇到cocos2dx中中文乱码的问题.无奈只好Google百度寻求答案,明白了这个问题的缘由.因为cocos2d-x内部是以utf8处理文本的,而VS直接输入时文本编码为GBK,如果添加L标志,则为Unicode编码. 解决这个问题有三种办法: 将源代码文件保存为utf8编码,不过由于编译器的问题,这种方式会导致很多无法预测的问题 将字符串用utf8编码集中存到一文件中,然后用代码读取这些字符串来

读取硬盘上被覆盖数据的两种办法

文件管理的真谛在于方便保存和迅速提取,所有的文件将通过文件夹分类被很好地组织起来,放在你最能方便找到的地方.解决这个问题目前最理想的方法就是分类管理,从硬盘分区开始到每一个文件夹的建立,我们都要按照自己的工作和生活需要,分为大大小小.多个层级的文件夹,建立合理的文件保存架构. 此外所有的文件.文件夹,都要规范化地命名,并放入最合适的文件夹中.这样,当我们需要什么文件时,就知道到哪里去寻找.这种方法,对于相当数量的人来说,并不是一件轻松的事,因为他们习惯了随手存放文件和辛苦.茫无头绪地查找文件.下

收起键盘的四种办法

1 除了调用相应控件的resignFirstResponder方法外,还有另外三种办法: 2 重载UIViewController中的touchesBegin方法,然后在里面执行在[self.view endEditing:YES];这样单击UIViewController的任意地方,就可以收起键盘. 3 直接执行[[UIApplication sharedApplication]sendAction:@selector(resignFirstResponder)to:nil from:nil

PHP修改memory_limit的三种办法

PHP修改memory_limit的三种办法 2010-06-11 10:57:11 分类: 可能是分词程序的问题.只要搜索的字段达到十个汉字以上,就会出现诸如以下的错误 Fatal error: Allowed memory size of 2345643 bytes exhausted 上网找了方法.有3种办法. 1.直接修改PHP.INI memory_limit = 16M  ; 但是我修改了没有用.据说是要重启服务器的.但是很显然.我的 是虚拟主机.所以有独立主机的可以这样修改. 2.

c#程序以管理员身份运行(三种办法)

三种办法: 一.设置程序本身的属性:勾选"以管理员身份运行此程序",必要时设置"更改所有用户设置-以管理员身份运行此程序",当然这种办法是被动的,也不是最实际的办法: 二.代码法: static void Main(string[] Args) { /** * 当前用户是管理员的时候,直接启动应用程序 * 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行 */ //获得当前登录的Windows用户标示 System.Security.Principa

使用POST方式弹出窗口的两种办法

使用POST方式弹出窗口的两种办法 最近在做一个功能需要弹窗,但是不能用get方式,因为get方式对url的长度有限制,所以必须用post,总结了两个方法,大家可以参考下 1. 代码如下: var $form1=$("<form action='"+url+"' id='f' name='f' method='post'></form>"); $form1.append($("<input type='hidden' name

MSCOMM32控件注册的两种办法

当我们在VC或者VB或者VS环境下基于MSCOMM控件开发的软件发布后,是不是有种很爽的感觉,可以拿到别人的电脑上运行下你的软件,可是当你移植过去后却发现软件无法点击的动(别笑,我在开发C#软件时就是这样)或者出现如下图所示的情况: 这种情况一般出现在Windows7版本下,这说明MSCOMM32没注册,我们可以选择两种方法去解决,一种方法是当我们安装VC++6.0/VB6.0时,如果选择了ACtiveX控件项(自定义安装),MSComm控件就会自动安装在计算机上了,并在系统文件夹下多了3个文件

winform防止控件随窗体变化出现布局错乱两种办法

///为了防止控件随窗体变化出现布局错乱的现象,利用两种办法 第一种: 利用锚的方法:即使该控件距离某下边的距离固定 类似于div+css中的margin-left 位置如图所示: 第二种方法: 利用DOCK方法将其填充完,那么当窗体大小变化时,也不会出现错乱情况 当然,有时文本框只有一行,解决办法是: 调整属性: 然后开始填充: