代码之家  ›  专栏  ›  技术社区  ›  Mark Brittingham

为什么这些Div标签不能正确嵌套?

  •  0
  • Mark Brittingham  · 技术社区  · 16 年前

    .ListSetContainer 
    { 
      background-color:Red;
      border:1px solid #999999;
      text-align:center;
    }
    
    .ListSet
    {
      margin: 2px 2px 2px 16px;
      float: left;
      clear:none;
    }
    
    .ListSet ul 
    {
      background-color: #EEEEEE;
      border: 1px solid #999;
      margin: 2px 2px 16px 2px;
      padding: 6px 6px 0px 6px;
    }
    

      <div style="clear:both;">
        <h4>Class Dates, Counts and Participants</h4>
        <div class='ListSetContainer'>
          <div class='ListSet'>
            <ul>...{Class information here...}
            </ul>
          </div>
          <div class='ListSet'>
            <ul>...{Class information here...}
            </ul>
          </div>
          <div class='ListSet'>
            <ul>...{Class information here...}
            </ul>
          </div>
        </div>  -- End of First ListSetContainer
    
        <div class='ListSetContainer'>
          <div class='ListSet'>
            <ul>...{Class information here...}
            </ul>
          </div>
          <div class='ListSet'>
            <ul>...{Class information here...}
            </ul>
          </div>
        </div>  -- End of Second ListSetContainer
      </div>  -- End of surrounding Div
    

    但是,我得到的不是水平排列三个div,然后是第二行两个div,而是这样:

    Linked Image

    几点注意事项。首先,请注意HTML中的层次结构(ListSetContainer div包含ListSet div)没有反映在输出中。其次,ListSetContainer div只有一个像素高,没有显示背景!(我使用红色背景只是为了确保我不会错过它)。整个封闭的div只是被压扁了,而内部div则自行漂浮出来。手动设置高度不起作用,因为带有列表的内部div是可变高度的(而且看起来很奇怪)。如果我移除浮点数:left;从内部div开始,它们会扩展到屏幕的整个宽度,因此我无法连续获得三个div。所以…我不知所措。

    5 回复  |  直到 16 年前
        1
  •  4
  •   tvanfosson    16 年前

    clear: both 。这应该使它开始一个新的ListSets“行”。

        2
  •  1
  •   Richard    16 年前

    ListSetContainer 没有设定宽度。我希望它们都能放在宽屏显示器上的一排。

    你可以试试:

    .ListSetContainer {
        width: 300px;
    }
    
    .ListSet {
        clear: none;
        float: left;
        width: 100px;
    }
    

        3
  •  1
  •   Ross    16 年前

    问题在于,你的ListSet类需要“display:block;”添加或“float:left;”删除,如果添加块,则向ListSetContainer类添加“display:block;width:100%”。

        4
  •  1
  •   Gumbo    16 年前

    使用 clear:both 为了 .ListSetContainer

    但你仍然可以使用一个列表来改进这一点:

    <style type="text/css">
        .ListSetContainer {
            list-style: none;
            padding: 0;
        }
        .ListSetContainer li {
            width: 33.333%;
            float: left;
        }
        .ListSetContainer li li {
            width: auto;
            float: none;
        }
    </style>
    <ul class="ListSetContainer">
        <li><ul><li>...{Class information here...}</li></ul></li>
        <li><ul><li>...{Class information here...}</li></ul></li>
        <li><ul><li>...{Class information here...}</li></ul></li>
        <li><ul><li>...{Class information here...}</li></ul></li>
        <li><ul><li>...{Class information here...}</li></ul></li>
    </ul>
    
        5
  •  1
  •   Cory R. King    16 年前

    clear: both