Foros del Web » Creando para Internet » CSS »

[SOLUCIONADO] Alinear texto e imagen un un <li>

Estas en el tema de Alinear texto e imagen un un <li> en el foro de CSS en Foros del Web. Buenas, He creado la siguiente lista. Me gustaría, en una de las opciones, combinar el texto con una imagen. Lo que no me gusta es ...
  #1 (permalink)  
Antiguo 29/04/2014, 03:13
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Alinear texto e imagen un un <li>

Buenas,
He creado la siguiente lista. Me gustaría, en una de las opciones, combinar el texto con una imagen.


Lo que no me gusta es la alineación del texto con la imagen. Me gustaría que fuera centrada verticalmente.
Se puede consultar el ejemplo en http://www.tepui.cat/foro/index.html
Para visualizar el ejemplo hay que redimensionar el navegador a una anchura máxima de 360px y seleccionar el icono menú, que está a la parte superior izquierda

Gracias
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #2 (permalink)  
Antiguo 29/04/2014, 03:20
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Alinear texto e imagen un un <li>

Como la imagen es un elemento en linea, te bastaría con ponerle:

Código CSS:
Ver original
  1. vertical-align: middle;
  #3 (permalink)  
Antiguo 29/04/2014, 05:42
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: Alinear texto e imagen un un <li>

Buenas pzin,
Ya tengo puesto el vertical-align, pero no sé ver qué propiedad la invalida.
Controlo con media screen la visualización en los móviles, y aquí tengo el siguiente código:
Código CSS:
Ver original
  1. nav ul li{clear:both;box-sizing:border-box;-moz-box-sizing:border-box;font-size:1.2em;width:100%;text-align:left;height:40px;border:1px solid #000;vertical-align:middle;padding:10px;font-weight:bold;}

Gracias.
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #4 (permalink)  
Antiguo 29/04/2014, 05:48
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Alinear texto e imagen un un <li>

Lo que quieres centrar verticalmente es la imagen, así que tienes que aplicárselo a la imagen.
  #5 (permalink)  
Antiguo 29/04/2014, 06:11
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: Alinear texto e imagen un un <li>

Gracias de nuevo pzin,
Con tu sugerencia lo único que he conseguido es alinear el texto, pero la imagen se queda igual:

Gracias
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #6 (permalink)  
Antiguo 29/04/2014, 07:01
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Alinear texto e imagen un un <li>

Pero el problema no es el centrado de la imagen en si misma, que está centrada, sino que la imagen es demasiado grande ¿no? De hecho si cambias el valor de middle a bottom o top verás que la imagen cambia su alineación, aunque parezca que lo haga el texto, pero es porque es demasiado grande. Entonces o bien pones la imagen más pequeña, o amplias el padding de la lista, o aumentas el tamaño de la fuente, etc. La cuestión es hacerle espacio a la imagen.

También puedes poner la imagen en un posición absoluta y hacer algo así:

Código CSS:
Ver original
  1. li {
  2.   position: relative;
  3. }
  4.  
  5. img {
  6.   position: absolute;
  7.   top: calc(50% - Xpx);
  8. }

Donde X es la mitad de la altura de la imagen. O también puedes usar translateY(-50%) para no andar calculando nada ni poniendo posiciones absolutas ni relativas —esto sería ya añadiendo prefijos propietarios. O simplemente mover la imagen hacia arriba con:

Código CSS:
Ver original
  1. img {
  2.   position: relative;
  3.   top: -10px;
  4. }

Ya el valor que sea lo miras tú.
  #7 (permalink)  
Antiguo 29/04/2014, 09:08
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: Alinear texto e imagen un un <li>

Gracias pzin de nuevo,
Seguro que llevas la razón, pero hay una cosa que no entiendo de lo que me dices. Comentas que la imagen es demasiado grande, 30x30.
A nav ul li le he indicado height:40px, por lo que entiendo que la imagen debe caber, no?
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #8 (permalink)  
Antiguo 29/04/2014, 09:24
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Alinear texto e imagen un un <li>

Cita:
Iniciado por mblascog Ver Mensaje
Seguro que llevas la razón, pero hay una cosa que no entiendo de lo que me dices. Comentas que la imagen es demasiado grande, 30x30.
A nav ul li le he indicado height:40px, por lo que entiendo que la imagen debe caber, no?
Pero estás cambiando el modelo de caja con box-sizing haciendo que borde y relleno formen parte de esos 40 píxeles. Si usas la herramienta de desarrolladores verás que la altura es computada a 14 píxeles:

  #9 (permalink)  
Antiguo 29/04/2014, 09:45
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: Alinear texto e imagen un un <li>

Muchas gracias pzin,
Me faltan muchos conocimientos. Por la noche miro de entenderlo.
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #10 (permalink)  
Antiguo 29/04/2014, 15:08
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: Alinear texto e imagen un un <li>

Buenas pzin,
Suelo usar la herramienta para desarrolladores, pero aún no la acabo de dominar.
He sacado el box-sizing y la altura de <li> ahora es de 40 píxeles, que es lo correcto.
El enlace <a> 16 píxeles y la imagen 30. No debería salir todo centrado verticalmente ahora?
Gracias

__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #11 (permalink)  
Antiguo 29/04/2014, 15:35
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Alinear texto e imagen un un <li>

¿Le volviste a quitar el alineamiento vertical a la imagen?
  #12 (permalink)  
Antiguo 29/04/2014, 15:49
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: Alinear texto e imagen un un <li>

Buenas pzin,
La verdad es que no, está puesto el alineamiento vertical a la imagen, pero no se ve desde las herramientas de desarrolladores y no entiendo por qué. Si miras la hoja de estilos está en la linea 203.

Gracias.
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #13 (permalink)  
Antiguo 30/04/2014, 09:04
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: Alinear texto e imagen un un <li>

Buenas,
No hay manera de encontrar donde está el error, sigo sin ser capaç de alinear verticalmente texto e imagen en una etiqueta <li>
El código css general, es el siguiente:
Código CSS:
Ver original
  1. nav{clear:both;float:left;width:100%;padding-bottom:1%;}
  2.  
  3. nav ul {background:gray;}
  4.  
  5. nav ul li{
  6.     background:gray;
  7. /*  box-sizing:border-box;
  8.     -moz-box-sizing:border-box;*/
  9.     display:inline-block;
  10.     font-size:.9em;
  11. /*  float:left; */
  12.     width:16.3%;
  13.     text-align:center;
  14.     padding:0.5%;
  15.     margin:0;
  16.     height:25px;
  17. }
  18. nav ul li:hover{
  19.     font-weight:bold;  
  20.     background:rgba(0,0,0,.6);
  21. }
  22. nav ul li a{
  23.     color:white;
  24.     text-transform:uppercase;
  25. }

Y el que en estos momentos me está llevando de cabeza, cuando la web se visualiza en un móvil, es el siguiente:

Código CSS:
Ver original
  1. @media screen and (max-width:360px) {
  2.     body {font-size:0.7em;}
  3.     #menu{display:inline;}
  4.     #bandera{display:inline;}
  5.     nav{padding:0;display:none;}
  6.     nav ul li{font-size:1.2em;width:100%;text-align:left;height:40px;border:1px solid #000;padding-left:10px;font-weight:bold;vertical-align:middle;}
  7.     nav ul li a{height:100%;vertical-align:middle;}
  8.     nav ul li img {vertical-align:middle;}
  9.     h1{font:1.5em/1.0 'Arial';font-weight:bold;background:gray;padding:3%;}
  10.     section{background:white;font:1.2em/2.0 'Arial'}
  11. }

Alguna sugerencia, por favor!!!
Gracias
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #14 (permalink)  
Antiguo 30/04/2014, 10:15
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Alinear texto e imagen un un <li>

Cita:
Iniciado por mblascog Ver Mensaje
La verdad es que no, está puesto el alineamiento vertical a la imagen, pero no se ve desde las herramientas de desarrolladores y no entiendo por qué. Si miras la hoja de estilos está en la linea 203.
Pues es raro que lo tengas puesto y no se aplique.

Edito: Veo que si que está puesto. Solo tienes que centrar el texto verticalmente, lo puedes hacer aplicando un line-height al enlace:

Código CSS:
Ver original
  1. nav ul li a {
  2.   line-height: 40px;
  3. }

Del mismo tamaño que el tamaño que tenga li.
  #15 (permalink)  
Antiguo 30/04/2014, 10:27
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: Alinear texto e imagen un un <li>

Tema resulto.
Muchas gracias pzin.
__________________
Qué fácil cuando lo sabes y qué difícil cuando no

Etiquetas: alinear
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 13:19.