【问题标题】:Equal width spacing with div table与 div 表等宽间距
【发布时间】:2014-08-26 00:52:28
【问题描述】:

我想弄清楚为什么我的 div 表中的第一列总是比其他列有更多的空间。考虑到我将相同的 CSS 平等地应用于所有列,我不明白它有什么特别之处。我试图为所有列保持相同的宽度。但是看看我有什么:

我的目标是让 Value1、Value 2、Value3 和 Value 4 之间的空间相等。这是我的 CSS 及其 HTML:

.Table2
{
    display: table;
    background:white;
}

.Row2
{
    display: table-row;
}


.Cell3
{
    display: table-cell;
    white-space:nowrap;
    padding-left: 5px;
    padding-right: 5px;
}


.Cell4
{
    display: table-cell;
    white-space:nowrap;
    padding-left: 5px;
    padding-right: 5px;
    border-top:1px solid;
}

.Cell5
{
    display: table-cell;
    white-space:nowrap;
    padding-left: 5px;
    padding-right: 5px;
    border-bottom:1px solid;
}

我进行了研究,这就是 div 表的制作方式。根据我看到的示例,它们都具有相同的相等间距,但为什么我有一列的空间比其他列大?我不明白我的 CSS 中的 Value 1 列有什么特别之处 这是我的 HTML:

<div class="Table2">
   <div class="Row2">
      <div class="Cell3">
         <p><font class="textlargedarkblue"> Info: </font> <font class="textTotalPrice1"> $1.00</font></p>
      </div>
   </div>
   <div class="Row2">
      <div class="Cell4">
        <p><font class="textsmalldarkblue"> Value1 </font></p>
      </div>
      <div class="Cell4">
        <p><font class="textsmall"> Value2 </font></p>
      </div>
      <div class="Cell4">
        <p><font class="textsmall"> Value3 </font></p>
      </div>
      <div class="Cell4">
        <p><font class="textlittle">Value4 </font></p>
      </div>
  </div>
</div>

有人可以向我解释如何让所有值列具有相同的空间宽度吗?

附: Value1 的 CSS 本身没有任何间距,它只是定义字体和颜色:

.textlargedarkblue{font-family: Verdana, Geneva, sans-serif;font-size:16px; color:darkblue; font-weight: bold}

Value2..Value4 也一样,所以这不应该是问题。

【问题讨论】:

  • 离题:为什么不使用&lt;table&gt;,来显示表格内容???
  • 您的第一个表格行中只有一个单元格 - 第二行中的第二个单元格的宽度完全相同,因为这就是表格应该的工作方式.如果您只想在第一行中显示一个值并且不想产生这种效果 - 那么首先使该行不成为表格的一部分(通过删除.Row2 { display: table-row; }
  • 天啊!谢谢CBroe!第一排是罪魁祸首,我完全忘记了!当我删除它时,一切都变得均匀间隔,所以它肯定有效果,现在我知道要解决的问题了。非常感谢!

标签: html css


【解决方案1】:

该列正在拉伸以适合您的 Info: $1.00 行。你应该把它放在一个 div 或单独的东西中,因为它不是表格的一部分。或者将该行设为不同的类并为其删除 display: table-row;

【讨论】:

    【解决方案2】:

    我的诚实意见是,你应该使用表格来解决这个问题......它们是为了显示表格内容而创建的。

    <table>
        <tr>
            <th colspan="4">Info: <span>$1.00</span></th>
        </tr>
        <tr>
            <td>Value 1</td>
            <td>Value 2</td>
            <td>Value 3</td>
            <td>Value 4</td>
        </tr>
    </table>
    

    CSS:

    table {
        border: 0;
        border-collapse: collapse;
    }
    table th {
        padding: 0 5px;
        text-align: left;
    }
    table td {
        border-top: 1px solid black;
    }
    

    DEMO.

    【讨论】:

    • 非常感谢您的建议!是的,我最初使用表格实现了这一切并且没有任何问题,不幸的是,这是针对移动设备视图的,根据我阅读的内容,div 比表格更有效,因为有人提到它们需要更少的代码。我有一个非常大的数据集,真的需要“压缩”尽可能多的代码:) 再次感谢。
    • 你的代码怎么少了??你有一个div而不是table,一个div而不是tr,还有一个div而不是td......同样数量的元素......我同意在某些情况下,在谈论响应式设计时,div 更灵活。但这完全取决于您要显示什么数据,以及您希望如何显示。
    • 坚持回答问题。如果您想建议他们将标记更改为其他内容,请使用 cmets。根据提供的信息,我没有理由相信这是表格数据。
    猜你喜欢
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2013-09-12
    相关资源
    最近更新 更多