浮动塌陷

  使用浮动(float)的一个比较疑惑的事情是他们怎么影响包含他们的父元素的。如果父元素只包含浮动元素,且父元素未设置高度和宽度的时候。那么它的高度就会塌缩为零。如果父元素不包含任何的可见背景,这个问题会很难被注意到,但是这是一个很重要的问题。在这里我们可以称为“塌陷”。如下图:

    <style type="text/css">
        .box{border: 2px solid blue}
        .box1{width: 50px;height: 50px;border: 1px solid red;background: yellow;float: left}
        .box2{width: 100px;height: 100px;border: 1px solid red;background: red;float: left}
        .box3{width: 300px;height: 300px;border: 1px solid red;background: green;float: left}
    </style>
</head>
<body>
    <div class="box">
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
    </div>
</body>

  解决塌陷有以下三种方法:

一、在使用float元素的父元素结束前加一个高为0宽为0且有clear:both样式的div

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        .box{border: 2px solid blue}
        .box1{width: 50px;height: 50px;border: 1px solid red;background: yellow;float: left}
        .box2{width: 100px;height: 100px;border: 1px solid red;background: red;float: left}
        .box3{width: 300px;height: 300px;border: 1px solid red;background: green;float: left}
    </style>
</head>
<body>
    <div class="box">
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
        <div style="clear: both"></div>
    </div>
</body>

二、在使用float元素的父元素添加overflow:hidden;

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        .box{border: 2px solid blue;overflow: hidden}
        .box1{width: 50px;height: 50px;border: 1px solid red;background: yellow;float: left}
        .box2{width: 100px;height: 100px;border: 1px solid red;background: red;float: left}
        .box3{width: 300px;height: 300px;border: 1px solid red;background: green;float: left}
    </style>
</head>
<body>
    <div class="box">
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
    </div>
</body>

三、after,所谓after,就是指标签的最后一个子元素的后面。

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        .box{border: 2px solid blue;zoom:1;}
        .box:after{clear: both;display: block;line-height: 0;visibility: hidden;content: ‘clear‘}
        .box1{width: 50px;height: 50px;border: 1px solid red;background: yellow;float: left}
        .box2{width: 100px;height: 100px;border: 1px solid red;background: red;float: left}
        .box3{width: 300px;height: 300px;border: 1px solid red;background: green;float: left}
    </style>
</head>
<body>
    <div class="box">
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
    </div>
</body>
时间: 2024-10-25 00:16:08

浮动塌陷的相关文章

前端之旅HTML与CSS篇之清除浮动塌陷

以下内容为转载. 方法1:给浮动的元素的上级添加高度如果一个元素要浮动,那么它的祖先元素一定要有高度.高度的盒子,才能关住浮动.只要浮动在一个有高度的盒子中,那么这个浮动就不会影响后面的浮动元素.所以就是清除浮动带来的影响了.所以只需要给li的上级ul或者div设置一个height:40px:(只要是浮动元素的上级元素就可以.),那么第二个div就好挤下来,在第一个盒子下面显示出来.方法2:clear:both;但是在实际开发过程当中中,高度height很少出现.为什么?因为能被内容撑高!那也就

清除浮动塌陷的4种经典套路

原文地址;http://www.cnblogs.com/chedabang/p/5973601.html "自古深情留不住,总是套路得人心."这些日子,各个朋友圈随时可以见到这句话的身影.的确人们常说:"多一点真诚,少一点套路.",但是最终现象写实也是那么残酷和无奈. 同样在前端攻城狮的道路,我们都是真诚尽心尽力的去学习进取.奈何先是各大浏览器厂商的大战不断,导致我们这群学习的人苦不堪言,一片水生火热呀.不得不想进各种hack方法解决.(没错,这里就是吐槽的IE6!

css样式float造成的浮动“塌陷”问题的解决办法

什么是CSS Float? 定义: float 属性定义元素浮动到左侧或右侧.以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动.浮动元素会生成一个块级元素,而不论它本身是何种元素.元素对象设置了float属性之后,它将不再独自占据一行.浮动块可以向左或向右移动,直到它的外边缘碰到包含它的框或另一个浮动块的边框为止.fload属性有四个可用的值:Left 和Right 分别浮动元素到各自的方向,None (默认的) 使元素不浮动,Inherit 将会从父级元素

CSS中的浮动、高度塌陷以及清楚浮动

一.CSS浮动 浮动(float)的框可以左右移动,直至它的外边缘碰到包含框或另一个浮动框的外边缘.浮动框不属于文档中的普通流,当一个元素浮动之后,不会影响到块级元素的布局而只会影响内联元素(通常是文本)的排列,文档中的普通流就表现得如同浮动框不存在一样.当浮动框高度超出包含框的时候,就会出现包含框不会自动升高来闭合浮动元素("高度塌陷"现象). <!DOCTYPE html> <html> <head> <style type="t

父标签浮动(float)“塌陷”问题

浮动“塌陷” float参见: http://www.cnblogs.com/bigtreei/p/8110090.html http://www.w3school.com.cn/css/css_positioning_floating.asp ·使用浮动(float)的一个比较疑惑的事情是他们怎么影响包含他们的父元素的.如果父元素只包含浮动元素,且父元素未设置高度和宽度的时候. 那么它的高度就会塌缩为零.如果父元素不包含任何的可见背景,这个问题会很难被注意到,但是这是一个很重要的问题.在这里我

float塌陷有关问题

程序代码需要用到的CSS样式body{ margin:0px; padding:0px; text-align:center; font:Arial, Helvetica, sans-serif; font-size:12px;}div,p,ul,li,h2,h3,h4,h5{ padding:0px; margin:0px;line-height:22px;}h1{ font-size:14px;}body >div{ text-align:left; margin:10px auto;}#b

清除浮动的深入理解

一.问题场景 html文件: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>blog</title> <link href="" rel="stylesheet"> <link rel="stylesheet" href="css/reset.css&qu

div塌陷,以及页面常用属性

HTML页面: 1)border: 1px solid red; 画出div边距 2)overflow:hidden; 在父级加该属性可以防止浮动塌陷 3)font-size: 13px; 设置字体大小 4)body{ margin: 0px; padding: 0px; } //去除页面默认边距 5)ul{ list-style-type: none; 去点 padding:0; /*内外边距为0,去除ul前空格*/ margin:0; } 6)在style(CSS样式)中 : 1.id选择器

HTML清楚塌陷问题

/* 清除浮动塌陷问题 */.clearfix:after { clear: both;} .clearfix:after,.clearfix:before { content: " "; display: table;} /* 清除浮动塌陷问题 */ .clearfix:after { clear: both; } .clearfix:after, .clearfix:before { content: " "; display: table; } 原文地址:ht