假设您有以下HTML:
<input />
<br />
<input type=text />
当然,在我的HTML中我也会有其他类型的输入字段(复选框等)。现在我只想设置文本输入的样式。
我在搜索时发现的是在CSS中执行以下操作:
input[type=text] { background: red; }
对于第二个输入,显式存在属性,这是有效的。然而,对于第一个,它适用于IE8,但不适用于IE10。也不在Chrome中。
那么如何定位所有文本输入字段,只定位文本输入字段,而不必将type=text
放在任何地方?
您可以在jsFiddle中看到这一点。对于IE8,请查看these instructions如何让jsFiddle工作,但它看起来像这样:
答案 0 :(得分:16)
如果您希望能够省略type="text"
并且仍然具有选择器匹配,则必须使用CSS3中提供的not
psuedoselector:
input[type="text"], input:not([type]) {
...
}
这在IE的较低版本中不起作用,因为在这些浏览器中不支持CSS3。
最佳解决方案是将type="text"
添加到文本输入中,然后使用原始选择器。
答案 1 :(得分:1)
一种痛苦但可靠的方法是简单地设置样式
input {
/* ... */
}
哪个会针对每个浏览器中的文本输入,然后您可以执行您正在执行的操作,并定位不是文本输入的每种输入类型:
input[type=range] {}
input [type=phone] {}
// etc.
这样,即使浏览器不支持CSS3中的:not运算符,您仍然可以使其工作......
答案 2 :(得分:1)
我的建议是将输入的默认样式设为
input {
background-color: red;
}
然后根据需要覆盖其他内容的样式,例如蓝色按钮
input[type='button'] {
background-color: blue;
}
当然你需要为特定的输入类型指定特定的样式,但这并不意味着如果你想要一个独特的按钮,你就不会这样做。
答案 3 :(得分:0)