巧妙的 Textarea 拉环

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

在桌面版 Safari、Chrome、Firefox 和 Opera-under-Presto 中(IE 不适用,移动设备也不适用),<textarea> 在右下角有一个小的调整大小的部件。Textarea 用于书写,因此如果用户需要更多空间来更舒适地书写,他们可以拥有它。单击并拖动该调整大小部件实际上会更改该 textarea 的盒模型,根据需要将其他内容推开。我们可以利用这个小功能来实现一个技巧!

公平地说,这不是我发明的。大约一年前我见过它,但我无论如何也想不起来在哪里看到的。当我看到 David Walsh 关于 如何对其进行样式设置 的快速帖子时,它让我想起了这个,所以我开始重新创建这个想法。


简单的 textarea

假设您将该 <textarea> 放入一个绿色的 <div> 中。

然后您将该 <textarea> 拖动得更高。<div> 会变得更大。

现在假设我们绝对定位该

在另一个区域的底部。

现在,当您拖动 textarea 的调整大小部件 **向下** 以使其更大时,div 实际上会 **向上** 增长。

然后,如果我们将 textarea 变小并设置调整大小句柄的样式,它看起来就不像 textarea 了(仅限 WebKit)。

textarea {
  width: 12px;
  height: 12px;
}
textarea::-webkit-resizer {
  background: yellow;
}

那里有一些小块悬挂在底部。我不确定这是怎么回事,但您可以使用任一包装器上的 overflow: hidden; 来隐藏它。

我们将进一步设置调整大小部件(我想我们现在可以称之为“选项卡”)的样式,方法是

  • 将其居中 – .tab { text-align: center; }
  • 隐藏 textarea 的内部内容 – textarea { background: none; border: 0; }
  • 确保选项卡只能向下拉 – textarea { resize: vertical; }
  • 限制新显示区域的高度 – .tab, textarea { max-height: 100px; }</li>

现在,当您向下拉动“选项卡”时,它只会显示更多绿色

因此,现在,如果我们要在该绿色区域中放入一些实际内容,并将其定位到足够低的位置以默认隐藏,我们就可以拉动那个小选项卡并显示内容。非常巧妙。

演示

颜色等已更改,使其更易于查看。

Check out this Pen!

我不知道这是否特别有用。我知道它不太适合移动设备。我知道它在跨浏览器方面并不酷。它是一个货真价实的 CSS 小技巧。