DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!
:valid
是一个伪类选择器,用于在有效的表单元素上启用样式。:valid
可以添加到任何表单元素,例如 <form>
、<fieldset>
或 <input>
,以根据元素的有效性或包含的子元素的有效性增强样式。
form:valid {
outline: 3px dashed green;
}
语法
:valid {
/* ... */
}
尽管在所有表单元素中语法相似,但 <form>
、<fieldset>
和 <input>
之间验证方式的不同会影响其工作方式。让我们分别介绍一下,看看它是如何工作的。
表单
:valid
伪类根据子表单元素(如 <fieldset>
或 <input>
)的有效性,在 <form>
元素上启用条件样式。如果所有子表单元素均有效,则 <form>
也将被视为有效,并应用 :valid
条件样式。
form:valid {
outline: 3px dashed green;
}
字段集
与 <form>
类似,:valid
根据子 <input>
元素的有效性有条件地将样式应用于 <fieldset>
元素,但仅限于直接子元素,如单选按钮或复选框。
fiedset:valid {
outline: 3px dashed green;
}
输入
:valid
通过验证 <input>
的 value
值来将条件样式应用于 <input>
元素。
具体来说,验证检查输入值是否使用 required
属性作为必填项,或者输入是否必须与 pattern
属性描述的模式匹配。将 :valid
添加到 <input>
将对所有有效输入类型应用相同的样式。将输入与 [type]
属性选择器配对可以启用特定输入类型的样式。
/* All input types */
input:valid {
outline: 3px dashed green;
}
/* Specfic input types */
input[type="text"]:valid {
outline: 3px dashed green;
}
可访问性注意事项
如果您正在考虑使用 :valid
来增强表单元素的样式,这可能不足以成功地以可访问的方式传达输入的有效性。例如,请考虑包含描述成功验证的文本,以供辅助设备(如屏幕阅读器)使用。
有效性测试
要启用对输入的验证测试,必须通过将 required
属性应用于字段将输入设置为必填字段。
<input type="text" id="name" name="name" required />;
如果已为输入提供值,则具有 required
属性的输入将与 :valid
伪类选择器匹配。浏览器将为某些输入类型提供额外的验证测试。例如,<input type="email">
输入通常需要在输入值中包含 @
才能被视为有效。
可以通过为输入提供一个输入值应该匹配才能被视为有效的模式来增强有效性测试。这可以通过在输入上包含 pattern
属性来实现。pattern
属性必须提供一个模式,通常采用 正则表达式 格式,以测试提供的值。
<input type="text" id="zipcode" name="zipcode" pattern="[0-9]{5}" inputmode="numeric" required />
链接伪类
:valid
伪类可以链接到其他伪类选择器,例如 :focus
或 :hover
,以进一步调整样式。
.input:focus:valid {
outline: 3px dashed green;
}
:has()
一起使用
与由于功能性伪类选择器:has()
在浏览器中得到了广泛支持,因此可以将其与有效性伪类选择器结合使用,使其他元素能够从表单元素的条件样式中受益。
例如,我们可以为包含:valid
输入的父元素设置样式
div:has(input:valid) {
outline: 3px solid green;
}
我们甚至可以将其范围限定到<form>
元素本身,以便在任何地方包含:valid
元素时都对其应用样式
form:has(:valid) {
/* If :valid is present anywhere in the form. */
}
规范
:valid
在CSS 选择器级别 4 规范中定义为“有效性伪类”,这意味着它用于根据对用户输入的评估来设置交互式元素的样式。
我尝试解释 :valid 选择器::valid 选择器基本上是一个伪类,可以与 input 元素一起使用。假设您使用 input 元素来检查用户输入的内容是否正确。现在,使用 :valid 选择器,您可以编辑例如输入字段的颜色,以便用户知道输入是否正确。如果单词输入正确,则输入框变为绿色。
浏览器兼容性:Chrome 10、Firefox 4、Internet Explorer 10、Opera 10、Safari 5。Firefox Mobile 4、Opera Mobile 10、Safari 5。以下是 Mozilla 网站上一个非常好的演示:https://mdn.org.cn/samples/cssref/input-validation.html
你好
:valid 和 :invalid 选择器实际上并不是选择器级别 3 规范的一部分,而是级别 4 的一部分。
经过大量的研究和实验,我发现当使用“:valid”伪类时,带有 input[value=””] 的选择器将匹配。
http://codepen.io/jnkrois/pen/rVvqjB
哪些是有效的 CSS 选择器?
div
_div
.element
#element
那么这个怎么样
input[type=”text”][value]:not([value=””])
通过测试“value”(但不是“empty”),您无需测试“valid”或组合“required”。
Jip,它不起作用——因为属性选择器指的是 XML 标记,而不是用户更改的输入的实际(内存中)值。