• css float引发的塌陷问题及解决方案


    如果父元素高度自适应,而且子元素有设置float left/right, 那么此时父元素的高度不会随子元素而变,如果父元素不包含任何的可见背景,这个问题会很难被注意到,但是这是一个很重要的问题。

      collapse

    html代码:

    1 <div id="container" class="">
    2     <div class="left"></div>
    3 </div>

    css代码:

     1 #container{
     2     width: 1000px;
     3     margin: 0 auto;
     4     height: auto;
     5     background: #ccc;
     6 }
     7 #container .left{
     8     width: 200px;
     9     background: blue;
    10     height: 200px;
    11     float: left;
    12 }

    浏览器表现:虽然设置了父元素container的background,但是很明显container的高度为0

    为了防止怪异的布局和跨浏览器的问题,塌陷问题几乎总是被要处理的。如果你很明确的知道接下来的元素会是什么,可以使用 clear:both; 来清除浮动。这个方法很不错,它不需要 hack,不添加额外的元素也使得它有良好的语义性。此外看一下其他三种常用的解决方案,

    方案一: 父元素设置overflow

    css:

    1 #container{
    2     width: 1000px;
    3     margin: 0 auto;
    4     height: auto;
    5     background: #ccc;
    6 }

    如果父元素的这个属性设置为 auto 或者 hidden,父元素就会扩展以包含浮动,但是overflow 属性不是为了清除浮动而定义的,要小心容易覆盖掉内容或者触发不必要的滚动条。

    方案二: 内容最后加空div方法

    有时候会用其他元素,但是div是比较常用的,因为div本身不会没有浏览器默认样式,没有特殊功能,而且不容易被自己写的css样式化。

    html代码:

    1 <div id="container" class="">
    2     <div class="left"></div>
    3     <div class="clearboth"></div>
    4 </div>

    css:

    1 #container .clearboth{
    2     clear: both;
    3 }

    方案三:伪选择符(:after) 推荐

    给父元素添加clearfix样式

    html代码:

    1 <div id="container" class="clearfix">
    2     <div class="left"></div>
    3 </div>

    css

    1 .clearfix:after{
    2     content: "ddd";
    3     visibility: hidden;
    4     clear: both;
    5     display: block;
    6     height: 0;
    7 }

    以上三种方案均可解决float产生的塌陷问题,如下:

  • 相关阅读:
    nginx 开机自动启动
    Linux 常用命令
    php中数组操作函数
    Windows系统下GitBash显示的中文乱码解决方案
    更改Git默认编辑器为notepad++
    【js】函数问题
    【JS】JavaScript中的参数传递
    Android基础整理之四大组件Activity
    关于BaseAdapter的使用及优化心得(一)
    使用MySQL Workbench建立数据库,建立新的表,向表中添加数据
  • 原文地址:https://www.cnblogs.com/teamobaby/p/3829531.html
Copyright © 2020-2023  润新知