HTML5 placeholder CSS padding

j'ai déjà vu ce post et j'ai essayé tout ce que j'ai pu pour changer le rembourrage pour mon placeholder mais hélas, il semble qu'il ne veut tout simplement pas coopérer.

en tout cas, voici le code pour le css. ( EDIT : C'est le css généré par sass)

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

et voici le html simple:

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

assez simple? l'espace réservé est éteint pour une raison quelconque, mais lorsque vous essayez de taper dans le champ de saisie de texte, le texte est aligné. Il semble que vous ne pouvez changer que la couleur (pour webkit ) du placeholder, mais si j'essaie d'éditer le rembourrage de l'entrée contenant, il casse la conception de l'entrée! tire les cheveux

voici les screenies du placeholder et du champ d'entrée avec entrée de texte:

placeholder text input

EDIT :

pour l'instant j'ai eu recours à ce jQuery plugin .

il fonctionne directement de la boîte et il corrige le problème de mon chrome. Je voudrais quand même découvrir quel est le problème (s'il a quelque chose à voir avec mon chrome ou quelque chose comme ça)

Je suis presque sûr que ce n'est pas les styles puisque John Catterfeld l'a reproduit sans problème, donc j'espère que quelqu'un là-bas pourrait encore me pointer à la bonne direction quant à la raison pour laquelle cela se produit à moi(chrome de mon client aussi bien. Donc c'est probablement natif de Chrome / OSX si John utilise windows)

116
demandé sur Community 2011-02-07 12:26:31

12 réponses

j'ai eu le même problème.

Je l'ai corrigé en supprimant la hauteur de ligne de mon entrée. Vérifiez s'il y a un peu de jeu de ligne qui cause le problème

215
répondu Johansrk 2014-04-08 19:20:07

j'ai eu un problème similaire, mon problème était avec le rembourrage latéral, et la solution était avec, text-indent, Je ne me suis pas rendu compte que l'effet de l'indentation textuelle l'emplacement latéral du placeholder.

input{
  text-indent: 10px;
}
39
répondu talsibony 2016-05-17 13:41:56

si vous voulez garder votre ligne-hauteur et forcer le placeholder à avoir la même, vous pouvez éditer directement le placeholder CSS depuis les nouvelles versions de navigateur. Cela a fait l'affaire pour moi:

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;
}
26
répondu floribon 2013-06-05 01:51:41
line-height: normal; 

travaillé pour moi;)

22
répondu user2264934 2013-12-04 19:37:44

j'ai eu un problème, qui apparaît juste dans internet explorer. Le champ d'entrée était intitulé

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

malheureusement dans IE le placeholder initial apparaît pas à la bonne position. Mais quand j'ai cliqué dans le champ et puis quitté ce champ, le placeholder est apparu sur la bonne position.

ma solution était de fixer:

line-height:normal;
2
répondu Babs 2014-02-28 10:30:26

supprimer la hauteur de ligne rend en effet votre texte aligné avec votre placeholder-texte, mais il ne résout pas correctement votre problème puisque vous avez besoin d'adapter votre conception à ce défaut (ce n'est pas un bug). Ajouter vertical-align ne fera pas l'affaire non plus. Je n'ai pas essayé dans tous les navigateurs, mais il ne fonctionne pas dans Safari 5.1.4 pour vous.

j'ai entendu parler d'une correction de jQuery pour ceci, qui n'est pas cross-browser placeholder support (jQuery.placeholder), mais pour les placeholders de style, mais je n'ai pas encore trouvé.

dans l'intervalle, vous pouvez résoudre à le tableau sur cette page qui montre le soutien de navigateur différent pour différents styles.

Edit: Trouvé le plugin! jquery.réservé.min.js vous offre à la fois des fonctionnalités complètes de style et un support multi-navigateur.

1
répondu zykadelic 2012-03-19 14:46:39

Réglage line-height: 0px; il fixe pour moi dans Chrome

1
répondu JobJob 2015-04-05 21:05:18

j'ai créé un violon en utilisant votre screenshot comme image de fond et en enlevant la marge supplémentaire, et il semble bien fonctionner

http://jsfiddle.net/fLdQG/2 / (navigateur webkit requis)

ça vous va? Si non, Pouvez-vous mettre à jour le fiddle avec votre marque exacte et CSS?

0
répondu ajcw 2011-02-07 12:25:29

j'ai remarqué le problème au moment où J'ai mis à jour Chrome sur os x à la dernière version stable (9.0.597.94) il s'agit donc d'un bug Chrome et j'espère qu'il sera corrigé.

je suis tenté de ne même pas essayer de travailler autour de cela et juste attendre la solution. Ce sera juste plus de travail pour l'enlever.

0
répondu will 2011-02-11 11:04:48

le paramètre n'est pas affecté par line-height et padding est incohérent sur les navigateurs.

j'ai trouvé une autre solution.

VERTICAL-ALIGN . C'est probablement la seule fois où cela fonctionne, mais essayez cela à la place et de céder de nombreuses lignes de code CSS.

0
répondu Robin Knight 2011-10-02 13:04:45

supprimer la ligne-hauteur ou mis en utilisant le rembourrage...il fonctionne dans tous les navigateurs

0
répondu Hiren Dihora 2014-09-16 08:37:52

j'ai trouvé la réponse qui remédiait à mes frustrations à ce sujet sur le blog de John Catterfeld .

... Chrome (v20-30) met en œuvre presque tous les styles, mais avec une mise en garde majeure – les styles de placeholder ne redimensionnent pas la boîte de saisie, donc restez à l'écart des choses comme la ligne-hauteur et le rembourrage haut ou bas.

si vous utilisez line-height ou padding vous allez être frustré par le résultat réservé. Je n'ai pas trouvé un moyen de contourner ce jusqu'à ce point.

0
répondu rb- 2017-02-04 21:41:55