如何创建永久占位符? CSS / HTML

How do I create permanent placeholders? CSS / HTML

我正在为我的第一份正式开发工作制作 Web 表单。

我目前正在努力使我的输入字段占位符不会消失,而是我需要它们缩小​​并移动到输入字段的顶部。 我能够找到一些应该完成工作但没有完成的代码。 谁能指导我如何完成这项工作?

我找到的代码:https://jsfiddle.net/p19j2nm5/

我为此工作了好几个小时,尝试了各种变体,但都没有成功。

.wrapper /*wpcf7*/{
    position:relative;
}

input {
  font-size: 14px;
  height: 40px;

}

.placeholder{
  position:absolute;
  font-size: 25px;
  pointer-events:none;
  left: 1px;
  top: 1px;
  transition: 0.1s ease all;
}

input:focus ~ .placeholder{
  top: 1px;
  font-size: 11px;
}

HTML 来自联系表格 7:

<label> First Name:
[text first-name placeholder "First Name"] </label>


<label> Last Name:
    [text* last-name placeholder "Last Name"] </label>


<label> Your Email:
    [email* your-email placeholder "Example@Example.com"] </label>

目前,none 在我的字段上,占位符在聚焦时会移动,但删除“~.placeholder”确实会使字段在聚焦时缩小。

我试图让我的字段执行的示例:

input:focus ~ .lastname_floating-label,
input:focus ~ .firstname_floating-label,
input:not(:focus):valid ~ .firstname_floating-label,
input:not(:focus):valid ~ .lastname_floating-label{
  top: 2px;
  left: 2px;
  bottom: 2px;
  font-size: 11px;
  opacity: 1;
}

.inputText {
  font-size: 14px;
  width: 200px;
  height: 35px;
}

.firstname_floating-label, .lastname_floating-label {
  position: absolute;
  pointer-events: none;
  left: 10px;
  top: 10px;
  transition: 0.2s ease all;
}
div{position:relative;}
<div>
  <input type="text" class="inputText" required/>
  <span class="firstname_floating-label">Firstname</span>
</div>
<div>
  <input type="text" class="inputText" required/>
  <span class="lastname_floating-label">Lastname</span>
</div>

好的,我按照你的要求改了。 其他例子都是错误的。尝试添加更多输入,您可以检查占位符是否位于第一个输入中。如果您将焦点移出,占位符将覆盖键入的值。

检查此示例是否仅使用 HTML 和 CSS。

首先要编辑占位符,您需要使用的选择器是 :placeholder。您尝试重新创建的效果实际上只是浮动表单标签而不是占位符文本的技巧。这里有一个详尽的解释:https://css-tricks.com/float-labels-css/

如果您仔细观察,jsfiddle 示例实际上没有使用占位符,而是使用 class 为 .placeholder

的 span 标记

您自己的代码具有输入占位符属性,您可以定位它并输入 :focus,如下所示:

input::-webkit-input-placeholder {
    color: #999;
    font-size: 15px;

}
input:focus::-webkit-input-placeholder {
    color: red;
    font-size: 5px;
}
/* Firefox < 19 */
input:-moz-placeholder {
    color: #999;
}
input:focus:-moz-placeholder {
    color: red;
    font-size: 5px;
}
/* Firefox > 19 */
input::-moz-placeholder {
    color: #999;
}
input:focus::-moz-placeholder {
    color: red;
    font-size: 5px;
}

/* Internet Explorer 10 */
input:-ms-input-placeholder {
    color: #999;
}
input:focus:-ms-input-placeholder {
    color: red;
    font-size: 5px;
}

这将使占位符文本在输入焦点上变小。

已更新 's answer after reading

我在输入中添加了一些填充,并在输入中移动了 "placeholder" 内容(将 top 值从 -12px 更改为 2px 并添加了 left: 2px).我还添加了 margin-top 属性 以使过渡顺畅且不会干扰页面上的其余内容。

现在占位符内容位于输入框内,就像您分享的屏幕截图一样。

.wrapper{
  position: relative;
}

input {
  font-size: 14px;
  height: 40px;
  transition: padding-top 0.1s, margin-top 0.1s;
  margin-top: 15px;
}

.placeholder {
  position: absolute;
  font-size:25px;
  pointer-events: none;
  left: 3px;
  top: 18px;
  transition: 0.1s ease all;
}

input:focus ~ .placeholder{
  top: 2px;
  left: 2px;
  font-size: 11px;
}

input:focus{
  margin-top: 1px;
  padding-top: 15px;
  transition: padding-top 0.1s, margin-top 0.1s;
}
<div class="wrapper">
  <input type="text">
  <span class="placeholder">Placeholder</span>
</div>

<p>Some content.</p>