【问题标题】:Style empty textbox - CSS only solution样式空文本框 - 仅 CSS 解决方案
【发布时间】:2016-07-11 12:55:31
【问题描述】:

更新 - 2016 年 3 月 24 日

我想概括这些问题,但看起来它已经被理解为具体了,我的错。 This answer 是我之前使用的示例的 100% 解决方案。

请参考CodePen

所以样式空文本框背后的想法是

textbox:empty ~ label {
 // position it as floating label
}

现在看来在 CSS 中是不可能的,将来可能会。

感谢大家的帮助。

更新 - 2016 年 3 月 23 日

This answer 已关闭。 但不能使用:invalid,因为它使required=true 属性的字段成为必填项。


请参考CodePen 以了解所需的行为,使用 javascript。演示是为了解释,它应该如何表现,使用 javascript 不是预期的行为。另外使用的颜色只是为了对比,与验证无关


有没有办法只使用 CSS 来设置空文本框的样式?

我试过:emptypseudo-class,不幸的是textbox总是被检测为空;因为它没有子节点或文本节点。准确地说,textbox 是一个自闭合标签。

:empty 伪类表示任何没有子元素的元素。仅考虑元素节点和文本(包括空格)。

任何指针都会有所帮助。

【问题讨论】:

标签: html css is-empty


【解决方案1】:

这可以通过使用:invalid 并将input 设置为required="true" 来实现

input { 
  padding: 10px;
  background-color:red; 
}
input:invalid {
  background-color:lightblue;
}
<input id="in1" required="true">

MDN :invalid

【讨论】:

  • 我在考虑 :invalid,但是你不得不使用这个输入 - 如果这个字段必须有一个值,这还不错,但如果它实际上不是必需的呢?我想这是唯一的方法。
  • @Matthew 我认为必需的属性是在 javascript 中强制执行的,所以如果他还没有使用必需的语义,那么他可以继续忽略它们。
  • @GerardSexton 谢谢,我想了一下,唯一的问题是它不会随可选字段缩放,不填写相应字段无法提交表单。
  • @sarbbottam 没问题。那么使用 Javascript 是你当时的决定吗?
  • @GerardSexton 可能会放弃计划,不想依赖 javascript。
【解决方案2】:

可以使用::placeholder 伪元素,像这样:http://codepen.io/thierry/pen/oxWMwy

【讨论】:

  • 太棒了,学到了这个placeholder 技巧,你的解决方案非常适合我发布的示例。但实际意图有所不同,我已经更新了帖子。谢谢!
【解决方案3】:

对于更新的帖子,不可能有一个仅 css 的解决方案(截至目前)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2018-10-06
    • 1970-01-01
    相关资源
    最近更新 更多