为什么文本在<input /> s中的放置方式与<span> s或<textarea>的放置方式不同?</textarea> </span>

时间:2011-05-18 21:03:35

标签: html css

我正在尝试构建一个伪造HTML5 placeholder属性的jQuery插件(如What is the most accurate way to emulate the "placeholder" attribute in browsers that don't support it natively?)。为此,我在相应的<span><input>之前插入<textarea>并复制样式。

不幸的是,我发现浏览器神奇地将文字放在<input> s中的位置与<span><textarea> s不同,如http://jsfiddle.net/63zcD/1/所示 - 文字是尽管Web Inspector表示样式在所有三个方面都是相同的,但在<input>中垂直居中。效果出现在Safari,Chrome和Firefox中。

没有奏效的技巧:

  • vertical-align: middle;vertical-align: text-bottom;
  • display: inline-block;

Twitter的登录页面伪造了placeholder属性,但他们通过将<span><input> / <textarea>包含在包含<div>中来解决此问题,手动设置<span>样式以进行视觉匹配,这不是需要自动运行的插件的选项。

1 个答案:

答案 0 :(得分:9)

指定一个等于元素高度的行高应该有效。请参阅原始小提琴的这个分支,可以这么说:http://jsfiddle.net/pygPs/

快速浏览器检查显示它在IE 9,IE 6以及Firefox,Chrome和Safari的最新Mac版本中正确呈现。我没有更改原始链接中的任何现有CSS,只添加了一行:

height: 26px;
line-height: 26px; /*added this line*/