【问题标题】:Is it possible to change the style of a modified input field using only CSS?是否可以仅使用 CSS 更改修改后的输入字段的样式?
【发布时间】:2020-01-05 07:17:00
【问题描述】:

我知道使用 JavaScript,我可以有一个输入表单,它可以通过执行以下操作来修改那些已修改的值的样式:

<input type="text" onchange="changeMyStyle()">

(其中 changeMyStyle 将是一个显而易见的功能,但我现在不想破解,尤其是在我不需要它的情况下。)

不过,我也知道 CSS 的功能越来越复杂,但我所知道的大部分内容仅限于 CSS2 或更早版本。

是否有可能使用纯 CSS 实现等价物,也许使用伪类?

(这是我们的页面——我们可以完全控制它。但是,目前我们在 Elixir/Pheonix 中渲染页面,不需要客户端 JavaScript。因为我不是 JavaScript 的粉丝,我只是真正想要的是可以被视为样式更改的东西,我希望避免将 JavaScript 放入项目中。)

【问题讨论】:

标签: css forms dynamic css-selectors pseudo-class


【解决方案1】:

您可以使用:placeholder-shown 伪类。我不知道 css2 是否支持它,因为我只使用 css3。这个类基本上是检查占位符是否显示。要检查输入字段中是否有值,您可以将此选择器与 :not 伪类结合使用。

大多数modern browsers都支持 除此之外,我想不出除了 JavaScript 之外的其他选择。

这看起来像这样:

input:not(:placeholder-shown) {
  border-color: green;
}

input:placeholder-shown {
  border-color: red;
}
<input placeholder="Text is required" />
<input placeholder=" " value="This one is valid" />
<input placeholder=" " />

顺便说一句,我从here复制了这个sn-p

【讨论】:

  • 有趣的方法。我希望有一些东西可以监控价值本身。如果我们需要用户能够实际编辑现有值,这将是一个问题……但既然我们可能不会,我们也许可以使用它。 :-)(我暂时不回答这个问题,看看是否有人建议一种方法来监视值而不是占位符。)
  • 没关系,但我真的认为如果你想要更多地控制你的输入,我真的认为没有办法绕过 javascript,但我完全理解你不想只是开始使用 js
  • :placeholder-shown 是第 4 级选择器的新功能,所以你说它是 CSS3 的一部分是对的(我知道这听起来不对,但相信我,它是正确的)。也就是说,我认为@Brian 只是在说他所知道的大部分内容来自 CSS2 时代,他没有跟上最新功能,而不是只能使用 CSS2(因为这意味着必须支持 IE6- IE8、Firefox 2 等)...
猜你喜欢
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 2011-10-01
  • 1970-01-01
相关资源
最近更新 更多