html - 哪些元素支持::before 和::after 伪元素?

标签 html css forms pseudo-element

我正在尝试为 <input> 想出一些好的默认样式s 在 HTML5 中并尝试了以下操作:

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>元素——其中一些是 block 元素,一些是内联元素。

所以,我的问题是:为什么浏览器同意 <input>我们没有 ::after ?我在规范中找不到任何表明这一点的内容。

最佳答案

如您所见http://www.w3.org/TR/CSS21/generate.html , :after 仅适用于具有(文档树)内容的元素。 <input>没有内容,还有<img><br> .

关于html - 哪些元素支持::before 和::after 伪元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3538506/

相关文章:

javascript - 如何使用 javascript 和 jquery 动态更改 css 属性

javascript - 带有 OPTIONS 的 SELECT 表单在提交时如何传递多个参数?

html - 使用 css 计数器如何创建一个可以设置计数器初始值的类?

html - 提交按钮在 IE 中有紫色边框,但在 Chrome 中没有。我如何在 IE 中摆脱它?

java - 如果 Selenium 中不存在元素,如何编写代码[JAVA]

Css 继承值未显示在 Chrome 检查器中

html - 仅 CSS 下拉菜单不使用 UL/LI

forms - 何时何地对用户输入进行编码?

ruby-on-rails - rails : How to insert a text_field without a form just to test the layout?

html - R Shiny withProgress Indicator Within Fluid Container