保留占位符

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 提供适合旅程各个阶段的云产品。 立即开始使用 价值 200 美元的免费积分!

我记得在 WebKit 中,placeholder="" 文本在输入框和文本区域上的行为发生了一个微妙的功能变化,即文本会保留在原位,直到您开始输入,而不是在空输入框获得焦点时消失。 我想它可能最初是在 iOS 上实现的,但现在稳定的 Chrome 和 Safari 都支持此功能。

我还记得我当时觉得这是一个明智的变化。 当然,占位符不能替代真正的

然而,Jeremy Keith 指出 Markus Earnst 的一些研究 表明保留占位符会导致某些期望失效并引发问题

似乎相当数量的用户在占位符文本仍然可见的情况下,甚至不会尝试开始输入。

当然,这项研究的范围有点有限,但它是有道理的。

Jeremey 提供了以下 CSS 解决方案,如果您希望在基于 WebKit 的浏览器中恢复旧的行为

[placeholder]:focus::-webkit-input-placeholder {
  color: transparent;
}

我在这里插一句,提出了一种可能的折中方案,兼具两全之美

[placeholder]:focus::-webkit-input-placeholder {
  transition: opacity 0.5s 0.5s ease; 
  opacity: 0;
}

该过渡中的第二个时间值意味着“等待半秒钟再触发此过渡”。 我怀疑有些人会在点击或使用 Tab 键进入输入框准备输入信息之前,还没有准备好集中注意力到该输入框。 但一旦获得了焦点,他们就开始注意。 如果我们给他们半秒钟让占位符保持可见,再用半秒钟的时间淡出它,这很可能足以让他们理解占位符提示的内容。

事件时间线为:

  1. 用户点击(或轻触,或使用 Tab 键,或其他方式)输入框
  2. 他们的目光移到输入框,他们的大脑开始关注它
  3. 他们理解了占位符提示
  4. 占位符消失

占位符淡出以及占位符向标签滑动消失的另一种变体的演示

Check out this Pen!

郑重声明,我并不是说这绝对更好。 这里没有硬性的科学依据。 我只是提出了一种在我看来似乎合理的替代 UI 体验。

我们还能探索其他解决方案吗?