css 如何在input元素中将文本覆盖在用户输入的后面?

qlzsbp2j  于 2022-12-27  发布在  其他
关注(0)|答案(2)|浏览(231)

有一个input元素,用户可以在其中输入一些内容,我希望能够在它后面添加一个覆盖文本,这样它看起来就像一个占位符,即使输入中有内容也不会被删除。
我显然考虑过一个单独的元素,但是我不能让它出现在背景和输入文本之间。

ruarlubt

ruarlubt1#

  • <input> Package 为<label>
  • <label>将具有文本,<input>将具有透明背景。
  • <label>占据较低的“层”,并充当<input>的边界。将position: relative分配给<label>,将position: absolute; z-index: 1; top: 0; left: 0;分配给<input>,使其位于<label>的“上方”。
label {
  display: block;
  position: relative;
  width: max-content;
  padding: 0.75em 0 0.25em 0.75em;
  margin: 1rem 0;
  text-align: center;
  line-height: 0.5rem;
  vertical-align: sub;
  color: rgba(0, 0, 0, 0.4);
}

input {
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  width: 100%;
  padding: 0.25em 0.5em;
  font: inherit;
  line-height: 1;
  background: transparent;
}

.top {
  padding-bottom: 1em;
  line-height: 1.5;
}
<label>This text belongs to the &lt;label&gt;<input></label>
<label class="top">Having the text in the middle is messy<input></label>
7uhlpewt

7uhlpewt2#

CSS是你实现这个的首选。使两个div的位置都是绝对的,并且确保它们有相同的绝对组件。
This link具有类似的实现。

相关问题