无法覆盖CSS填充

时间:2011-08-15 20:56:57

标签: css google-chrome

我有以下适用于表格的CSS:

.myTable
{
  width: 99%;
  border-collapse:collapse;
  word-wrap:break-word;
  border:1px solid #28282C;
  background-color: #F7F6F3;
}

.myTable td
{    
  padding: 16px 4px 0px 4px;
  text-align:left;
  vertical-align:top;    
}

因为我不希望将填充应用于表格中的表单元素,所以我也有这个CSS:

.myTable td input
{    
  padding:0px 0px 0px 0px !important;     
}

然而,这不起作用。衬垫固执地保持不动,除非我放入更大的衬垫。例如,如果我这样做:

.myTable td input
{    
  padding:50px 50px 50px 50px !important;     
}

然后使用较新的巨大填充正确覆盖表单元素。我在这里错过了什么?如何使用CSS覆盖/取消子元素的填充?

编辑:我在挖掘渲染的HTML后想通了。输入元素很好,原因是ASP.NET在其自己的TD中的一个checkboxlist中呈现每个复选框,它从样式表接收填充并使其看起来像输入被填充。谢谢大家

2 个答案:

答案 0 :(得分:2)

这与你输入的完全一样。您已将填充应用于TD。这适用于每个TD的填充,无论其中包含什么。

除了 TD上的填充设置之外,您的第二种输入样式将是。所以它不会覆盖任何东西。

您可以尝试将负边距应用于INPUT以对抗父TD中的填充。不确定所有浏览器是否都喜欢这样。

或者,给TD输入他们自己的类:

<td class="withInput">

然后你可以在你的css中使用这个选择器:

td.withInput {padding: 0px;}

答案 1 :(得分:0)

您的代码没有任何问题。您甚至可以删除INPUT的CSS。 INPUT不会从父TD继承填充值。 向我们展示页面,以便我们为您提供帮助。

唯一的问题是IE7及更早版本。在这种情况下,请为您的INPUT元素使用NEGATIVE MARGIN。

IE7和IE6的黑客

input{
*margin: -2px;
_margin: -2px;
}