您的 LESS 应转换为以下 CSS,没有任何错误:
td input[type=text] {
width: 100px;
}
td input[type=text]:nth-child(2) {
width: 40px;
}
但是,如果您有其他元素作为文本输入的兄弟元素,则这些元素可能会干扰:nth-child()
声明,因为:nth-child()
仅查看元素相对于同一父元素中所有其他兄弟元素的位置,而不仅仅是同类其他元素(即input[type=text]
)。例如,如果您将 alabel
作为第二个孩子,那么您的输入将不再是第二个孩子,因为该位置已被标签占用。
如果您拥有的唯一输入td
是所有人,[type=text]
那么您应该能够摆脱使用:nth-of-type()
:
// LESS
td {
input[type=text] {
width: 100px;
&:nth-of-type(2) {
width: 40px;
}
}
}
/* CSS */
td input[type=text] {
width: 100px;
}
td input[type=text]:nth-of-type(2) {
width: 40px;
}
但请记住,它只查看元素名称input
而不是[type=text]
属性!
或者,如果您知道只有两个文本输入,您可以使用通用兄弟选择器来获取第一个输入之后的那个:
// LESS
td {
input[type=text] {
width: 100px;
& ~ input[type=text] {
width: 40px;
}
}
}
/* CSS */
td input[type=text] {
width: 100px;
}
td input[type=text] ~ input[type=text] {
width: 40px;
}