2011-06-29 7 views
30

¿Los elementos de entrada de formulario html, como el campo de texto de entrada o el cuadro de selección, no heredan automáticamente la propiedad de la familia de fuentes del cuerpo? Por ejemplo:¿La familia de fuentes no se hereda en los campos de entrada del formulario?

body { 
font-family:'Lucida Casual', 'Comic Sans MS'; 
} 

No va a utilizar la fuente más arriba en el campo de formulario de entrada a continuación:

<form> 
    <div> 
     <label for="name">Name</label> 
     <input id="name" name="name" type="text" /> 

    <div> 
</form> 

Por favor, echar un vistazo a http://jsfiddle.net/3fkNJ/

¿Es común que tenemos que volver -definir la familia de fuentes para los campos de entrada, ¿o estoy haciendo algo mal?

Respuesta

37

Sí, debe colocar el font en la etiqueta input.

.input{ 
padding:5px; 
font-size:16px; 
font-family:'Lucida Casual', 'Comic Sans MS';  
} 

http://jsfiddle.net/jasongennaro/3fkNJ/1/

También se puede utilizar para establecer las inheritfont en form campos.

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

http://jsfiddle.net/jasongennaro/3fkNJ/7/

EDITAR - explicación añadió

La mayoría de los navegadores muestran el texto dentro form elementos como la del sistema operativo del usuario. Esto es para mantener, tal como lo entiendo, una apariencia común para el usuario. Sin embargo, todo puede ser sobrescrito por el código anterior.

+0

Esto no funciona en el caso de jquery-autocompletar. ¿Tienes alguna pista de por qué? –

+0

@ManasPaldhe es probablemente porque autocompletar tiene un selector css más específico. Comprobé http://jqueryui.com/autocomplete/ y muestra que 'input' tiene un' id' de "tags". Establece la fuente en ese 'id' y deberías estar bien. –

1

trate de cambiar su atributo cuerpo CSS para

body *{font-family:'Lucida Casual', 'Comic Sans MS';} 

Las fuerzas * Cada elemento hijo para heredar el valor especificado en la regla CSS que haya escrito debido a las reglas CSS más especificación. Consulte fiddle here

Esto es práctico si desea que cada elemento de su página tenga el mismo valor de familia de fuentes, no tan práctico si desea que los formularios tengan un valor diferente.

Smashing Magazine has an article que pueden ser de ayuda.

Espero que ayude.

+1

Esto funcionará, pero es una práctica descuidada.El rendimiento recibe un golpe del selector '*' y el '*' tendrá prioridad en formas que no se esperan implícitamente. – TechZilla

+0

No hace que sea una "práctica descuidada", solo significa que cuando se utiliza la persona necesita entender qué es lo que están haciendo, de ahí la referencia de Smashing Magazine. En cuanto al rendimiento, sí, utiliza una mayor sobrecarga del navegador, pero si es apropiado depende del objetivo, ¿debería cada elemento tener la misma fuente independientemente o jus unos pocos elementos? Si solo se trata de unos pocos elementos, especificar en el selector es mejor. Para mí, sunjie tiene claro que quiere que todos los elementos tengan la misma fuente, por lo que mi solución sería apropiada para hacer cumplir esto, pero sí, tendrá sus peajes en otros lugares. – Ryan

+1

Creo que entendiste mal, exactamente lo que dije era "práctica descuidada". Si bien sería preferible evitar los selectores '' 'extraños, simplemente usar uno no es necesariamente una 'práctica descuidada'. Por otro lado, usar su CSS para evitar idiosincrasias de herencia ES una "práctica descuidada". En ninguna parte el autor declaró que quiere que * universalmente * precedan a los selectores con una familia de fuentes especificada. – TechZilla

0

que trabajó para mí:

tags-input *, tags-input *:before, tags-input *:after { 
    font-family: "IRANSans" !important; 
} 

tags-input .tags .input { 
    padding-right: 5px; 
    float: right !important; 
    font: 13px "IRANSans", tahoma !important; 
} 

tags-input .tags .tag-item { 
    float: right !important; 
    font: 13px "IRANSans", tahoma !important; 
} 
Cuestiones relacionadas