使用 CSS 匹配空输入框
如何将样式应用于空输入框?如果用户在输入字段中键入内容,则不应再应用该样式。这在 CSS 中可能吗?我试过这个:
input[value=""]
How do I apply a style to an empty input box? If the user types something in the input field, the style should no longer be applied. Is this possible in CSS? I tried this:
input[value=""]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(15)
虽然目前 (2021-10-01) 没有浏览器支持它,但有人建议使用
:blank
伪类。参考: https://developer.mozilla.org/en-US /docs/Web/CSS/:空白。
请注意,这是实验,目前没有浏览器支持它。
While no browser currently (2021-10-01) supports it, there is a proposal for a
:blank
pseudo-class.ref: https://developer.mozilla.org/en-US/docs/Web/CSS/:blank.
Do note, this is experimental, and no browser supports it as of now.
我对答案感到好奇,我们有明确的属性来获取空输入框,看看这段代码
更新
更多,以便在验证中获得很好的外观
I'm wondered by answers we have clear attribute to get empty input boxes, take a look at this code
UPDATE
More over for having a great look in the validation
在现代浏览器中,您可以使用
:placeholder-shown
< /a> 定位空输入(不要与 < 混淆代码>::占位符)。在 HTML 中,您必须设置 placeholder 属性。 Chrome 浏览器至少需要一个空格字符作为值。
In modern browsers you can use
:placeholder-shown
to target the empty input (not to be confused with::placeholder
).In HTML you must set the placeholder attribute. Chrome browser requires at least a space character as value.
如果只有该字段是
必填
,您可以使用input:valid
请参阅 jsFiddle 上的实时
或使用
#foo-thing:invalid
进行否定(信用致@SamGoody)If only the field is
required
you could go withinput:valid
See live on jsFiddle
OR negate using
#foo-thing:invalid
(credit to @SamGoody)input[value=""], input:not([value])
适用于:
但是一旦有人开始输入,样式就不会改变(你需要 JS)。
input[value=""], input:not([value])
works with:
But the style will not change as soon as someone will start typing (you need JS for that).
更新字段的值不会更新其在 DOM 中的 value 属性,因此您的选择器始终匹配字段,即使它实际上不为空。
相反,使用
invalid
伪类 来实现你想要的,像这样:Updating the value of a field does not update its value attribute in the DOM so that's why your selector is always matching a field, even when it's not actually empty.
Instead use the
invalid
pseudo-class to achieve what you want, like so:我意识到这是一个非常古老的线程,但从那以后事情发生了一些变化,它确实帮助我找到了解决问题所需的正确组合。所以我想我应该分享我所做的事情。
问题是,如果可选输入被填充,我需要将相同的 css 应用到可选输入,就像我对填充的必需输入一样。 css 使用了 psuedo 类:valid,它在未填充时也将 css 应用于可选输入。
这就是我修复它的方法;
HTML
CSS
I realize this is a very old thread, but things have changed a bit since and it did help me find the right combination of things I needed to get my problem fixed. So I thought I'd share what I did.
The problem was I needed to have the same css applied for an optional input if it was filled, as I had for a filled required. The css used the psuedo class :valid which applied the css on the optional input also when not filled.
This is how I fixed it;
HTML
CSS
如果不需要支持旧版浏览器,您可以使用
required
、valid
和invalid
的组合。使用它的好处是
valid
和invalid
伪元素可以很好地与输入字段的类型属性配合使用。例如:作为参考,JSFiddle 在这里: http://jsfiddle.net/0sf6m46j/
If supporting legacy browsers is not needed, you could use a combination of
required
,valid
, andinvalid
.The good thing about using this is the
valid
andinvalid
pseudo-elements work well with the type attributes of input fields. For example:For reference, JSFiddle here: http://jsfiddle.net/0sf6m46j/
这对我有用:
对于 HTML,将
required
属性添加到输入元素对于 CSS,使用
:invalid
选择器来定位空输入注释:
required
:“如果存在,它指定在提交表单之前必须填写输入字段。”
This worked for me:
For the HTML, add the
required
attribute to the input elementFor the CSS, use the
:invalid
selector to target the empty inputNotes:
required
from w3Schools.com:"When present, it specifies that an input field must be filled out before submitting the form."
在 jQuery 中。我添加了一个类并使用 css 进行样式设置。
in jQuery. I added a class and styled with css.
将类名添加到输入中,然后对其应用 CSS 规则对我来说很有用:
It worked for me to add a class name to the input and then apply CSS rules to that:
这个问题可能已经被问过一段时间了,但是当我最近登陆这个主题寻找客户端表单验证时,并且作为
:placeholder-shown
支持 越来越好,我认为以下内容可能对其他人有帮助。使用 Berend 使用这个 CSS4 伪类的想法,我能够创建一个仅在用户完成后触发的表单验证填充它。
以下是 CodePen 上的演示和解释:
https://codepen.io/johanmouchet/pen/PKNxKQ
This question might have been asked some time ago, but as I recently landed on this topic looking for client-side form validation, and as the
:placeholder-shown
support is getting better, I thought the following might help others.Using Berend idea of using this CSS4 pseudo-class, I was able to create a form validation only triggered after the user is finished filling it.
Here is ademo and explanation on CodePen:
https://codepen.io/johanmouchet/pen/PKNxKQ
如果您很高兴不支持 IE 或 Chromium Edge 之前的版本(如果您使用它进行渐进增强,这可能没问题),您可以像 Berend 所说的那样使用
:placeholder-shown
。请注意,对于 Chrome 和 Safari,您实际上需要一个非空占位符才能正常工作,尽管空格也可以。If you're happy not not supporting IE or pre-Chromium Edge (which might be fine if you are using this for progressive enhancement), you can use
:placeholder-shown
as Berend has said. Note that for Chrome and Safari you actually need a non-empty placeholder for this to work, though a space works.因此,我之前正在尝试使用新的 :where 和 :is 子句并构想出这一点乐趣,在找到带有 :invalid 和 :placeholder-shown 位的这篇文章后,我想我可能会分享这种可能性以供将来
参考
:root { --警告: 橙色; }
任何必需的输入或文本区域的颜色,该输入或文本区域为空或无效。这就是彻头彻尾的性感So I was playing around earlier with the new :where and :is clauses and conceived of this bit of fun, and after finding this post with the :invalid and :placeholder-shown bits, thought I might share this possibility for future reference
which applies the
:root { --warning: orange; }
color to any required input or textarea, that is either empty or invalid. And that is just downright sexy这就是您如何使其成为可能的方法。不要忘记为您的输入设置
placeholder=" "
和required
attr。您可以根据需要更改道具。This is how you can make it possible. don't forget to set
placeholder=" "
andrequired
attr to your inputs. you can change the props as you wish.