框和多列列表的奇怪CSS行为

时间:2013-09-14 22:10:59

标签: html css list

我想要一个灰色框内的三列列表:

<div style="width:500px;font-size:21px;background:#f5f5f5;margin:0 0 40px 100px;padding:1px;border:3px solid black;">
  <div style="text-align:center;margin:10px 0px 0px 0px;"><strong>Table of Contents</strong></div>
  <ul style="float:left;width:33%;list-style-type:none;">
   <li>Book 1.</li>
   <li>Part 1.</li>
   <li><a href="#S1">Section 1.</a></li>
   <li><a href="#S2">Section 2.</a></li>
   <li><a href="#S3">Section 3.</a></li>
  </ul>
  <ul style="float:left;width:33%;list-style-type:none;">
   <li>Book 2.</li>
   <li>Part 1.</li>
   <li><a href="#S4">Section 1.</a></li>
   <li><a href="#S5">Section 2.</a></li>
   <li><a href="#S6">Section 3.</a></li>
  </ul>
  <ul style="float:left;width:33%;list-style-type:none;">
   <li>Book 3.</li>
   <li>Part 1.</li>
   <li><a href="#S7">Section 1.</a></li>
   <li><a href="#S8">Section 2.</a></li>
   <li><a href="#S9">Section 3.</a></li>
  </ul>
</div>

但结果并不漂亮:http://jsfiddle.net/gq2gh/

任何人都可以解释发生了什么,和/或修复它吗?感谢。

2 个答案:

答案 0 :(得分:1)

您正在使用width:33%。 33%与您的<body>标记相关,这使得列太宽。在px中指定绝对宽度。

答案 1 :(得分:1)

好的,如果你让我真诚,如果你打算创建,为什么不使用<table>?如果使用简单的标签可以实现您想要的功能,那么为什么要使用CSS?

我知道由于过去的设计,<table>的使用已被“妖魔化”,但在您的情况下,使用它不仅更简单,而且更正确,因为您将使用<强烈>创建来解决您的问题。

以下是fiddle的代码,展示了我所说的内容。

<div class="outer_box">
    <table>
        <tr>
            <th colspan="3">Table of Contents</th>
        </tr>
        <tr>
            <td>
                <ul style="list-style-type:none;">
                    <li>Book 1.</li>
                    <li>Part 1.</li>
                    <li><a href="#S1">Section 1.</a></li>
                    <li><a href="#S2">Section 2.</a></li>
                    <li><a href="#S3">Section 3.</a></li>
                </ul>
            </td>
            <td>
                <ul style="list-style-type:none;">
                    <li>Book 2.</li>
                    <li>Part 1.</li>
                    <li><a href="#S4">Section 1.</a></li>
                    <li><a href="#S5">Section 2.</a></li>
                    <li><a href="#S6">Section 3.</a></li>
                </ul>
            </td>
            <td>
                <ul style="list-style-type:none;">
                    <li>Book 3.</li>
                    <li>Part 1.</li>
                    <li><a href="#S7">Section 1.</a></li>
                    <li><a href="#S8">Section 2.</a></li>
                    <li><a href="#S9">Section 3.</a></li>
                </ul>
            </td>
        </tr>
    </table>
</div>