Html 为什么父类重写子类
假设以下代码:Html 为什么父类重写子类,html,css,Html,Css,假设以下代码: <style> .child {border:0px solid #000; border-spacing:0px;} .child td {border:0px solid #000; } .child th {border:0px solid #000; } .parent {border:1px solid #000; border-spacing:0px;} .parent td {bord
<style>
.child {border:0px solid #000; border-spacing:0px;}
.child td {border:0px solid #000; }
.child th {border:0px solid #000; }
.parent {border:1px solid #000; border-spacing:0px;}
.parent td {border:1px solid #000; }
.parent th {border:1px solid #000; }
</style>
<table class="parent">
<tr>
<th>title</th>
</tr>
<tr>
<td>stuff</td>
</tr>
<tr>
<td>
<table class="child">
<tr>
<th>Name: </th>
<td><input name="Name" value="stuff"></td>
</tr>
</table>
</td>
</tr>
</table>
.child{border:0px solid#000;边框间距:0px;}
.child td{border:0px solid#000;}
.child th{border:0px solid#000;}
.parent{border:1px solid#000;边框间距:0px;}
.parent td{border:1px solid#000;}
.parent th{border:1px solid#000;}
标题
东西
姓名:
我对CSS继承的理解是,子表中的元素将没有边框,因为它们将查找最接近的样式化父级以及该类的固有细节。但是,在本例中,子表在th和td元素上显示边框(尽管不是在表本身上)。这表明子类对于表工作正常,但它没有传播到子元素
这是有意的吗?解决这个问题的正确方法是什么?如果是
父类
类,您的CSS将针对所有td
和th
。这完全是预期的行为
当您不以特定的类为目标时,则对任何类应用最相关的css-这发生在样式定义中找到的最后一个最适用的规则中,并应用相同的规则
您提到要做的事情,可以通过针对类的直接后代来实现,如下所示:
.parent {
border:1px solid #000;
border-spacing:0px;
}
.parent > td { /* > will ensure only td of parent class is targeted */
border:1px solid #000;
}
.parent > th {
border:1px solid #000;
}
更新
要在注释中回答您的查询,请更改CSS声明的顺序
CSS更改颜色以更好地理解
您的CSS将针对所有td
和th
(如果是parent
类)。这完全是预期的行为
当您不以特定的类为目标时,则对任何类应用最相关的css-这发生在样式定义中找到的最后一个最适用的规则中,并应用相同的规则
您提到要做的事情,可以通过针对类的直接后代来实现,如下所示:
.parent {
border:1px solid #000;
border-spacing:0px;
}
.parent > td { /* > will ensure only td of parent class is targeted */
border:1px solid #000;
}
.parent > th {
border:1px solid #000;
}
更新
要在注释中回答您的查询,请更改CSS声明的顺序
CSS更改颜色以更好地理解
您的CSS将针对所有td
和th
(如果是parent
类)。这完全是预期的行为
当您不以特定的类为目标时,则对任何类应用最相关的css-这发生在样式定义中找到的最后一个最适用的规则中,并应用相同的规则
您提到要做的事情,可以通过针对类的直接后代来实现,如下所示:
.parent {
border:1px solid #000;
border-spacing:0px;
}
.parent > td { /* > will ensure only td of parent class is targeted */
border:1px solid #000;
}
.parent > th {
border:1px solid #000;
}
更新
要在注释中回答您的查询,请更改CSS声明的顺序
CSS更改颜色以更好地理解
您的CSS将针对所有td
和th
(如果是parent
类)。这完全是预期的行为
当您不以特定的类为目标时,则对任何类应用最相关的css-这发生在样式定义中找到的最后一个最适用的规则中,并应用相同的规则
您提到要做的事情,可以通过针对类的直接后代来实现,如下所示:
.parent {
border:1px solid #000;
border-spacing:0px;
}
.parent > td { /* > will ensure only td of parent class is targeted */
border:1px solid #000;
}
.parent > th {
border:1px solid #000;
}
更新
要在注释中回答您的查询,请更改CSS声明的顺序
CSS更改颜色以更好地理解
两个选择器的权重相同,因此将应用样式表中读取的最后一个选择器:
对你来说,有:
.class td { ...}
.class td { ...} /* wich overwrite previous rule */
您需要增加选择器的权重或特定性:)
可以是:
.parent .child {border:0px solid #000; border-spacing:0px;}
table .child td {border:0px solid #000; }
table table.child th {border:0px solid #000; }
table.child {border:0px solid #000; border-spacing:0px;}
table td > .child td {border:0px solid #000; }
.child > th {border:0px solid #000; }
table.parent .child {border:0px solid #000; border-spacing:0px;}
table.parent .child td {border:0px solid #000; }
td > .child th {border:0px solid #000; }
两个选择器的权重相同,因此将应用样式表中读取的最后一个选择器:
对你来说,有:
.class td { ...}
.class td { ...} /* wich overwrite previous rule */
您需要增加选择器的权重或特定性:)
可以是:
.parent .child {border:0px solid #000; border-spacing:0px;}
table .child td {border:0px solid #000; }
table table.child th {border:0px solid #000; }
table.child {border:0px solid #000; border-spacing:0px;}
table td > .child td {border:0px solid #000; }
.child > th {border:0px solid #000; }
table.parent .child {border:0px solid #000; border-spacing:0px;}
table.parent .child td {border:0px solid #000; }
td > .child th {border:0px solid #000; }
两个选择器的权重相同,因此将应用样式表中读取的最后一个选择器:
对你来说,有:
.class td { ...}
.class td { ...} /* wich overwrite previous rule */
您需要增加选择器的权重或特定性:)
可以是:
.parent .child {border:0px solid #000; border-spacing:0px;}
table .child td {border:0px solid #000; }
table table.child th {border:0px solid #000; }
table.child {border:0px solid #000; border-spacing:0px;}
table td > .child td {border:0px solid #000; }
.child > th {border:0px solid #000; }
table.parent .child {border:0px solid #000; border-spacing:0px;}
table.parent .child td {border:0px solid #000; }
td > .child th {border:0px solid #000; }
两个选择器的权重相同,因此将应用样式表中读取的最后一个选择器:
对你来说,有:
.class td { ...}
.class td { ...} /* wich overwrite previous rule */
您需要增加选择器的权重或特定性:)
可以是:
.parent .child {border:0px solid #000; border-spacing:0px;}
table .child td {border:0px solid #000; }
table table.child th {border:0px solid #000; }
table.child {border:0px solid #000; border-spacing:0px;}
table td > .child td {border:0px solid #000; }
.child > th {border:0px solid #000; }
table.parent .child {border:0px solid #000; border-spacing:0px;}
table.parent .child td {border:0px solid #000; }
td > .child th {border:0px solid #000; }
这是因为.parent
中的样式覆盖了.child
中以前的样式,这是由于CSS的级联性质和共享特性。重新定做样式在子表上有一个边框,很难看到。如果删除.child{border:0px solid#000;border space:0px;}
您会看到一个变化。这是因为.parent
的样式覆盖了.child
以前的样式,这是由于CSS的级联性质和共享特性。重新定做样式在子表上有一个边框,很难看到。如果删除.child{border:0px solid#000;border space:0px;}
您会看到一个变化。这是因为.parent
的样式覆盖了.child
以前的样式,这是由于CSS的级联性质和共享特性。重新定做样式在子表上有一个边框,很难看到。如果删除.child{border:0px solid#000;border space:0px;}
您将看到一个更改。这是因为.parent
中的样式正在覆盖.child
中以前的样式