用于多行输入的文本区域
使用 textarea 元素收集多行文本
用于多行输入的文本区域 是 CoddyKit 上的免费 HTML Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 HTML Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 HTML Academy 课程共包含 4 节课。
textarea 元素
<textarea> 元素接受多行文本输入:
<label for="message">Message</label>
<textarea
id="message"
name="message"
rows="5"
cols="40"
placeholder="Enter your message here..."
></textarea>
<!-- textarea is NOT a void element -- it has a closing tag -->
<!-- Default content goes between the tags, not in a value attribute -->rows 和 cols 属性
rows 和 cols 设置初始可见大小:
<!-- rows: height in lines (default: 2) -->
<!-- cols: width in characters (default: 20) -->
<textarea rows="6" cols="50">...</textarea>
<!-- Better: use CSS for sizing -->
<textarea style="width: 100%; height: 150px; resize: vertical;">设置默认内容
默认文本应放在开始标签和结束标签之间:
<textarea name="bio">
Hello! I am a developer who loves HTML.
</textarea>
<!-- Note: whitespace inside textarea IS rendered -->
<!-- The newline after the opening tag will appear in the textarea -->
<!-- Avoid whitespace between tags if you don't want it -->使用 CSS 调整大小
使用 CSS 的 resize 属性控制用户调整大小的方式:
textarea {
resize: vertical; /* allow only vertical resize */
/* resize: horizontal -- only horizontal */
/* resize: both -- both directions (default) */
/* resize: none -- prevent resizing */
width: 100%;
min-height: 120px;
max-height: 400px;
padding: 0.5rem;
box-sizing: border-box;
}自动增长的文本区域
使用 JavaScript 让 textarea 随用户输入自动增长:
<textarea id="auto-grow" rows="3" style="overflow: hidden;"></textarea>
<script>
const ta = document.getElementById('auto-grow');
ta.addEventListener('input', () => {
ta.style.height = 'auto';
ta.style.height = ta.scrollHeight + 'px';
});
</script>maxlength 和 minlength
限制 textarea 中的文本长度:
<label for="bio">Bio (max 500 characters)</label>
<textarea
id="bio"
name="bio"
maxlength="500"
minlength="10"
rows="4"
></textarea>
<!-- Live character count: -->
<small id="char-count">0/500</small>
<script>
document.getElementById('bio').addEventListener('input', function() {
document.getElementById('char-count').textContent =
this.value.length + '/500';
});
</script>spellcheck 属性
spellcheck 属性控制拼写检查:
<!-- Enable (default for textarea) -->
<textarea spellcheck="true">...</textarea>
<!-- Disable (for code editors, technical input) -->
<textarea spellcheck="false">...</textarea>wrap 属性
wrap 属性控制换行内容的提交方式:
<!-- wrap="soft" (default): text wraps visually but newlines not added -->
<textarea wrap="soft">...</textarea>
<!-- wrap="hard": newlines inserted at wrap points when submitted -->
<!-- Requires cols to be set -->
<textarea wrap="hard" cols="40">...</textarea>readonly 和 disabled
使 textarea 不可编辑:
<!-- readonly: visible, selectable, submitted -->
<textarea readonly>This is read-only text.</textarea>
<!-- disabled: cannot interact, not submitted -->
<textarea disabled>Disabled textarea.</textarea>Textarea 可访问性
关于 textarea 可访问性的注意事项:
- 始终使用
for/id将<label>与其关联 - 使用
aria-describedby关联帮助文本或字符计数器 - 使用实时区域向屏幕阅读器播报字符限制的变化
<label for="comment">Comment</label>
<textarea id="comment" aria-describedby="comment-hint"></textarea>
<p id="comment-hint">Maximum 200 characters.</p>设置 Textarea 的样式
Textarea 的常见样式设置:
textarea {
width: 100%;
padding: 0.75rem;
border: 1px solid #ddd;
border-radius: 0.375rem;
font-family: inherit; /* match surrounding font */
font-size: 1rem;
line-height: 1.5;
resize: vertical;
min-height: 100px;
box-sizing: border-box;
transition: border-color 0.2s;
}
textarea:focus {
outline: none;
border-color: #0070f3;
box-shadow: 0 0 0 3px rgba(0,112,243,0.2);
}快速检查
如何在 textarea 中设置预填充文本?
回顾:Textarea
Textarea 要点:
- 使用结束标签的多行文本输入
- 默认内容放在开始标签和结束标签之间(而不是使用 value 属性)
rows和cols设置初始大小;优先使用 CSSmaxlength和minlength控制长度- 在 CSS 中使用
resize: vertical以控制调整大小的方向 - 自动增长:在 input 事件中设置
height: scrollHeight
常见问题解答
「用于多行输入的文本区域」课时是免费的吗?
是的 — 「用于多行输入的文本区域」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 HTML Academy 课程的其余内容,请升级到 CoddyKit PRO。 HTML Academy 课程共包含 4 节课。
「用于多行输入的文本区域」这节课中我会学到什么?
使用 textarea 元素收集多行文本 你通过在浏览器中直接运行的动手代码来练习 HTML Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 HTML Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 HTML Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「用于多行输入的文本区域」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 HTML Academy 课中编写并运行代码吗?
能。每节 HTML Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。