如果您使用 Javascript 设置 <input> 元素的样式,那么您以这种方式设置的任何属性似乎都会在 :focus 规则中被忽略。
我有一个例子说明了这一点:
- 最初输入元素的背景和边框设置为与周围元素相同(div.header)
- 单击 [open] 链接会打开 div.body 元素,该元素最初未显示。
- 我想明确一下标题是一个文本字段,因此更改输入的背景和边框以匹配刚刚显示的文本区域。
我对 textarea 和 input 都有一个 :focus 规则,将背景着色为黄色,因此很明显文本字段具有焦点。
但这对输入元素不起作用,似乎是因为我已经以编程方式设置了这些属性。如果我不设置它们,那么 :focus 按预期工作。如果 :focus 规则设置了未在 中设置的属性.css()
,那么它们将被尊重。
在 Safari、Firefox、Chrome 和 IE 上都是如此,所以显然是“预期的行为”,但我在网上找不到任何说(为什么)这是正确的。
显然我可以使用 blur 和 focus handlers来实现我想要的,但我试图理解为什么会这样。