结构伪类和属性选择器不能一起工作

时间:2012-11-19 10:49:37

标签: css css-selectors pseudo-class

我有这个HTML代码:

<div class="field">                  
<input type="hidden" value="" name="a" id="a"> <input type="hidden" value="xxxx" name="b" id="b">
<input type="file" value="" name="file1"> <input type="file" value="" name="file2">
<input type="file" value="" name="file3"> <input type="file" value="" name="file4">
<input type="file" value="" name="file5"> <input type="file" value="" name="file6">
<input type="file" value="" name="file7"> <input type="file" value="" name="file8">     </div>

在这个HTML中,我想隐藏div class =“field”里面的所有输入type =“file”,除了第一个。 我无法更改HTML(添加类)。 我尝试应用伪类和结构选择器来完成任务:

.field input[type='file']{
  display:none;
}

.field input[type='file']::first-child{
display:block;
}

但似乎行不通。 任何人都可以建议我在css中使用伪类和选择器togheter的正确语法,以解决这个问题?

2 个答案:

答案 0 :(得分:2)

伪类仅使用一个冒号,因此它是:first-child,而不是::first-child

但是您的第一个input[type='file']并不是第一个孩子,所以无论如何都不能使用:first-child

您必须切换规则并使用兄弟选择器来隐藏后续文件上传输入:

.field input[type='file'] {
    display:block;
}

.field input[type='file'] ~ input[type='file'] {
    display:none;
}

此技术进一步描述here,可用于大多数其他简单选择器,而不仅仅是类和属性。

答案 1 :(得分:0)

您可以将此代码用于所有值,并且除了第一个之外,您将隐藏div class =“field”中的所有input type =“file”。试试这段代码。

<html>
<head>
<style>
.field input[type='file']
{visibility:hidden;}
</style>
</head>
<body>
</body>
</html>