【发布时间】:2021-11-02 18:20:06
【问题描述】:
我找到了一个 solution 来将 textarea 的顶部与其标签的顶部对齐。
我的问题是:<label> 的vertical-align 属性仍然是默认值(基线),那么为什么我们可以通过将<textarea> 的vertical-align 属性设置为top 来将它们对齐?
非常感谢!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Active learning: Implementing our form HTML</title>
<style>
form {
margin: 0 auto;
width: 500px;
padding: 1em;
border: 1px solid #ccc;
border-radius: 1em;
}
ul {
list-style: none;
padding: 0;
margin: 0;
}
form li+li {
margin-top: 1em;
}
label {
width: 90px;
display: inline-block;
text-align: right;
}
input,
textarea {
font: 1em sans-serif;
width: 300px;
box-sizing: border-box;
border: 1px solid #999;
outline: none;
}
input:focus,
textarea:focus {
border-color: #000;
}
img {
vertical-align: top;
width: 150px;
border: 1px solid blue;
}
textarea {
vertical-align: top;
}
</style>
</head>
<body>
<form action="/my-handling-form-page" method="post">
<ul>
<li>
<label for="name">Name:</label>
<input type="text" id="name" name="user_name">
</li>
<li>
<label for="mail">E-mail:</label>
<input type="email" name="user_email" id="mail">
</li>
<li>
<label for="msg">Message:</label>
<textarea name="user_message" id="msg"></textarea>
</li>
<li class="button">
<button type="submit">Send your message</button>
</li>
</ul>
</form>
</body>
</html>
【问题讨论】:
-
值得注意的是,这并没有在 CSS 规范中定义。标签可以放置在文本区域从顶部到底部的任何位置,并且可以满足规范的所有约束。这实际上导致了一个奇怪的现象。如果该行包含一个标签和 两个 文本区域,第一个
vertical-align:top和第二个vertical-align:bottom,Firefox 和 Chromium 在标签垂直放置的位置上存在分歧。 -
嗨,@Alohci,谢谢。似乎是这样。 CSS 规范没有明确规定如何对齐 line box 中的 textarea。如果设置
vertical-align: middle,这两个浏览器之间似乎是一致的。看来这是浏览器实现的不同之处之一。
标签: css textarea vertical-alignment