行高属性通常用于垂直对齐,但不用输入。有没有办法自动居中文本而不玩填充?
答案 0 :(得分:97)
我自己遇到了这个问题。我发现没有指定输入高度,但使用font-height和padding组合,会产生垂直对齐的文本。
例如,假设你想要一个42px高的输入框,字体大小为20px。您可以简单地找到输入高度和字体大小之间的差异,将其除以2,并将填充设置为该数量。在这种情况下,您将获得22px的总填充量,每侧为11px。
<input type="text" style="padding: 11px 0px 11px 0px; font-size: 20px;" />
这将为您提供一个42px高的输入框,具有完美的垂直对齐。
希望有所帮助。
答案 1 :(得分:62)
我自己没试过,但尝试设置:
height : 36px; //for other browsers
line-height: 36px; // for IE
其中36px是您输入的高度。
答案 2 :(得分:11)
在Opera 9.62,Mozilla 3.0.4,Safari 3.2(适用于Windows)中,如果您在输入字段的同一行中放置一些文本或至少一个空格,它会有所帮助。
<div style="line-height: 60px; height: 60px; border: 1px solid black;">
<input type="text" value="foo" />
</div>
(想象一下输入语句之后的&amp; nbsp)
IE 7忽略了我尝试过的每一个CSS hack。 我建议只使用填充IE。如果它只需要在一个特定的浏览器中工作,就应该让它更容易正确定位。
答案 3 :(得分:6)
我知道我迟到了,但希望这会帮助任何寻找简洁答案的人在所有主流浏览器上工作(除了IE6,我们已决定停止支持该浏览器,所以我甚至拒绝查看它了。)
#search #searchbox {
height: 21px;
line-height: 21px;
}
喝彩! JP
答案 4 :(得分:3)
在我看来,这个页面得票最多的答案是最好的答案,但他的数学错误,我无法评论。
我需要一个文本输入框,正好是40像素高,包括一个1像素的边框。当然,我希望所有浏览器中的文本在中心垂直对齐。
1像素边框顶部
1像素边框底部
8像素顶部填充
8像素底部填充
22像素字体大小
1 + 1 + 8 + 8 + 22 = 40个像素。
要记住的一件事是你必须删除你的css height属性,否则这些像素会被添加到上面的总数中。
<input type="text" style="padding-top:8px; padding-bottom:8px; margin: 0; border: solid 1px #000000; font-size:22px;" />
这适用于Firefox,Chrome,IE 8和Safari。我只能假设,如果像IE8这样简单的东西在IE8中有效,它应该在6,7和9中工作,但我还没有测试过。请让我知道,我会相应地编辑这篇文章。
答案 5 :(得分:3)
input[type=text]
{
height: 15px;
line-height: 15px;
}
这是设置垂直 - 中间位置的正确方法。
答案 6 :(得分:2)
尝试:
height: 21px;
line-height: 21px; /* FOR IE */
因为在某些版本的IE(&lt; 9)中,属性高度未被正确解释。
答案 7 :(得分:1)
经过多次搜索和挫折后,当使用固定高度(24px)背景图像作为文本输入字段时,设置高度,线高和无填充的组合对我有效。
.form-text {
color: white;
outline: none;
background-image: url(input_text.png);
border-width: 0px;
padding: 0px 10px 0px 10px;
margin: 0px;
width: 274px;
height: 24px;
line-height: 24px;
vertical-align: middle;
}
答案 8 :(得分:1)
转到line-height
。
vertical-align
标记适用于提交按钮,但不适用于输入字段中的文本。
将line-height
设置为输入字段的高度适用于所有浏览器。包括IE7。
答案 9 :(得分:0)
只是不要设置输入框的高度,只设置font-size,这样就可以了
答案 10 :(得分:0)
我就是这样做的。
<ul>
<li>First group of text here.</li>
<li><input type="" value="" /></li>
</ul>
然后在你的CSS文件中,
ul li {
display: block;
float: left;
}
那应该适合你。
答案 11 :(得分:0)
派对上晚了,但是如果你有盒子大小的话,目前的答案将无法奏效:边框设置(这些天很多人都为表格元素做了)。
只需将IE8的大小调整重置为box-sizing: content-box;
,然后使用其中一个填充/高度答案。
答案 12 :(得分:0)
内部垂直对齐方式取决于字体高度和输入高度,因此可以使用填充进行调整!!!
尝试类似的东西:
.InVertAlign {
height: 40px;
line-height: 40px;
font-size: 2em;
padding: 0px 14px 3px 5px;
}
...
<input type="text" class="InVertAlign" />
请记住根据您的需要调整CSS类上的值!
答案 13 :(得分:0)
我只是在MaterialUI的文本输入中进行此操作。将padding-top: 0.5rem
添加到输入样式对我有用。虽然这是在调整填充,但至少您不必担心调整更新,而不必担心不同的断点。
答案 14 :(得分:-1)
提前抱歉简单回答......
只需删除标题文字,然后使用输入占位符作为标签的标题。一些视觉和css工作之后,你的表单将看起来紧凑和用户友好。我知道这些缺点,但这将完全缓解对齐摔跤。
我实际上正在构建一个包含WordPress中的多步骤和css进度条...基于流行的Contact Form 7插件,它看起来很棒。如果你想要截图,请告诉我。
干杯!
LaddtheImpaler
答案 15 :(得分:-11)
如果你的元素是包含/或带有这样的显示的块元素:
display: table-cel
或者,使用固定的行高,您可以像这样设置垂直对齐:
Vertical-Align: Middle;
它不适用于其他情况,但在这些条件下工作正常。