123 votes

<input> n'hérite pas de la police de <body>.

J'ai des champs de saisie et d'étiquetage :

<label class="adm" for="UserName">User name</label>
<input class="adm" id="UserName" name="UserName" size="30" type="text" value="" />

et CSS :

body,html { font-family: Verdana,Arial,Helvetica,sans-serif; margin:0; padding:0; color: #111;}
label.adm  { font-size:0.9em; margin:0 0 3px 3px; display: block;}
input.adm  { font-size:0.9em; margin:0 0 3px 3px; }

Lorsque le code s'ouvre dans Firefox, les polices ne sont pas les mêmes. Firebug montre que les deux polices "devraient" hériter et quand je regarde le calcul, il montre que l'étiquette utilise Verdana. Cependant, l'entrée montre qu'elle utilise "MS Shell Dlg".

Quelqu'un peut-il expliquer ce qui se passe et pourquoi il ne semble pas obéir aux règles normales de CSS ?

0 votes

C'est très triste qu'ils ne le fassent pas. Je suppose que le W3C a décidé qu'il était préférable de les laisser être stylisés par défaut dans le système plutôt que de leur imposer leur propre style de broswer.

151voto

Gaby aka G. Petrioli Points 85891

Il n'hérite pas par défaut mais vous pouvez le configurer pour qu'il hérite avec css

input, select, textarea, button{font-family:inherit;}

démo : http://jsfiddle.net/gaby/pEedc/1/

0 votes

La propriété de la police hérite automatiquement si elle n'est pas mentionnée, voir ici : developer.mozilla.org/en/CSS/font

5 votes

@diEcho, ceci est vrai pour tous les éléments, à l'exception des éléments de formulaire, qui héritent du style du système actuel afin de conserver un aspect familier à l'utilisateur ( par défaut ), mais ils peuvent être remplacés manuellement.

1 votes

Faux ou pas, ce que Firebug me montrait était très déroutant : taille de police 12, mais calculée elle devenait quand même 13.3333. Après avoir défini la taille de la police comme héritée, de manière analogue à la réponse de Gaby, mon problème était résolu :O

16voto

John Green Points 7331

Les éléments de formulaire (entrées/textarea/etc) n'héritent pas des informations sur la police. Vous devez définir la famille de caractères de ces éléments.

0 votes

@jhon tout ce que vous dites est peut-être vrai, mais existe-t-il un document standard/valide à ce sujet ?

1 votes

Les éléments de police n'héritent pas non plus de la couleur, de l'arrière-plan, etc. En fait, les éléments de police sont la chose la moins fiable de tout le code html/css ! Vous ne pouvez pas spécifier une largeur pour une boîte de saisie et la garantie sera la même sur tous les navigateurs !

0 votes

Je veux dire les éléments de forme. Encore endormi :)

5voto

stoutie Points 301

Trois ans plus tard, je trouve étrange <input> éléments de types reset , submit y button n'héritent pas font-family dans Chrome ou Safari. J'ai découvert qu'ils ne recevaient pas non plus de rembourrage.

Mais quand je joue avec certaines propriétés, comme background , border ou cet étrange appearance la propriété, alors font-family y padding ont un effet, mais l'apparence native du bouton est perdue, ce qui n'est pas un problème si vous restyliser complètement les boutons.

Si vous voulez un bouton au look natif, avec un héritage de font-family utilisez le <button> au lieu de l'élément <input> .

Ver Codepen .

-1voto

rpd1297 Points 9

J'ai eu le même problème. Ce qui a fonctionné pour moi, c'est d'ajouter le style directement à l'élément input dans le html. Je code en React pour info.

<input style={{fontFamily: "YOUR_FONT_CHOICE_HERE"}} />

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X