让我们考虑一下向用户呈现的最终输出结果:带边框和填充的填充文本区域,其特征是单击它们会将焦点传递到我们的文本区域,以及自动100%宽度的优势典型的块元素。
我认为最好的方法是尽可能使用低级解决方案,以达到最大的浏览器支持。在这种情况下,只有HTML可以正常工作,避免使用Javascript(无论如何我们都喜欢)。
LABEL标记会出现在我们的帮助中,因为它具有这种行为,并允许包含它必须处理的输入元素。它的默认样式是内联元素之一,因此,为标签提供块显示样式,我们可以利用自动100%宽度(包括填充和边框),而内部textarea没有边框,没有填充和100%宽度。
看一下W3C的特定细节,我们可能会注意到的其他优点是:
- 不需要“ for”属性:当LABEL标记包含目标输入时,它会在单击时自动聚焦子输入;
- 如果已经为文本区域设计了外部标签,则不会发生冲突,因为给定的输入可能具有一个或多个标签。
有关更多详细信息,请参见W3C详细信息。
简单的例子:
.container {
width: 400px;
border: 3px
solid #f7c;
}
.textareaContainer {
display: block;
border: 3px solid #38c;
padding: 10px;
}
textarea {
width: 100%;
margin: 0;
padding: 0;
border-width: 0;
}
<body>
<div class="container">
I am the container
<label class="textareaContainer">
<textarea name="text">I am the padded textarea with a styled border...</textarea>
</label>
</div>
</body>
.textareaContainer元素的填充和边框是我们要赋予文本区域的元素。尝试编辑它们以根据需要设置样式。我为.textareaContainer元素提供了较大且可见的填充和边框,以使您可以查看单击它们时的行为。