zoukankan      html  css  js  c++  java
  • 子div有内容,父div高度为0的解决方法

    原始代码:

    <html> 
    <head> 
    <title>Float</title> 
    <style type = "text/css"> 
    ul { 
    list-style-type: none; 
     800px; 
    background: blue; 
    } 
    li { 
    float: left; 
    } 
    </style> 
    </head> 
    <body> 
    <ul> 
    <li><img src = "1.jpg" /></li> 
    <li><img src = "2.jpg" /></li> 
    <li><img src = "3.jpg" /></li> 
    <li><img src = "4.jpg" /></li> 
    <li><img src = "5.jpg" /></li> 
    <li><img src = "6.jpg" /></li> 
    </ul> 
    </body> 
    </html>

    子div有内容,父div高度为0是因为子元素设置了 float属性的缘故。

    解决方法

    1 给包含元素设置高度height 值。

    ul { 
    list-style-type: none; 
     800px; 
    background: blue; 
    height: 300px; /*添加高度属性*/ 
    }

    2 利用overflow属性 
    可以包含元素设置overflow属性,并设置属性值为auto或者hidden。

    ul { 
    list-style-type: none; 
     800px; 
    background: blue; 
    overflow: hidden; /*添加overflow属性,可以设置为auto或者hidden*/ 
    }

    3 添加一个空的div 
    这种方法是添加一个空的div,这个div和浮动元素同一级别,且位于浮动元素的最后。这种方法要改动两个地方,一个是html代码,另一个是必须要为这个div添加一个clear属性: 

    <html> 
    <head> 
    <title>Float</title> 
    <style type = "text/css"> 
    ul { 
    list-style-type: none; 
     800px; 
    background: blue; 
    } 
    li { 
    float: left; 
    } 
    /*为添加的空div设置的样式*/ 
    .clearDiv { 
    clear: both; 
    } 
    </style> 
    </head> 
    <body> 
    <ul> 
    <li><img src = "1.jpg" /></li> 
    <li><img src = "2.jpg" /></li> 
    <li><img src = "3.jpg" /></li> 
    <li><img src = "4.jpg" /></li> 
    <li><img src = "5.jpg" /></li> 
    <li><img src = "6.jpg" /></li> 
    <div class = "clearDiv"></div> <!--新添加的空div,它和浮动元素同一级别,且位于最后--> 
    </ul> 
    </body> 
    </html> 

    4 利用伪元素:after 
    用这种方法时要为包含元素先添加一个类名,这里为ul标签设置的类名.clearUl,代码如下: 

    <html> 
    <head> 
    <title>Float</title> 
    <style type = "text/css"> 
    ul { 
    list-style-type: none; 
     800px; 
    background: blue; 
    } 
    li { 
    float: left; 
    } 
    /*利用:after伪元素*/ 
    .clearUl:after { 
    content:""; 
    display: block; 
    clear: both; 
    } 
    </style> 
    </head> 
    <body> 
    <ul class = "clearUl"> <!--为包含的外围元素设置类--> 
    <li><img src = "1.jpg" /></li> 
    <li><img src = "2.jpg" /></li> 
    <li><img src = "3.jpg" /></li> 
    <li><img src = "4.jpg" /></li> 
    <li><img src = "5.jpg" /></li> 
    <li><img src = "6.jpg" /></li> 
    </ul> 
    </body> 
    </html> 

    在:after为元素里面用到了content属性,这样这条样式的意思是在ul元素后面生成指定的内容,这里生成的内容是一个空字符串,因为只是让它来消除ul标签的高度折叠,并不让它显示出来。还有,这条样式里有display属性,要将他设置成block,这样clear属性才会起作用,因为清除操作只作用于块级元素,它的原理是为要执行清除操作的元素添加上边距,以此让元素降到浮动元素的下面,而操作行内元素的上边距不起作用。

    当我们没有给父div设置高度的时候,子div的高度,就会撑开父div,而在另一个方面,当我们给父div加上一个高度值,那么无论子div的高度是多少,父div高度都是我们设定的值。而当子div的高度超过父div的高度的时候,超出的部分就会被隐藏。

    -------------------

    原文链接:https://blog.csdn.net/cedar777/article/details/53886182

     

  • 相关阅读:
    Ubuntu-18.04设置花生壳内网穿透
    Ubuntu开启SSH
    Ubuntu查看版本信息
    Linux之使用mount挂载ISO镜像
    druid参数配置说明
    [转]Java多线程学习(吐血超详细总结)
    eclipse 更改官方配色
    Spring AOP拦截对Controller的请求时的配置失败
    Spring Security3详细配置
    “java.lang.IllegalArgumentException: Failed to evaluate expression ‘ROLE_USER’”报错的解决
  • 原文地址:https://www.cnblogs.com/gwkzb/p/12511883.html
Copyright © 2011-2022 走看看