Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 为什么我的直系后代选择器不能工作?_Html_Css_Css Selectors_Html Table - Fatal编程技术网

Html 为什么我的直系后代选择器不能工作?

Html 为什么我的直系后代选择器不能工作?,html,css,css-selectors,html-table,Html,Css,Css Selectors,Html Table,我的直系后代选择器有问题。请看一个简单的例子: .myDiv>表tr:第一个子td{ 字体大小:粗体; 文本对齐:居中; } 收入与成本 名称 收入 第1栏 儿童1-不应加粗 儿童2-不应加粗 浏览器将填充缺少的表元素: 试试这个: .myDiv > table > tbody > tr:first-child td 首先,正确定义表: <table> <thead> <tr> TITLE ROW HERE </tr&g

我的直系后代选择器有问题。请看一个简单的例子:

.myDiv>表tr:第一个子td{ 字体大小:粗体; 文本对齐:居中; } 收入与成本 名称 收入 第1栏 儿童1-不应加粗 儿童2-不应加粗
浏览器将填充缺少的表元素:

试试这个:

.myDiv > table > tbody > tr:first-child td

首先,正确定义表:

<table>
  <thead>
    <tr> TITLE ROW HERE </tr>
  </thead>
  <tbody>
    CONTENT ROWS HERE
  </tbody>
</table>

它是选择任何tr元素的第一个子元素。您有两个tds是第一个子元素;带有标题的是外部表的第一个子表,带有非粗体内容的是内部表的第一个子表。可能用于标题?@mherzig不可能,th应该始终用于标题,这正是该元素的具体用途。@马丁同意,我太好了:问题不在于选择器与正确的元素不匹配,而在于选择器与错误的元素匹配。您的选择器是正确的;“这只是一个不合理的推论。”博尔特时钟,从这个问题上说:我希望在第一张桌子的第一行上有一个粗体字体。问题中的选择器缺少DOM元素,该元素由作者丢失,但由浏览器添加。选择器使用的是后代组合符,而不是子组合符,因此它不必指定tbody。它很好地匹配了所有正确的元素——问题是它也匹配了嵌套表中的单元格,这不是询问者想要的。问题在于使用后代组合符,而不是缺少tbody,尽管解决方案确实需要在选择器中指定tbody。@BoltClock,也许我应该在答案中解释这一点。我想当然地认为,切换到子组合符是可以理解的,因为OP同时使用了这两种组合符。谢谢你的澄清。我不知道这件事。我是HTML的初学者。今天我学到了一件新东西。谢谢你的帮助!
.myDiv>table>thead>tr>td {
    ...
}