Foros del Web » Creando para Internet » CSS »

Imposible centrar texto en un menu

Estas en el tema de Imposible centrar texto en un menu en el foro de CSS en Foros del Web. Hola buenas! Estoy venga a darle vueltas y es que no consigo centrar el texto de este menu horizontal. No funciona ni en firefox ni ...
  #1 (permalink)  
Antiguo 21/06/2013, 12:13
Avatar de wesse  
Fecha de Ingreso: junio-2003
Ubicación: España
Mensajes: 577
Antigüedad: 20 años, 10 meses
Puntos: 1
Imposible centrar texto en un menu

Hola buenas!
Estoy venga a darle vueltas y es que no consigo centrar el texto de este menu horizontal. No funciona ni en firefox ni en internet explorer. alguna sugerencia?

Código HTML:
<style type="text/css">
<!--
#menu{background-color:#ccc; width:550px; height:39px; margin: 110 0 0 0; float: right;}
#menu li{float:left;list-style:none;font-weight: bold;font-size:14px;}
#menu li a{color:#3F2F22;text-decoration:none;padding:4px 10px;display:block;}
#menu li a:hover{color:#FAF6DB; background:#000000}
#menu li img{margin:5px}

-->
</style>
</head>

<body>
  <div id="cabecera"> 
    <ul id="menu">
      <li id="ac"><a href="a.htm">index</a></li>
      <li><a href="a.htm">somos</a></li>
      <li><a href="a.htm">estamos</a></li>
      <li><a href="a.htm">contacto</a></li>
    </ul>
  </div>
</body> 
  #2 (permalink)  
Antiguo 21/06/2013, 14:28
Leonardo_Manrique
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Imposible centrar texto en un menu

Hola wesse,

Para centrar los elementos horizontalmente yo usaría Flexible Box Model o Flexbox.

Ahora bien, antes de aplicarlo te voy a decir dos cosas:
  1. Este es un modelo de cajas bajo revisión, por lo que está sujeto a cambios, actualizaciones o reemplazos.
  2. Las propiedades que voy a usar están desactualizadas. Es más, si uno se fija el borrador de la W3C puede ver que han cambiado las propiedades. Sin embargo los browsers, (por lo menos Chrome que es el que uso siempre - Firefox no uso - ) no soporta las nuevas propiedades. Por tal motivo utilizo las propiedades viejas.
De todas maneras creo yo que nunca está de más empezar a aprender algo nuevo aún más siendo que es candidato de ser un estándar. Cuando los browsers se actualicen a lo que dispone la W3C producto del trabajo del CSS Work Group (CSS WG), basta con leer el borrador y actualizar nuestro código.

Bueno, ahora vamos a tu problema:

Para utilizar Flexbox, primero debes agregar las siguientes clases:

p-flexbox y flex-hcc

Donde:
  • p-flexbox significa parent-flexbox, y
  • flex-hcc significa flexbox-horizontal-center-center

Por lo tanto en tu código HTML deberías poner lo siguiente:

Código HTML:
<div id="cabecera" class="p-flexbox flex-hcc">
 <!-- el resto de tu contenido -->
</div> 
Por último para que todo quede bien, deberías poner las siguientes reglas CSS:

Código:
.p-flexbox {

   /* Flexbox: Init setup */

   display: -webkit-box;
   display: -moz-box;
   display: box;
}

.flex-hcc {

   /* Flexbox: Principal setup */

   -webkit-box-orient: horizontal;
      -moz-box-orient: horizontal;
           box-orient: horizontal;

   -webkit-box-pack: center;
      -moz-box-pack: center;
           box-pack: center;

   -webkit-box-align: center;
      -moz-box-align: center;
           box-align: center;
}
Acá te dejo un fiddle para que veas como queda el resultado:

http://jsfiddle.net/F8EG7/

BWT, te dejo un par de "sugerencias":
  1. No abuses del uso de ids. Creo que es mejor usar clases. De esa manera si en el futuro te das cuenta de que existe otro elemento que necesita el mismo estilo, basta con agregarle la clase.
  2. Poné tu código CSS en un archivo externo para facilitar el mantenimiento. Si es el caso de que tu página web tiene poco contenido, pues bien, creo que no habría problema en establecer el estilo en la misma página (ya que garantizamos evitar un acceso al servidor); pero si tu código HTML es bastante largo (lo cual es muy probable a menos que estés experimentando), determina el estilo en un archivo externo. Para ello basta con usar la etiqueta <link> o bien <style> con un @import

Cheers,
Leonardo

Última edición por Leonardo_Manrique; 21/06/2013 a las 14:43
  #3 (permalink)  
Antiguo 21/06/2013, 15:42
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: Imposible centrar texto en un menu

Para alinear lo que tienes, casi que es mejor usar inline-block en lugar de flotar los elementos, y aplicar a algún elemento ascentral un text-align: center.

Sobre Flexbox, ya es más que borrador la nueva versión, siendo candidato a recomendación, y de hecho funciona en Chrome, Firefox e IE.
Hace poco Chris Coyier escribió un artículo como guía para Flexbox: http://css-tricks.com/snippets/css/a-guide-to-flexbox
  #4 (permalink)  
Antiguo 24/06/2013, 07:13
Avatar de wesse  
Fecha de Ingreso: junio-2003
Ubicación: España
Mensajes: 577
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: Imposible centrar texto en un menu

No hay una manera mas simple de hacer un centrado del texto? No puede ser...
  #5 (permalink)  
Antiguo 24/06/2013, 13:41
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: Imposible centrar texto en un menu

Cita:
Iniciado por wesse Ver Mensaje
No hay una manera mas simple de hacer un centrado del texto? No puede ser...
No es texto lo que quieres centrar, sino los elementos li. Y no sé qué le ves complicado a:

Cita:
Iniciado por pzin Ver Mensaje
Para alinear lo que tienes, casi que es mejor usar inline-block en lugar de flotar los elementos, y aplicar a algún elemento ascentral un text-align: center.
  #6 (permalink)  
Antiguo 24/06/2013, 18:22
 
Fecha de Ingreso: junio-2013
Mensajes: 2
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Imposible centrar texto en un menu

Como veis emplear display:table-cell, para poder aplicar text-align:center, sobre la propia lista ul?

[URL="http://jsfiddle.net/Desiknin/WtBv7/"]http://jsfiddle.net/Desiknin/WtBv7/[/URL]

#menu {
background-color:#ccc;
width:550px;
height:39px;
margin: 110 0 0 0;
float: right;
display:table-cell; /*añadido*/
text-align:center; /*añadido*/

}

#menu li {
/*float:left;*/ /*suprimido*/
display:inline; /*añadido*/
list-style:none;
font-weight: bold;
font-size:14px;
}
#menu li a {
color:#3F2F22;
text-decoration:none;
padding:4px 10px;
/*display:block; */ /*suprimido*/
}
#menu li a:hover {
color:#FAF6DB;
background:#000000
}
#menu li img {
margin:5px
}

Etiquetas: color, hover, imposible
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:44.