在固定高度的input字段中垂直alignment文本而不显示:table或padding?

行高属性通常需要处理垂直alignment,而不是input。 有没有办法自动居中文本没有玩填充?

在Opera 9.62,Mozilla 3.0.4,Safari 3.2(对于Windows)中,如果在input字段的同一行中放置一些文本或至less一个空格,它会有所帮助。

<div style="line-height: 60px; height: 60px; border: 1px solid black;"> <input type="text" value="foo" />&nbsp; </div> 

(想象一下在input语句之后)

IE 7忽略了我试过的每一个CSS黑客攻击。 我会build议只使用填充IE。 如果只能在一个特定的浏览器中工作,应该使它更容易正确定位。

我自己遇到了这个问题。 我发现,没有指定input高度,但使用font-height和padding组合,会导致垂直alignment的文本。

例如,假设你想要一个42px高的input框,字体大小为20px。 您可以简单地findinput高度和字体大小之间的差异,将其除以2,并将填充设置为该数量。 在这种情况下,你将有22px的总价值,这是每边11px。

 <input type="text" style="padding: 11px 0px 11px 0px; font-size: 20px;" /> 

这将给你一个42px高的input框完美的垂直alignment。

希望有所帮助。

我没有尝试过,但尝试设置:

 height : 36px; //for other browsers line-height: 36px; // for IE 

其中36px是您input的高度。

我知道我迟到了,但希望这会帮助任何人find一个简洁的答案,可以在所有主stream浏览器上工作(IE6除外,我们已经决定停止支持这个浏览器,所以我甚至拒绝再看) 。

  #search #searchbox { height: 21px; line-height: 21px; } 

干杯! J.P

 input[type=text] { height: 15px; line-height: 15px; } 

这是设置垂直中间位置的正确方法。

试试:

 height: 21px; line-height: 21px; /* FOR IE */ 

因为在某些版本的IE(<9)属性高度不正确的解释。

在我看来,这个网页上得票最多的答案是最好的答案,但他的math是错误的,我不能评论它。

我需要一个文本input框正好是40像素高,包括一个1像素的边界。 当然,我希望所有浏览器中的文本垂直alignment。

1像素边框顶部
1像素边框底部
8像素顶部填充
8像素底部填充
22像素的字体大小

1 + 1 + 8 + 8 + 22 = 40像素。

有一点要记住的是,你必须删除你的CSS高度属性或这些像素将被添加到您的总量以上。

 <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中工作,它应该在6,7和9类似的工作,但我没有testing它。 请让我知道,我会相应地编辑这篇文章。

经过多次search和挫折后,设置高度,线高度和没有填充组合为我工作时使用固定的高度(24px)背景图像的文本input字段。

 .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; } 

只是不要设置input框的高度,只设置字体大小,这将是确定的

这是我如何做到的。

 <ul> <li>First group of text here.</li> <li><input type="" value="" /></li> </ul> 

然后在你的CSS文件里面,

 ul li { display: block; float: left; } 

这应该适合你。

line-height

vertical-align标签对于提交button可以正常工作,但对input字段中的文本则不起作用。 将line-height设置为input字段的高度适用于所有浏览器。 包括IE7。

对不起,简单的答案…

只需删除标题文本,并使用input占位符作为标签的标题。 一些视觉和CSS的工作之后,你的forms将看起来紧张和用户友好。 我意识到了这个缺点,但是这样可以完全缓解阵容摔跤。

我实际上正在构build一个包含多步骤和CSS进度条的WordPress …基于不断stream行的Contact Form 7插件,它看起来不错。 让我知道如果你想要一个截图。

干杯!

LaddtheImpaler

这个例子可以永久解决你的问题:

将其添加到inputCSS属性,而不是添加%而不是px:

 height:25px; 

在晚会之后,如果你有盒子大小的设置,现在的答案是行不通的。(现在很多人都是为表单元素做的)。

只需重新设置框的大小为IE8 box-sizing: content-box; 然后使用其中一个填充/高度答案。

你需要像这样设置垂直alignment:

 Vertical-Align: Middle;