Html CSS选择器,用于特定的
Html CSS选择器,用于特定的,html,css,Html,Css,假设图像(由于请求而更改为实际工作表)是html的一个示例,其实现了不同的colspan和行span。在给定的图像中,是否有一个原生的css选择器可以选择所有直接满足底部水平边界的,或者实现这一点的唯一方法是为这些指定的单元格提供特定的类?是的,您可以使用属性选择器和,如果需要,请选择第n个类型() 例如: th[colspan="1"] th[rowspan="4"] th[colspan="1"]:nth-of-type(2) 所有有效的CSS选择器都可以捕获您想要的内容 当然,可以将
假设图像(由于请求而更改为实际工作表)是html
的一个示例,其
实现了不同的colspan
和行span
。在给定的图像中,是否有一个原生的css
选择器可以选择所有直接满足
底部水平边界的
,或者实现这一点的唯一方法是为这些指定的单元格提供特定的类?是的,您可以使用属性选择器和,如果需要,请选择第n个类型()
例如:
th[colspan="1"]
th[rowspan="4"]
th[colspan="1"]:nth-of-type(2)
所有有效的CSS选择器都可以捕获您想要的内容
当然,可以将:nth of type(n)选择器附加到父级,作为选择具有特定colspan的th的“过滤器”。是的,您可以通过混合使用属性选择器和(如果需要)nth-of-type()捕捉这些
例如:
th[colspan="1"]
th[rowspan="4"]
th[colspan="1"]:nth-of-type(2)
所有有效的CSS选择器都可以捕获您想要的内容
当然,类型(n)选择器的第n个可以附加到父级,作为选择具有特定列span的第n个的“过滤器”。有一种方法可以使用第n个最后的子级选择器和行span的组合来实现这一点,但是如果你想让它能够处理任何组合,它看起来会有点复杂和笨拙
该算法有效地tr:n最后一个子(x)th[rowspan>=x]
不幸的是,纯CSS不允许您编写此代码,因此您必须将其分解为多个部分
基本上,您知道,如果标题的最后一行中有任何内容,那么它将紧靠边界。要捕获这些元素,只需选择最后一个tr中的所有th元素:
tr:last-child th { /*your CSS*/ }
然后事情就变得复杂了。如果其他th元素的行跨度足够高,以至于它们跨越了其行和边框之间的其余行,则它们将接触底部边框。也就是说,如果它们位于倒数第二个tr
,则它们需要2的行间距才能触底。如果它们位于最后第四行(在上面的示例中为第一行),则它们需要行跨度为4。因此,您可以这样做:
tr:nth-last-child(2) th[rowspan='2'],
tr:nth-last-child(3) th[rowspan='3'],
tr:nth-last-child(4) th[rowspan='4'] { /*Your CSS */ }
这并不漂亮,但如果您知道需要处理的行的最大数量,它就可以工作,因为很明显,如果您希望将它们保持为纯CSS,您需要单独列出它们
有洞-可能th的最后一排第二行的行跨度为3,这将触及底部,但我假设桌子的设计是正确的,这样就不会发生这种糟糕的事情。如果您愿意,您可以解释这一点,但这会增加很多复杂性,因为您需要添加最后第二行rowspan>=2(CSS不会在属性选择器中执行类似的数学运算,因此您必须单独列出所有>=2的值)
可能有一种方法可以使用类似于SASS或更少的东西(在JQuery中肯定很容易做到)使这个更干净,但据我所知,没有一种纯粹的CSS方法可以稍微清理一下。如果有人知道办法,请告诉我
更新:我已经创建了一个JSFIDLE的编辑,其他人开始演示我的意思有一种方法可以使用第n个子项
选择器和rowspan的组合来实现这一点,但是如果您希望它能够处理任何组合,它看起来会有点复杂和笨拙
该算法有效地tr:n最后一个子(x)th[rowspan>=x]
不幸的是,纯CSS不允许您编写此代码,因此您必须将其分解为多个部分
基本上,您知道,如果标题的最后一行中有任何内容,那么它将紧靠边界。要捕获这些元素,只需选择最后一个tr中的所有th元素:
tr:last-child th { /*your CSS*/ }
然后事情就变得复杂了。如果其他th元素的行跨度足够高,以至于它们跨越了其行和边框之间的其余行,则它们将接触底部边框。也就是说,如果它们位于倒数第二个tr
,则它们需要2的行间距才能触底。如果它们位于最后第四行(在上面的示例中为第一行),则它们需要行跨度为4。因此,您可以这样做:
tr:nth-last-child(2) th[rowspan='2'],
tr:nth-last-child(3) th[rowspan='3'],
tr:nth-last-child(4) th[rowspan='4'] { /*Your CSS */ }
这并不漂亮,但如果您知道需要处理的行的最大数量,它就可以工作,因为很明显,如果您希望将它们保持为纯CSS,您需要单独列出它们
有洞-可能th的最后一排第二行的行跨度为3,这将触及底部,但我假设桌子的设计是正确的,这样就不会发生这种糟糕的事情。如果您愿意,您可以解释这一点,但这会增加很多复杂性,因为您需要添加最后第二行rowspan>=2(CSS不会在属性选择器中执行类似的数学运算,因此您必须单独列出所有>=2的值)
可能有一种方法可以使用类似于SASS或更少的东西(在JQuery中肯定很容易做到)使这个更干净,但据我所知,没有一种纯粹的CSS方法可以稍微清理一下。如果有人知道办法,请告诉我
更新:我已经创建了一个JSFIDLE的编辑,其他人开始演示我的意思属性选择器?@Harry,我认为在这种情况下,使用*[rowspan=“2”]
进行选择将不有效……不是直接的(在这个意义上,您的目标是触及属性选择器底部的内容),但是对于特定的设置,您可以使用多个thead-th:nth-child(..)
规则以这些元素为目标。如果你能发布你真实的html,我们可以提出更好的建议。@Gideon:为什么它会无效?你有什么具体的原因吗?我可以给出一个示例,它可以单独选择所需的元素。(我假设您所有的th
都有rowspan
和colsp