我正在处理一个CSS文件并发现需要设置文本输入框的样式,但是,我遇到了问题。我需要一个匹配所有这些元素的简单声明:
<input />
<input type='text' />
<input type='password' />
...但与这些不匹配:
<input type='submit' />
<input type='button' />
<input type='image' />
<input type='file' />
<input type='checkbox' />
<input type='radio' />
<input type='reset' />
这就是我想做的事情:
input[!type], input[type='text'], input[type='password'] {
/* styles here */
}
在上面的CSS中,注意第一个选择器是input[!type]
。我的意思是我想选择未指定type属性的所有输入框(因为它默认为文本但input[type='text']
不匹配)。不幸的是,我找不到CSS3规范中的这样的选择器。
有谁知道如何实现这个目标?
答案 0 :(得分:449)
:不是选择器
input:not([type]), input[type='text'], input[type='password'] {
/* style here */
}
Internet Explorer 9及更高版本中的
答案 1 :(得分:30)
对于更多跨浏览器的解决方案,您可以按照您希望非键入,文本和密码的方式设置所有输入的样式,然后另一种样式覆盖该无线电,复选框等样式。 / p>
input { border:solid 1px red; }
input[type=radio],
input[type=checkbox],
input[type=submit],
input[type=reset],
input[type=file]
{ border:none; }
- 或 -
生成非类型输入的代码中的任何部分都可以为它们提供类似.no-type
的类或根本不输出?此外,这种类型的选择可以使用jQuery完成。
答案 2 :(得分:10)
只是想添加一下,你可以使用selectivizr在oldIE中使用:not selector:http://selectivizr.com/