2012-10-08 12 views
5

He establecido el ancho y alto de mis elementos en porcentajes para que se vean un poco más grande en pantallas más grandes y normal en las normales. También configuré min-height y min-width para que el diseño no se distorsione cuando se ve en una pantalla demasiado pequeña. Quiero que uno de mis elementos aparezca como un cuadrado, pero no puedo encontrar una solución CSS para que ocurra.altura de div = su ancho, en porcentajes, para que el div se vea como un cuadrado, con forma no cuadrada del elemento contenedor (solo CSS)

Esto es lo que probé: http://jsfiddle.net/5VTTD/, pero no funcionó.

Esto funciona: http://jsfiddle.net/5VTTD/1/, pero usa JS.

+1

Usted tiene que fijar una altura explícita al contenedor o la caja dentro deriva su altura desde el contenido del recipiente no el propio contenedor, ya su contenedor no es cuadrado y no tiene una altura o ancho explícito, la solución js es la correcta. –

Respuesta

7

necesitará un <div> externa como un recipiente y luego una interna como un cuadrado.

Usé 50% de las dimensiones para el cuadrado, pero puede usar el tamaño que desee: será relativo al contenedor principal <div>.

También le di un color de fondo negro para resaltarlo: aquí hay un DEMO.

El truco está todo en el padding-bottom: 100% del padre <div>.

CSS:

#container { 
    position: relative; 
    width: 100%; 
    padding-bottom: 100%; 
} 

#square { 
    position: absolute; 
    width: 50%; 
    height: 50%; 
    background-color: #000000; 
} 

HTML:

<div id="container"> 
    <div id="square"> 
    </div> 
</div> 
+0

también funciona sin 'relleno-bottom': http://jsfiddle.net/wwvcH/1/ –

+0

pero falla si el elemento contenedor en sí no es un cuadrado: http: // jsfiddle. net/wwvcH/3/ –

+0

No funciona porque está basado en las dimensiones principales del contenedor. – Cirou

Cuestiones relacionadas