作为void元素,HTML定义“空”会将元素<input>
视为空,因为所有void元素的内容模型始终为空。因此:empty
,无论它们是否有值,它们都将始终与伪类匹配。这也是为什么它们的值由开始标签中的属性而不是开始标签和结束标签中的文本内容表示的原因。
另外,根据Selectors规范:
该:empty
伪类表示,在所有没有孩子的元素。就文档树而言,只有其数据长度为非零的元素节点和内容节点(例如DOM文本节点,CDATA节点和实体引用)才应被视为影响空度。
因此,input:not(:empty)
永远不会匹配正确的HTML文档中的任何内容。(它在假设的XML文档中仍然有效,该文档定义了<input>
可以接受文本或子元素的元素。)
我认为您不能<input>
仅使用CSS来动态设置空字段的样式(即,只要字段为空,并且一旦输入文本就不应用规则)。如果它们具有空属性()或完全缺少属性(),则可以选择初始为 空的字段,仅此而已。value``input[value=""]``input:not([value])