HTML CSS DIV 前端 看我详细说明,

HTML CSS DIV 前端
看我详细说明,div1里面有两个DIV分别是A和B,

A设置有固定高度,B的高度为auto,

B里面有一个8个ul,ul的高度为auto,并且设置了向左浮动,

ul里面有一个li,li设置了固定高度,

问题是:我给div1、B、ul设置了边框线后发现,这三个的高度居然是0,这是什么原因?(div1、A、B、ul均未设置浮动)

最好的方法就是把代码实现一遍,然后因为很多元素没有设置高度和宽度,是被撑不起来的,你看到的也就是空的了,设置了边框只看到了一条线。不是高度为0,而是你里面没有填充内容,要不高度没被撑起来,要不宽度没被撑起来。

注:你一开始说ul设置左浮动,最后括号里有写到ul没有设置浮动。

如下代码,ul为浮动,实现过程:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
    <title>Document</title>
<style>
  *{padding:0;margin:0;}
  .div-a{height: 200px;}
  .div-b{height: auto;}
  ul{height: auto; float: left;background:gray;border:1px solid green;}
  li{height:120px;}
  .div1{background:red;border:1px solid #000;height:auto;}
  .div-b{background:#ccc;boder:1px solid blue;}
</style>
</head>
<body>
<div class="div1">
    <div class="div-a"></div>
    <div class="div-b">
    div-b的内容
      <ul>
        <li>第一个ul下的li</li>
      </ul>
      <ul>
        <li></li>
      </ul>
      <ul>
        <li></li>
      </ul>
      <ul>
        <li></li>
      </ul>
      <ul>
        <li></li>
      </ul>
      <ul>
        <li></li>
      </ul>
      <ul>
        <li></li>
      </ul>
      <ul>
        <li></li>
      </ul>
    </div>
</div>
</body>
</html>

如下代码,ul不浮动,实现过程:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
    <title>Document</title>
<style>
  *{padding:0;margin:0;}
  .div-a{height: 200px;}
  .div-b{height: auto;}
  ul{height: auto; background:gray;border:1px solid green;}
  li{height:120px;}
  .div1{background:red;border:1px solid #000;height:auto;}
  .div-b{background:#ccc;boder:1px solid blue;}
</style>
</head>
<body>
<div class="div1">
    <div class="div-a"></div>
    <div class="div-b">
    div-b的内容
      <ul>
        <li>第一个ul下的li</li>
      </ul>
      <ul>
        <li></li>
      </ul>
      <ul>
        <li></li>
      </ul>
      <ul>
        <li></li>
      </ul>
      <ul>
        <li></li>
      </ul>
      <ul>
        <li></li>
      </ul>
      <ul>
        <li></li>
      </ul>
      <ul>
        <li></li>
      </ul>
    </div>
</div>
</body>
</html>
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-16
有点前后矛盾啊,ul究竟有没有设置浮动啊?li有没有浮动?追问

ul没有浮动 li设置了浮动

我加一下你,给你发代码你帮我看看

追答

那就对了。你在li的后面清除一下浮动,比如加一个 ,那再看看div1、B、ul的高度是不是0

追问

我试试

还是不可以

追答

<div class=div1>

    <div class=B>

        <ul>

            <li>....</li>

            <br style="clear:both"/>

       </ul>

   </div>

</div>

追问

这样啊

好的 谢谢

果然是这个问题

现在好了

这个clear:both就只能写在标签里吗,还能怎么用

追答

可以用在任何的块级元素内啊,比如

补充说一下:
元素浮动后,它在父元素中占用的位置就会被去掉,这时候如果父元素中没有其他内容,而且父元素的height设为auto,那么父元素的height自然就是0咯。只要在浮动元素的后面清除浮动,就是告诉父元素从这里开始就不是浮动内容了,这样父元素就会把浮动元素原来(即在没有浮动的情况下)所占用的位置还回来,然后后面假如还有内容就会从这个位置开始继续显示,这样的话父元素的高度就会自然被撑开了,height也就不是0了

本回答被提问者采纳
相似回答