:not(:empty)CSS选择器不工作?

前端之家收集整理的这篇文章主要介绍了:not(:empty)CSS选择器不工作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个时间与这个特定的CSS选择器不希望工作,当我添加:not(:empty)。它似乎工作正常与其他选择器的任何组合:
input:not(:empty):not(:focus):invalid { border-color: #A22; Box-shadow: none }

如果我删除:不(:空)部分,它工作正常。即使我将选择器更改为input:not(:empty),它仍然不会选择有文本键入的输入字段。这是破碎还是我只是不允许使用:empty在a:not()选择器?

我唯一能想到的另一件事是,浏览器仍然说,元素是空的,因为它没有孩子,只是一个“值”每说。是否:空选择器不具有输入元素与常规元素的单独功能?这看起来不可能,虽然因为在字段上使用:empty并且在其中键入内容将导致替代效果消失(因为它不再是空的)。

在Firefox 8和Chrome中测试。

解决方法

< input>元素被“空”的HTML定义视为 empty elements(或 void elements)。所以他们总是匹配:空伪类,无论他们是否有一个值。

此外,从Selectors spec

The :empty pseudo-class represents an element that has no children at all. In terms of the document tree,only element nodes and content nodes (such as DOM text nodes,CDATA nodes,and entity references) whose data has a non-zero length must be considered as affecting emptiness;

最后,虽然value是表单输入元素的DOM属性,但它不是文档树中的子元素,与文本节点不同,因此它不会影响空白。

因此,输入:not(:empty)永远不会在合适的HTML文档中选择任何内容

我不认为你可以样式空< input>动态地使用CSS(即,当字段为空时,并且不输入文本时应用的规则)的字段。如果它们具有空值属性(input [value =“”])或缺少属性(输入:not([value])),您可以选择最初的空字段,但这是关于它。

猜你在找的CSS相关文章