【问题标题】:Table-cell doesn't fit its content表格单元格不适合其内容
【发布时间】:2016-11-11 07:28:12
【问题描述】:

我有带有 CSS 和结构的表格:

table, td {
	border: 3px solid #208000;
	border-collapse: collapse;
	font-size: 75%;
}
.headingTable {
	text-align: center;	
	padding: 1%;
}
@media only screen and (min-width: 768px) {
  table, td {
	border: 3px solid #208000;
	font-size: 100%;
  }
  .headingTable {
	font-size: 100%;
  }
}
@media only screen and (min-width: 1200px){
  table, td {
      border: 5px solid #208000;
  }
  .headingTable {
      font-size: 125%;	
  }
}
<table>
    <caption>Table caption</caption>
    <thead>
        <tr>
            <td class = "headingTable">First</td>
            <td class = "headingTable">Second</td>
            <td class = "headingTable">Third</td>
            <td class = "headingTable">Fourth</td>
            <td class = "headingTable">Fifth</td>
        </tr>	
    </thead>
    <tbody>					
        <tr>
            <td class = "headingTable">1</td>
            <td>Lorem ipsum dolor </td>
            <td>sit amet, consectetur adipiscing elit. In pulvinar maximus massa, id sollicitudin urna iaculis sit amet. </td>
            <td>Mauris tincidunt augue erat, ac </td>
            <td> accumsan justo volutpat id</td>
        </tr>
    </tbody>
</table>

由于 headerTable 类,在屏幕宽度超过 1200 像素时,标题和第一列的文本会增加 25% 的字体大小。
在此屏幕宽度下,广告中的第一个单元格不适合其内容(“第一个”)。
第一列仅包含一位数字,因此它们不会溢出单元格的边界。
另外我必须提到该表包含大约 40 行。
那么,问题是我可以做些什么来使广告中的第一个单元格适合其内容?

【问题讨论】:

  • padding: 1%; 删除并查看
  • @Dherya 但在其他情况下将没有填充。
  • .headingTable { text-align: left;}
  • 字体更小,没有填充? thead tr .headingTable:first-child { ...
  • @Dherya 你是对的! '填充:1% 0;'纠正这件事!但也许你知道它的原因吗?这种溢出的机制是什么?为什么它只发生在 'font-size: 125%' 上?

标签: css css-tables


【解决方案1】:

这将解决您的问题&lt;td&gt;&lt;div class = "headingTable"&gt; First&lt;/div&gt;&lt;/td&gt;

table, td {
	border: 3px solid #208000;
	border-collapse: collapse;
	font-size: 75%;
}
.headingTable {
	text-align: center;	
	padding: 1%;
}
@media only screen and (min-width: 768px) {
  table, td {
	border: 3px solid #208000;
	font-size: 100%;
  }
  .headingTable {
	font-size: 100%;
  }
}
@media only screen and (min-width: 1200px){
  table, td {
      border: 5px solid #208000;
  }
  .headingTable {
      font-size: 125%;	
  }
}
<table>
    <caption>Table caption</caption>
    <thead>
        <tr>
            <td><div class = "headingTable"> First</div></td>
            <td class = "headingTable">Second</td>
            <td class = "headingTable">Third</td>
            <td class = "headingTable">Fourth</td>
            <td class = "headingTable">Fifth</td>
        </tr>	
    </thead>
    <tbody>					
        <tr>
            <td class = "headingTable">1</td>
            <td>Lorem ipsum dolor </td>
            <td>sit amet, consectetur adipiscing elit. In pulvinar maximus massa, id sollicitudin urna iaculis sit amet. </td>
            <td>Mauris tincidunt augue erat, ac </td>
            <td> accumsan justo volutpat id</td>
        </tr>
    </tbody>
</table>

【讨论】:

  • 谢谢!它也有效!以及你提到的padding: 0;
  • 好,但不是 100% 的解决方案 - 您从“div”宽度获得填充,但原始代码从“table”宽度获得填充
【解决方案2】:

正如@Dherya 建议的那样,删除.headingTablepadding 可以解决问题。现在,出现溢出的原因是当 DOM 计算标题 padding-left + "First" + padding-right 的宽度时,它大于下面单元格 padding-left + "1" + padding-right 的宽度。所以,它必须溢出。 (请注意,此处列中最宽的单元格设置了标题的宽度。)

【讨论】:

  • 那么,你的意思是标题单元格下方的列中的单元格确定了列宽?
  • 是的,我愿意。为了证明,请使用您的初始代码尝试此操作:向“1”单元格添加更多文本(例如 lorem ipsum 文本)。您会发现现在溢出的是单元格,而不是标题。所以,这个案例和你最初的案例都可以通过删除.headingTable上的padding来解决。
  • 你绝对是对的!我已经试过了,一切都如你所说。谢谢你的解释!
猜你喜欢
  • 2011-09-15
  • 2012-08-29
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
  • 2012-07-01
  • 1970-01-01
  • 2013-12-31
相关资源
最近更新 更多