Foros del Web » Creando para Internet » CSS »

[SOLUCIONADO] Centrar elemento dentro del DIV padre.

Estas en el tema de Centrar elemento dentro del DIV padre. en el foro de CSS en Foros del Web. Hola, Estoy atascado intentando colocar un elemento en el centro del DIV que lo contiene (tanto horizontal como verticalmente). He estado buscando pero no encuentro ...
  #1 (permalink)  
Antiguo 27/11/2013, 08:14
 
Fecha de Ingreso: diciembre-2009
Ubicación: European Union
Mensajes: 29
Antigüedad: 14 años, 11 meses
Puntos: 2
Centrar elemento dentro del DIV padre.

Hola,

Estoy atascado intentando colocar un elemento en el centro del DIV que lo contiene (tanto horizontal como verticalmente). He estado buscando pero no encuentro la solución. Adjunto el problema.
Código:
<html>
<head>
<title>Test</title>
<style>
div {
    position: relative;
    width: 180px;
    height: 180px;
    background-color: yellow;
}
div p {
    position: absolute;
    top: 0;
}
</style>
</head>
<body>
    <div>
        <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/Cercle_bleu_100%25.svg/200px-Cercle_bleu_100%25.svg.png" width="180px" height="180px" alt="ring">
        <p>Centrame</p>
    </div>
</body>
</html>


Querría que el <p>Centrame</p> estuviese en el centro del <div>

Un saludo.
  #2 (permalink)  
Antiguo 27/11/2013, 08:42
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Centrar elemento dentro del DIV padre.

para centrar un elemento verticalmente has de usar la propiedad display con el valor table en el contenedor y display: table-cell y vertical-align: middle en el bloque a centrar
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 27/11/2013, 09:10
 
Fecha de Ingreso: mayo-2013
Mensajes: 207
Antigüedad: 11 años, 6 meses
Puntos: 31
Respuesta: Centrar elemento dentro del DIV padre.

Si no es necesario tener la imagen en la etiqueta img (es decir que puedes ponerla como fondo), puedes usar:
Código CSS:
Ver original
  1. div {
  2.   display: flex;
  3.   ...
  4. }
  5. div p {
  6.   margin: auto;
  7. }
  #4 (permalink)  
Antiguo 27/11/2013, 10:42
Avatar de TSG
TSG
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 373
Antigüedad: 11 años, 2 meses
Puntos: 9
Respuesta: Centrar elemento dentro del DIV padre.

Puedes poner en el css del div padre:

Código CSS:
Ver original
  1. text-align: center;
  #5 (permalink)  
Antiguo 27/11/2013, 10:44
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.489
Antigüedad: 22 años, 3 meses
Puntos: 2114
Respuesta: Centrar elemento dentro del DIV padre.

Otra forma:

Código CSS:
Ver original
  1. div p {
  2.   position: absolute;
  3.   top: 50%;
  4.   left: 50%;
  5.   margin: 0;
  6.   transform: translate(-50%,-50%);
  7. }

Habría que usar prefijos propietarios -webkit- y demás para mejor compatibilidad.
  #6 (permalink)  
Antiguo 27/11/2013, 12:32
 
Fecha de Ingreso: diciembre-2009
Ubicación: European Union
Mensajes: 29
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Centrar elemento dentro del DIV padre.

Muchas gracias a todos. Ya está solucionado. Al final me he quedado con la solución de alzacon.
  #7 (permalink)  
Antiguo 27/11/2013, 14:57
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Centrar elemento dentro del DIV padre.

no es por ser replicante pero ie no soporta la propiedad display con el valor flex y ff en ciertas circunstancias tampoco

las dos opciones cross-browser son las expuestas por pzin y por mi. todo depende del grado de compatibilidad que quieras
  • pzin - todos los navegadores modernos
  • yo - todos los navegadores modernos incluido ie8
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #8 (permalink)  
Antiguo 28/11/2013, 07:37
 
Fecha de Ingreso: diciembre-2009
Ubicación: European Union
Mensajes: 29
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Centrar elemento dentro del DIV padre.

Tienes razón IsaBelM. Hoy he comprobado que la solución de alzacon funciona bien en Firefox y Chrome pero luego he visto que no va bien en Android, Opera, Safari ni IE11. Fue la primera que probé porque parecía más sencilla.

He encontrado esta otra:
http://www.html5rocks.com/es/tutorials/flexbox/quick/

Código:
div {
    display: -webkit-box;
    -webkit-box-orient: horizontal;
    -webkit-box-pack: center;
    -webkit-box-align: center;

    display: -moz-box;
    -moz-box-orient: horizontal;
    -moz-box-pack: center;
    -moz-box-align: center;

    display: box;
    box-orient: horizontal;
    box-pack: center;
    box-align: center;
}
Voy a probar esta y todas vuestras soluciones con más tranquilidad. Creo que le dí al botón de solucionado precipitadamente.

Un saludo.

Etiquetas: background, color, elemento, html
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 09:04.