我正在尝试构建一个伪造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>
样式以进行视觉匹配,这不是需要自动运行的插件的选项。
答案 0 :(得分:9)
指定一个等于元素高度的行高应该有效。请参阅原始小提琴的这个分支,可以这么说:http://jsfiddle.net/pygPs/。
快速浏览器检查显示它在IE 9,IE 6以及Firefox,Chrome和Safari的最新Mac版本中正确呈现。我没有更改原始链接中的任何现有CSS,只添加了一行:
height: 26px;
line-height: 26px; /*added this line*/