2010-09-06 6 views
31

Me he dado cuenta del problema anteriormente, pero supongo que no importa tanto como ahora.Problema en la altura de la línea de Firefox con los campos de entrada

Lo que descubrí es que Firefox tiene un valor de altura de línea predeterminado de 1.2 para campos de entrada que no se pueden cambiar. Al menos en OSX, no tengo Windows, así que no puedo confirmarlo allí.

Hice algunos experimentos y pruebas y no hay forma de cambiar el valor de altura de línea predeterminado de Firefox. Todos los otros navegadores (vale, acabo de probar con Chrome y Safari) obedecen perfectamente mi valor pero no Firefox.

¿Alguien ha notado esto y, en caso afirmativo, ha encontrado una solución para superar esto?

+0

Oh, necesito mencionar que solo lo confirmé con un tamaño de letra de 16px. Lo más probable es que varíe con diferentes tamaños de fuente. Probablemente. – Ragnar

+3

Ok, encontré una respuesta: http://www.cssnewbie.com/input-button-line-height-bug/ – Ragnar

+1

esto también está relacionado con http://stackoverflow.com/questions/7229568/input-height-differences- in-firefox-and-chrome –

Respuesta

3

Por lo que sé por experiencia, la altura de línea en la entrada no cambiará a menos que cambie el tamaño de la fuente, entonces la altura de la línea cambiará para ser igual que el tamaño de fuente + 4px (2 arriba 2 bot, supongo).

En caso de que esto le moleste con el estilo, puede usar el acolchado superior e inferior para lograr un efecto de altura de línea falso mayor.

+0

Mira, eso es lo que sucede cuando no se especifica la altura de la línea y simplemente juegue con relleno, se verá completamente diferente en otros navegadores. Al menos en navegadores web en OSX. – Ragnar

+0

Sí, puede hacer mucho ruido. No recomendaría el estilo de los campos de entrada en absoluto y dejaría el comportamiento predeterminado (también usted difícilmente puede confundir al usuario dejándolo en el valor predeterminado) y tampoco vale la pena perder un tiempo precioso si el beneficio monetario no será mucho al agregar esta función. – easwee

+0

Otro enfoque que puede tomar es eliminar todo el estilo de la entrada y hacerlo transparente y que st Esto se ve con una imagen div y backroundg envolvente. A menudo uso esta técnica en diseños gráficos intensivos y los usuarios apenas notarán la altura de la línea. – easwee

0

Use Height en lugar de Line-Height. Esto funciona para mí en casi todos los navegadores de Windows 7, pero no lo he probado en OSX.

+0

¿En qué navegador de Windows 7 no funciona? – brentonstrine

+0

vertical-alinear: medio; no se aplica en Chrome 30 (OS X) cuando se usa esta técnica. – Larry

+0

La mejor manera de evitar el uso de 'relleno', funcionará en todos los navegadores, incluidos IE 7-8-9, FF, Chrome, Safari en Windows 7-8 – TechYogi

3

Si su entrada y botón de enviar están lado a lado, con el botón hacia abajo alrededor de 1 píxel más baja que la entrada (se parece a la imagen de fondo está apagado), un simple:

display:inline-block; 
vertical-align: top; 

en las líneas de botón, perfectamente en FF & IE.

22

Desafortunadamente la línea de altura se establece en! Importante en el css base de Firefox ... http://hg.mozilla.org/mozilla-central/rev/b97aef275b5e

+0

Buen hallazgo. Me salvó otra explosión de cabeza en la pared :) +1 – Morpheus

+10

Dios mío ... esto nunca será reparado. – Larry

+0

muestra perfecta de '! Important es anti-patrón en css' – Liang

5

siempre me Estilo mis botones contra anclas, los botones, las etiquetas, y supedita a garantizar que, independientemente de qué elemento se usa , el resultado se ve exactamente igual.

Desde Firefox insiste en usar !important declarar line-height, la única manera de que pueda superar con calma este problema es forzar a todos los demás proveedores de utilizar line-height: normal para los botones, y luego utilizar el relleno para centrar verticalmente el texto:


/** 
* Consistently style buttons on anchors, buttons, labels, and submits 
*/ 
.btn { 
    . 
    . 
    . 
    height: auto;  // ensure heights on inputs do not affect submit buttons 
    line-height: normal; // all browsers use FF's ever unchanging value 
    padding: .5em 1em; // vertically center the text in the button 
    . 
    . 
    . 
} 

Esto funciona de manera similar para las entradas.

0

Simplemente déle al elemento de formulario de envoltura la altura de línea deseada y al menos todos los campos de entrada de tipo = "texto" en Firefox tomarán la misma altura de línea. Los botones Enviar parecen comportarse de manera diferente ...

Cuestiones relacionadas