【发布时间】:2011-04-02 02:19:48
【问题描述】:
我正在尝试为 HTML5 中的 <input>s 提供一些好的默认样式,并尝试了以下方法:
input::after { display: inline; }
input:valid::after { content: ' ✓ '; color: #ddf0dd; }
input:invalid::after { content: ' ✗ '; color: #f0dddd; }
唉,::after 内容永远不会出现。伪元素的双冒号和单冒号不是问题;我都试过了。拥有伪元素和伪类也不是问题;我试过没有:valid 和:invalid。我在 Chrome、Safari 和 Firefox 中得到了相同的行为(Firefox 没有 :valid 和 :invalid 伪类,但我尝试了没有这些。)
伪元素在<div>、<span>、<p> 和<q> 元素上工作正常——其中一些是块元素,一些是内联元素。
所以,我的问题是:为什么浏览器同意<input>s 没有::after?我在规范中找不到任何可以表明这一点的内容。
【问题讨论】:
-
为了记录,双冒号和单冒号是为了区分伪元素和伪类,因为人们将它们组合成一个名为“伪选择器”。
标签: html css forms pseudo-element