Foros del Web » Creando para Internet » CSS »

[SOLUCIONADO] Mismos estilos a input, textarea y select!

Estas en el tema de Mismos estilos a input, textarea y select! en el foro de CSS en Foros del Web. Hola a todo mundo! Hace tiempo que no venía, y me da mucho gusto estar aquí . Bueno, al grano. Últimamente estoy maquetando mucho y ...
  #1 (permalink)  
Antiguo 16/02/2016, 20:37
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Pregunta Mismos estilos a input, textarea y select!

Hola a todo mundo!

Hace tiempo que no venía, y me da mucho gusto estar aquí .

Bueno, al grano. Últimamente estoy maquetando mucho y siempre me topo con el mismo problema al intentar aplicar los mismos estilos a los controles de un formulario.

Digamos que tengo un input, un select y un textarea, y a los tres les asigno los mismos estilos:
Código CSS:
Ver original
  1. input,
  2. select,
  3. textarea {
  4.     display: block;
  5.     width: 100%;
  6.     height: 20px;
  7.     padding: 10px;
  8.     border: 1px solid #ccc;
  9. }

El resultado es esta cosa horrible.

Por un lado el select no reconoce el padding, y por otro, el input y textarea tienen un ancho mayor a su contenedor.

¿Cómo lidian ustedes, señores, con esto?

Uno puede utilizar un width: 200px; y con eso se soluciona la cosa del ancho. ¿Pero si queremos porcentajes?



Saludos!
  #2 (permalink)  
Antiguo 17/02/2016, 02:38
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: Mismos estilos a input, textarea y select!

Cita:
Iniciado por berkeleyPunk Ver Mensaje
Hola a todo mundo!

Hace tiempo que no venía, y me da mucho gusto estar aquí .

Bueno, al grano. Últimamente estoy maquetando mucho y siempre me topo con el mismo problema al intentar aplicar los mismos estilos a los controles de un formulario.

Digamos que tengo un input, un select y un textarea, y a los tres les asigno los mismos estilos:
Código CSS:
Ver original
  1. input,
  2. select,
  3. textarea {
  4.     display: block;
  5.     width: 100%;
  6.     height: 20px;
  7.     padding: 10px;
  8.     border: 1px solid #ccc;
  9. }

El resultado es esta cosa horrible.

Por un lado el select no reconoce el padding, y por otro, el input y textarea tienen un ancho mayor a su contenedor.

¿Cómo lidian ustedes, señores, con esto?

Uno puede utilizar un width: 200px; y con eso se soluciona la cosa del ancho. ¿Pero si queremos porcentajes?



Saludos!
Hola!

Creo que el problema te viene por ponerle
Código CSS:
Ver original
  1. width:100%;
  2. padding:10px;

De ahí está ocupandote el 100% y luego le estas "añadiendo" 10px por la izquierda y 10px por la derecha...

A mí me resulta muy útil en esos casos jugar con los porcentajes, normalmente suelo poner algo tal que así:

Código CSS:
Ver original
  1. width:96%;
  2. padding:2%; /*haria el 100% del input al sumar el 2% en la izq + el 2% en la derecha [2+96+2=100%]*/

Ya nos dices si te funciona
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #3 (permalink)  
Antiguo 17/02/2016, 04:18
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Mismos estilos a input, textarea y select!

El tema del relleno, lo arreglas cambiando el modelo de caja.

Y lo del select, siempre son especialitos. Lo más fácil es quitarle la apariencia.

Déjalo tal que así:

Código CSS:
Ver original
  1. box-sizing: border-box;
  2. appearance: none;

Y luego quitar la altura (yo creo que es mejor usar rellenos y tamaño de la fuente) y ya solamente añadir un color de fondo.

Quedaría así: https://jsfiddle.net/e9fgrrsd/1

Para recuperar la flecha del select puedes hacerlo con un pseudo elemento solo en el select.
__________________
(:
  #4 (permalink)  
Antiguo 18/02/2016, 20:41
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
De acuerdo Respuesta: Mismos estilos a input, textarea y select!

Gracias por responder, madman_18 y maestro pzin.

madman_18, lo que dices del width:96% y el padding:2%, es buena idea, funcionó bien.

pzin, tu CSS es casi excelente, ya está, casi! Tengo un par de preguntas sobre tu comentario. Ojalá puedas responderlas.

1)
Cita:
Iniciado por pzin Ver Mensaje
...luego quitar la altura (yo creo que es mejor usar rellenos y tamaño de la fuente)
¿A qué te refieres con usar rellenos y tamaño de la fuente? ¿Por rellenos te refieres a backgrounds, a paddings? ¿Para qué asignar tamaño de fuente?

2)
Cita:
Iniciado por pzin Ver Mensaje
...Para recuperar la flecha del select puedes hacerlo con un pseudo elemento solo en el select.
Veo que el appearance quitá la flecha. Intenté recuperarla con un :before y :after, pero no funciona. En esta página dicen cómo recuperarla, pero la cosa es que ahí suponen que uno hace formularios a mano, creando el HTML custom, y por ello puede uno poner y quitar divs por aquí y por allá. ¿Pero qué tal que, por la razón que sea, uno no puede añadir ni quitar elementos del formulario?

3)
Por último, ¿cómo lograr que todos los elementos tengan la misma altura? Excepto el textarea, que siempre es más alto.
Se me ocurrió ponerle un min-height y max-height, lo cual funciona bien, salvo que a una pequeña altura, el select se ve medio recortado. Le quité el padding al select y no queda mal. ¿Te parece buena solución? Miren cómo queda.

Última edición por berkeleyPunk; 18/02/2016 a las 21:18
  #5 (permalink)  
Antiguo 19/02/2016, 01:57
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Mismos estilos a input, textarea y select!

Con relleno me refiero a padding. Eso y el tamaño de a fuente ya te darán una altura.

En un select no puedes usar pseudo elementos, porque, igual que el resto de elementos de formularios no tienen contenidos. Por eso habitualmente se mete dentro de algún otro elemento para luego poner la flecha.

Si no puedes cambiar el formulario, solo se me ocurre que mediante JavaScript modifiques el DOM para añadir los elementos que necesites.
__________________
(:
  #6 (permalink)  
Antiguo 20/02/2016, 06:55
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: Mismos estilos a input, textarea y select!

Cita:
Iniciado por pzin Ver Mensaje
...Si no puedes cambiar el formulario, solo se me ocurre que mediante JavaScript modifiques el DOM para añadir los elementos que necesites.
Entendido. Lo de modificar el DOM mediante jQuery o JS generalmente nunca lo hago, no me gusta hacerlo, salvo en casos de vida o muerte.

De cualquier forma, lo que me han dicho en este post ya ha valido la pena y creo que es suficiente para, en el futuro, lidiar de mejor forma con la maquetación de formularios.


Saludos!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:47.