HTML5占位符CSS填充


133

我已经看过这篇文章,并尝试了一切可能的方法来更改占位符的填充,但是,,,似乎只是不想合作。

无论如何,这是css的代码。(编辑:这是从sass生成的CSS)

#search {
  margin-top: 1px;
  display: inline;
  float: left;
  margin-left: 10px;
  margin-right: 10px;
  width: 220px;
}

#search form {
  position: relative;
}

#search input {
  padding: 0 10px 0 29px;
  color: #555555;
  border: none;
  background: url('/images/bg_searchbar.png?1296191141') no-repeat;
  width: 180px;
  height: 29px;
  overflow: hidden;
}

#search input:hover {
  color: #00ccff;
  background-position: 0px -32px;
}

这是简单的html:

<div id="search">
  <form>
    <input type="text" value="" placeholder="Search..." name="q" autocomplete="off" class="">
  </form>
  <div id="jquery-live-search" style="display: block; position: absolute; top: 15px; width: 219px;">
    <ul id="search-results" class="dropdown">
    </ul>
  </div>
</div>

很简单吗?占位符由于某种原因而关闭,但是当您尝试在输入字段中键入内容时,文本将对齐。看来您只能更改webkit占位符的颜色(for ),但如果我尝试编辑包含输入的填充,则会破坏输入的设计!拉出头发

以下是占位符和带有文本输入的输入字段的内容:

占位符 文字输入

编辑

目前,我已经使用了这个jquery插件

它开箱即用,可以解决我的Chrome问题。我仍然想找出问题所在(如果与我的Chrome或某些内容有关)

我很确定这不是样式,因为约翰·卡特菲尔德(John Catterfeld)毫无问题地复制了它,所以我希望那里的人仍然可以为我指出正确的方向(为什么我的客户也是如此)。如果John使用的是Windows,这可能是Chrome / OSX的本机)


2
您可以提供生成的CSS吗?这比使用SASS源要容易得多。
RoToRa 2011年

+1那个插件很棒-简单,并且拥有我需要的选项。到目前为止,我偶然发现了可能是最佳的占位符解决方案。
easwee

如果有人对引导程序设置有疑问,可以使用以下两个选项:font-size:large; 而不是px; 和line-height:normal;
琴颈2013年

Answers:


229

我有同样的问题。

我通过从输入中删除行高来修复它。检查是否有行高导致问题


6
错误。对于输入元素,占位符不受行高的影响,但是填充不是最佳解决方案。最好的方法是使用VERTICAL-ALIGN CSS属性(我知道它通常什么也不做,但是在这种情况下,它确实可以做)。
RIK

1
是的,令人惊讶的是,DID解决了该问题。即使没有行高帮助,键入的文本仍保持垂直居中。
hndcrftd 2012年

59
当直接在输入中没有行高时,然后添加line-height: normal;对我
有用

无论如何,您都必须为浏览器添加行高,但是可以完成Safari的工作
Kaloyan Stamatov 2013年

95

我有类似的问题,我的问题是侧面填充,解决方案是文本缩进,但我没有意识到文本缩进会影响占位符的侧面位置。

input{
  text-indent: 10px;
}

28

如果要保持行高并强制占位符相同,则可以使用较新的浏览器版本直接编辑占位符CSS。那对我来说成功了:

input::-webkit-input-placeholder { /* WebKit browsers */
  line-height: 1.5em;
}
input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
  line-height: 1.5em;
}
input::-moz-placeholder { /* Mozilla Firefox 19+ */
  line-height: 1.5em;
}
input:-ms-input-placeholder { /* Internet Explorer 10+ */
  line-height: 1.5em;
}


2

删除行高确实会使您的文本与占位符文本对齐,但是它不能正确解决您的问题,因为您需要使设计适应此缺陷(这不是错误)。添加垂直对齐也不会解决问题。我没有在所有浏览器中都尝试过,但是肯定不能在Safari 5.1.4中使用。

我听说过有一个jQuery修复程序,它不是跨浏览器占位符支持(jQuery.placeholder),而是用于样式占位符,但我还没有找到。

同时,您可以解析到此页面上的表格,该表格显示不同样式的不同浏览器支持。

编辑:找到了插件!jquery.placeholder.min.js为您提供了完整的样式功能和讨价还价的跨浏览器支持。


试图找到一个非占位符修复程序,尽管我已经使用了上面的jquery插件:)谢谢您的帮助!
2012年

请记住,尽管这是两个不同的插件。我不确定您使用的是什么(演示无法在我的任何浏览器中使用),但是这个使用元素的占位符属性,并动态创建一个在输入字段上方呈现的跨度,提供最大的样式可能性。
zykadelic 2012年

2

我有一个问题,仅出现在Internet Explorer中。输入字段的样式

height:38px;
line-height:38px;

不幸的是,在IE中,初始占位符显示的位置不正确。但是,当我单击该字段然后离开该字段时,占位符出现在正确的位置。

我的解决方案是设置:

line-height:normal;

2

设置line-height: 0px;为我在Chrome中修复


2
您能解释一下这增加了四年前的公认答案吗?
内森·塔吉

1
@NathanTuggy对我来说,可接受的答案建议您line-height从元素中完全删除该属性。对于我什么都不做,解决我自己的问题的原因是line-height: 0px
JobJob 2015年

同样在这里,这实际上是为我解决了这个问题。
aeroson '16

1

我使用您的屏幕截图作为背景图片并删除了多余的标记,创建了一个小提琴,它似乎可以正常工作

http://jsfiddle.net/fLdQG/2/(需要Webkit浏览器)

这对您有用吗?如果没有,您是否可以使用确切的标记和CSS更新小提琴?


嗯,我检查了链接,它也对我不起作用。您认为我的Chrome浏览器中有引起该问题的插件/东西吗?截图:grab.by/8OFf
被腐蚀

使用野生动物园对其进行了检查,并且可以正常工作。chrome和safari不应该渲染相同的东西吗?
被腐蚀

嗯,我不知道会像这样影响您布局的插件,但是Chrome和Safari都适合我(是的,它们应该呈现相同的内容)。
2011年

1
我在Mac上使用9.0.597.84(chrome)。您正在使用哪个?
被腐蚀

我使用Chrome 8.0.552.237在Windows 7
ajcw

1

我将os x上的Chrome更新到最新的稳定版本(9.0.597.94)时就注意到了这个问题,因此这是一个Chrome错误,希望可以修复。

我很想不要尝试解决此问题,而只是等待修复。这只是意味着要进行更多的工作。


嗯,所以可以确认了吗?有没有办法“降级”我们的chrome以检查它是否真的是chrome?
被腐蚀

1
现在是2013年,而我仍然在最新版本的chrome上遇到此问题:版本27.0.1453.116 m
Postscripter

1

占位符不受浏览器的影响,line-height并且padding在浏览器上不一致。

我找到了另一种解决方案。

VERTICAL-ALIGN。这可能是唯一的工作时间,但是请尝试改而使许多CSS代码崩溃。


2
对我没有任何帮助
后记

1

删除行高或使用填充设置...在所有浏览器中都可以使用


1

我在约翰·卡特费尔德(John Catterfeld)的博客上找到了可以解决我的问题的答案。

... Chrome(v20-30)几乎实现了所有样式,但有一个主要警告-占位符样式不会调整输入框的大小,因此请避免行高和顶部或底部的填充。

如果您使用行高或填充,您将对生成的占位符感到沮丧。到目前为止,我还没有找到解决方法。


1

如果要向右移动占位符文本并将光标留在空白处,则需要在占位符属性的开头添加空格:

<input type="email" placeholder="  Your email" />

1

我已经为Angular应用测试了此页面上此处给出的几乎所有方法。只有我发现通过&nbsp;插入空格的解决方案,即

角材料

<input matInput type="text" class="pl-2" placeholder="&nbsp;&nbsp;Email">

非角材料

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>

<div class="container m-3 d-flex flex-column align-items-center justify-content-around" style="height:100px;">
<input type="text" class="pl-0" placeholder="Email with no Padding" style="width:240px;">
<input type="text" class="pl-3" placeholder="Email with 1 rem padding" style="width:240px;">
</div>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.