子元素浮动后、父元素的高度自适应

一、普通情况下,即没有任何浮动样式等的情况下

设置父元素的高度为aotu 或100% 或者不设置,那么父元素会根据子元素的高度而自动调整自身高度。

栗子

<!--html代码-->
<div id="wrap">
    <img src="./1.png" alt="logo"/>
    <div id="content"></div>
</div>

CSS样式

#wrap{
            background: pink;
}
#content{
            width: 150px;
            height: 50px;
            background: greenyellow;
}
img{
            width: 100px;
            height: 100px;
}

显示如下图:

二、当子元素设置浮动后,父元素的高度就不会自动适应浮动的子元素了。

比如给上述栗子的img添加一个浮动样式: float:left,显示效果如图:

所以,为了让父元素的高度能自动适应浮动的子元素,方法有很多,我常用2种:

1.给父元素设置overflow:hidden,同时height不设置或者100%或者auto;

效果如图,父元素wrap的高度已经包含了2个子元素:浮动的img和不浮动的绿色div:

代码:

html代码:

<div id="wrap">
    <img src="./1.png" alt="logo"/>
    <div id="content"></div>
</div>

CSS样式代码:

        #wrap{
            background: pink;
            overflow: hidden;
        }
        #content{
            width: 150px;
            height: 50px;
            background: greenyellow;
        }
        img{
            width: 100px;
            height: 100px;
            float: left;
        }

2、父级元素内中的最下面新增一个标签,设置clear:both;

效果同上,不上图了

html代码:

<div id="wrap">
    <img src="./1.png" alt="logo"/>
    <div id="content"></div>
    <div class="clear"></div>
</div>

CSS样式代码:

#wrap{
            background: pink;         

 }
 #content{
            width: 150px;
            height: 50px;
            background: greenyellow;
}
img{
            width: 100px;
            height: 100px;
            float: left;
}
.clear{
            clear: both;//重点代码
}
时间: 2024-10-02 14:34:29

子元素浮动后、父元素的高度自适应的相关文章

子元素浮动后,父元素高度自动增加

father:after{ content:"."; height:0; visibility:hidden; display:block; clear:both; } 清除"闭合(清除)浮动"的方法,主要是一下四种: 1.    额外标签法 这种方法就是向父容器的末尾再插入一个额外的标签,并令其清除浮动(clear)以撑大父容器.这种方法浏览器兼容性好,没有什么问题,缺点就是需要额外的(而且通常是无语义的)标签.我个人不喜欢这种方法,但是它确实是W3C推荐的方法

css 子元素浮动后父元素没有高度导致页面变形的解决办法

<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><style type="text/css">.par{width: 100%;height: auto;border: 1px solid red;}.left{width: 40%;float: left;height: 50px;background:

子元素浮动,父元素高度为0现象解释和原理浅见

有的人在写页子的时候常常会碰见这样的一个问题,就是有一个父级的div下面有子元素,子元素浮动起来后,父元素的高度变成0,撑不起来父级了. 现在先不说解决办法,先说下float属性,float定义:float 属性定义元素在哪个方向浮动.以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动.浮动元素会生成一个块级框,而不论它本身是何种元素.(摘自:w3c). 从定义看出,其实float属性一开始是被应用与图片,来形成文字环绕效果的,任何的元素只要定义了float属

关于子元素的margin-top溢出和元素浮动对父元素高度影响解决方案

以下是个人学习笔记,仅供学习参考. 1.关于子元素的margin-top作用在无margin-top-border的父元素上导致子元素的margin-top溢出问题. 在给没有margin-top-border父元素中的子元素添加margin-top时,发现没有直接表现出来,而是作用到父元素身上,就会导致子元素的margin-top溢出. 条件: 1.父元素没有上边框 2.为第一个子元素设置上外边距时 解决方案: 1.为父元素增加上边框 弊端:父元素会变高 2.通过为父元素设置上内边距来取代子元

清除盒子内子元素浮动导致父元素塌陷的5种方法

更详细的解释请移动到: 地址1:http://www.cnblogs.com/chedabang/p/5973601.html 地址2:https://www.cnblogs.com/libin-1/p/5975367.html 盒子塌陷是什么? 何为盒子塌陷,盒子塌陷是由于子元素浮动导致的子元素脱离标准文档流,父元素无法获取子元素的高度而出现的一种现象. 盒子塌陷(如下): 盒子未塌陷(如下):   HTML/CSS代码 .... // css .box-wrapper { border: 5

CSS关于子元素设置了float属性后父元素高度为0的解释和解决方法

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html lang="en"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8&q

子div用了float浮动之后,如何撑开父元素,让父元素div自动适应高度的问题

方法一: html: <div id="all1"> <div id="left1">1</div> <div id="left2">1</div> <div style=" clear:both; "></div> </div> css: #left1{ float:left;width:200px;} #left2{ float

[装载]float元素浮动后高度不一致导致错位的解决办方法

原文出处:float元素浮动后高度不一致导致错位的解决办方法 给换行后的第一个li添加clear:left 如: ul li{float:left;width:160px;} .c{clear:left;} <li>1</li> <li>2</li> <li>3</li> <li class="c">4</li> <li>5</li> <li>6</

【前端】浮动后父容器高度自适应

float:left; overflow:hidden; 当一个容器内元素都浮动后,它将高度将不会随着内部元素高度的添加而添加,所以造成内容元素的显示超出了容器. 在我们没有为容器设置高度的时候,容器的高度是自适应的.然而,当容器中的元素都浮动以后,脱离了文档流.容器的高度因为自适应的原因就为0了. 为了方便大家观察,我为父容器设置了边框.内间距.原本上面四张图片是在上面的容器中的.将图片设置左浮动以后,容器的高度就为0了. Q1:这会为我们带来什么影响? A1:浏览器在解析下一个容器的时候,默

JS子元素oumouseover触发父元素onmouseout

JavaScript中,父元素包含子元素: 当父级设置onmouseover及onmouseout时,鼠标从父级移入子级,则触发父级的onmouseout后又触发onmouseover:从子级移入父级后再次触发父级的oumouseout后又触发onmouseover.而如果onmouseover内又应用了计时器便会存在较大的问题.下面针对此问题给出解决方案. 首先,在给出解决方案之前,必须先弄清楚几个对象及方法,分别如下: 1.事件对象 2.事件对象相关属性(只针对onmouseover及onm