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プレースホルダーの色(の)しか変更できないようですが、含まれている入力のパディングを編集しようとすると、入力のデザインが崩れます。髪を抜く

以下は、プレースホルダーとテキスト入力の入力フィールドの画面です。

プレースホルダー テキスト入力

編集

今のところ、私はこのjqueryプラグインに頼りました。

それは箱から出してすぐに動作し、私のクロムの問題を修正します。私はまだ問題が何であるかを明らかにしたいと思います(それがMYクロームまたは何かと関係がある場合)

John Catterfeldが問題なくそれを再現したので、スタイルではないと確信しています。そのため、誰かが私にこれが起こっている理由(クライアントのクロムも同様)を正しい方向に向かわせてくれることを願っています。 JohnがWindowsを使用している場合、これはおそらくChrome / OSXのネイティブです。


2
生成されたCSSを提供できますか?SASSソースよりも作業がはるかに簡単です。
RoToRa

+1そのプラグインは素晴らしく、シンプルで、必要なオプションを正しく持っています。おそらく最高のプレースホルダーソリューションは、私が今まで遭遇したものです。
easwee

ブートストラップの設定に問題がある場合は、次の2つのオプションが役立ちます。font-size:large; pxの代わりに; および行の高さ:通常;
ネッカー

回答:


229

同じ問題が発生しました。

入力から行の高さを削除して修正しました。問題の原因となっている線の高さがあるかどうかを確認します


6
違う。input要素では、プレースホルダーは行の高さに影響されませんが、パディングは最善の解決策ではありません。最善の方法は、VERTICAL-ALIGN CSSプロパティを使用することです(私は通常、何もしないことを知っていますが、この場合はそうします)。
RIK

1
はい、驚くべきことに、そのDIDは問題を修正します。また、入力したテキストは、行の高さのヘルプがなくても、垂直方向に中央揃えのままです。
hndcrftd 2012年

59
入力に直接行の高さがなかった場合、追加するとline-height: normal;うまく
いき

とにかく、ブラウザの行の高さを追加する必要がありますが、それはサファリの仕事をします
Kaloyan Stamatov

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

実際に行の高さを削除すると、テキストがプレースホルダーテキストに揃えられますが、デザインをこの欠陥に適合させる必要があるため、問題は適切に解決されません(バグではありません)。vertical-alignを追加しても、取引は成立しません。私はすべてのブラウザで試したことはありませんが、Safari 5.1.4では確実に動作しません。

これに対するjQueryの修正を聞いたことがあります。これはクロスブラウザープレースホルダーサポート(jQuery.placeholder)ではありませんが、プレースホルダーのスタイリング用ですが、まだ見つかりません。

当面は、このページの表を参照して、さまざまなスタイルに対するさまざまなブラウザのサポートを確認してください

編集:プラグインが見つかりました!jquery.placeholder.min.jsは、完全なスタイリング機能とバーゲンへのクロスブラウザーサポートの両方を提供します。


プレースホルダー以外の修正を見つけようとしていましたが、上記のjqueryプラグインをすでに使用していました。
腐食

ただし、これらは2つの異なるプラグインであることに注意してください。あなたが使用しているものが何をしているのかはわかりませんが(デモはどのブラウザでも機能しません)、これは要素のプレースホルダー属性を使用し、入力フィールドの上にレンダリングされるスパンを動的に作成します。最大のスタイリングの可能性を提供します。
zykadelic

2

Internet Explorerだけに表示される問題がありました。入力フィールドがスタイル設定されました

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

IEでは残念ながら、最初のプレースホルダーは正しい位置に表示されません。しかし、フィールドをクリックしてこのフィールドを離れると、プレースホルダーが正しい位置に表示されました。

私の解決策は設定することでした:

line-height:normal;

2

設定line-height: 0px;は私のためにそれをChromeで修正しました


2
これが4年前の承認された回答に何を追加するか説明できますか?
Nathan Tuggy、2015

1
@NathanTuggyが私に受け入れた答えはline-height、要素から属性を完全に削除することを提案しました。私にとっては何もせず、問題を修正したのは設定することでしたline-height: 0px
JobJob 2015

ここでも同じですが、これが実際に問題を修正したものです。
エアロソン

1

私はあなたのスクリーンショットを背景画像として使用し、余分なマークアップを取り除くフィドルを作成しました、そしてそれはうまくいくようです

http://jsfiddle.net/fLdQG/2/ブラウザが必要)

これはうまくいきますか?そうでない場合、フィドルを正確なマークアップとCSSで更新できますか?


うーん、リンクを確認したところ、うまくいきませんでした。それを引き起こしている私のクロムにプラグイン/何かがあると思いますか?スクリーンショット:grab.by/8OFf
腐食

サファリを使用してそれをチェックし、それは動作します。クロムとサファリは同じものをレンダリングすべきではありませんか?
腐食

うーん、私はこのようなレイアウトに影響を与えるプラグインを認識していませんが、ChromeとSafariはどちらも正常に動作します(そうです、それらは同じものをレンダリングするはずです)。
ajcw

1
Macでは9.0.597.84(chrome)を使用しています。どちらを使っていますか?
2011

私は、Windows 7上のクロム8.0.552.237を使用しています
ajcw

1

os xでChromeを最新の安定版リリース(9.0.597.94)に更新した瞬間に問題に気付いたので、これはChromeのバグであり、うまくいけば修正されるでしょう。

私はこれを回避しようとさえせず、修正を待つだけになりたくなります。それはそれを取り除くより多くの仕事を意味するだけです。


うーん、それで確認されたの?それが本当にクロムであるかどうかを確認するためにクロムを「ダウングレード」する方法はありますか?
腐食

1
それは2013年であり、Chromeの最新バージョンで引き続きこの問題が発生します。バージョン27.0.1453.116 m
ポストスクリプト

1

プレースホルダーは影響を受けずline-heightpaddingブラウザ上の矛盾です。

私は別の解決策を見つけました。

VERTICAL-ALIGN。これが機能するのはおそらくこれが唯一の時間ですが、代わりにそれを試して、CSSコードの多くの行を掘り下げてください。


2
私には何もしません。
2013


1

ジョン・カタッターフェルドのブログで、これに対する私の不満を解消した答えを見つけました。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.