解决子级用css float浮动 而父级div没高度不能自适应高度

我因为没有系统的学过编程,所以写CSS代码一直存在一个问题,就是很多地方都是不断的加浮动,这样才能让父窗口的高度适应子窗口高度,如果不加就会父窗口没有高度,今天在调试时因为父窗口不能加float:left;,所以决定网上搜一下解决方法,终于找到最适合我用的。

假设我们有一段代码是:

<!DOCTYPE html>   
    <html>   
    <head>   
    <meta charset="utf-8" />   
    <title>父div不自适应高度实例</title>   
    <style>   
    .xiuyuanxi{width:500px;border:1px solid #000;padding:10px}   
    .xiuyuanxi-lf{ float:left; width:220px; height:100px; background:#000}   
    .xiuyuanxi-rt{ float:right; width:230px; height:100px; background:#06F}   
    .clear{ clear:both}   
    </style>   
    </head>   
    <body>   
    <div class="xiuuanxi">   
    <div class="xiuyuanxi-lf"></div>   
    <div class="xiuyuanxi-rt"></div>    
    </div>   
    </body>   
    </html>   

在父窗口调试不适应时,显示的样式是:

而我们想要最终显示的效果是:

这时候有三种解决方法:

方法一:对父级设置固定高度

对父级xiuyuanxi设置高度,如子级高度为100PX,那么设置父级高度也是100pX。

添加后的代码:

<!DOCTYPE html>   
    <html>   
    <head>   
    <meta charset="utf-8" />   
    <title>父div不自适应高度实例</title>   
    <style>   
    .xiuyuanxi{width:500px;border:1px solid #000;padding:10px;height:100px;}   
    .xiuyuanxi-lf{ float:left; width:220px; height:100px; background:#000}   
    .xiuyuanxi-rt{ float:right; width:230px; height:100px; background:#06F}   
    .clear{ clear:both}   
    </style>   
    </head>   
    <body>   
    <div class="xiuuanxi">   
    <div class="xiuyuanxi-lf"></div>   
    <div class="xiuyuanxi-rt"></div>    
    </div>   
    </body>   
    </html>   

此方法缺点,父级是固定高度,而不随内容高度自适应高度,没高度。此方法针对能确定父div内的内容高度情况下使用。

方法二:使用css clear清除浮动 

对父级div标签闭合</div>前加一个clear清除浮动对象。

加clear效果完整div css代码

<!DOCTYPE html>   
    <html>   
    <head>   
    <meta charset="utf-8" />   
    <title>父div不自适应高度实例</title>   
    <style>   
    .xiuyuanxi{width:500px;border:1px solid #000;padding:10px;}   
    .xiuyuanxi-lf{ float:left; width:220px; height:100px; background:#000}   
    .xiuyuanxi-rt{ float:right; width:230px; height:100px; background:#06F}   
    .clear{ clear:both}   
    </style>   
    </head>   
    <body>   
    <div class="xiuuanxi">   
    <div class="xiuyuanxi-lf"></div>   
    <div class="xiuyuanxi-rt"></div>   
    <div class="clear"></div>  
    </div>   
    </body>   
    </html>  


此方法需要注意是clear:both加的位置,不是对父级直接加clear样式,而是在父级</div>前加带clear对象盒子。

方法三:对父级样式加overflow样式【推荐】

此方法非常简单,也可以作为推荐解决父级不能被撑开自适应高度的方法,可以不增加div盒子对象,只需要对父级加一个overflow:hidden样式即可。

完整css div代码
 

<!DOCTYPE html>   
    <html>   
    <head>   
    <meta charset="utf-8" />   
    <title>父div不自适应高度实例</title>   
    <style>   
    .xiuyuanxi{width:500px;border:1px solid #000;padding:10px;overflow:hidden}   
    .xiuyuanxi-lf{ float:left; width:220px; height:100px; background:#000}   
    .xiuyuanxi-rt{ float:right; width:230px; height:100px; background:#06F}   
    .clear{ clear:both}   
    </style>   
    </head>   
    <body>   
    <div class="xiuuanxi">   
    <div class="xiuyuanxi-lf"></div>   
    <div class="xiuyuanxi-rt"></div>   
    </div>   
    </body>   
    </html>  


推荐。此方法为非常简单解决子用float,父div不能自适应高度,不能随父内容多少而自适应高度没有高度。

 

评论

大侠名号:   验证码: 点击我更换图片  

修远兮

在这里记录每一点自己需要的知识

添加创始人微信,一起交流心得

推荐文章RECOMMEND