html - 在各种状态下选择放置在输入之前的标签

标签 html css

输入具有 :focus:valid 之类的状态,我想为该输入绘制标签以反射(reflect)这一点。问题是我的输入表单需要如下所示:

Field title
[input]

Field title
[input]
...

并且似乎没有办法根据输入状态选择字段标题。 +~ 选择器只作用于目标后面的元素。我也无法反转 direction: rtl block 中元素的顺序,因为我需要字段位于标题下方。

剩下的似乎都是硬核选项,例如 position: absolute 并手动放置它们。我说硬核是因为字段标题的高度可变,而且需要大量手动偏移输入。有没有更好的选择?

最佳答案

您可以使用 flexbox并使用 flex order 更改元素的顺序:

.container {
  display: flex;
  flex-direction: column; /** vertical layout **/
}

.textInput {
  order: 1;
}

.field {
  order: 0;
}

.textInput:focus + .field {
  color: red;
}
<div class="container">
  <input type="text" class="textInput">
  <label class="field">Field</label>
</div>

关于html - 在各种状态下选择放置在输入之前的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36647427/

相关文章:

html - 框阴影在 Microsoft Edge 中不起作用

html - 窗口缩小时 Bootstrap 列重叠

javascript - 有没有办法在 JavaScript 中使用 FileReader 获取文件的特定部分?

html - the_content() wordpress 创建不需要的顶部空间

html - Raphael js文本定位: centering text in a circle

html - 超链接与 div 重叠

javascript - 如何在一个元素前添加 4 个空格,然后使用 javascript 删除它们?

html - Safari 中内联元素的顶部垂直对齐

css - 输入的文本导致 textarea 在表单提交后扩展到 div 之外

html - 如何使不同类型的输入元素具有相同的宽度?