2012-09-11 30 views
6

Usando CSS3, HTML (y javascript/jquery si es necesario), necesito rotar una imagen 90/270 grados y colocarla para llenar su div principal/contenedor. Suena simple, pero cuando se rotan las imágenes, el posicionamiento cambia y no puedo entender cómo o por qué.¿Cómo puedo colocar una imagen girada dentro de un contenedor?

Aquí hay un jsFiddle para explicar - http://jsfiddle.net/UPGkU/2/ - Solo quiero que el logotipo azul se coloque exactamente dentro del div rojo.

Por supuesto, podría usar compensaciones específicas, pero si se usa una imagen diferente, esas compensaciones cambian, así que realmente quiero encontrar una solución genérica.

¡Cualquier ayuda sería fantástica, gracias!

+0

Creo desea que esta http://jsfiddle.net/UPGkU/5/ –

Respuesta

1

tratan con

#image { 
    -webkit-transform: rotate(90deg); 
    -webkit-transform-origin: 0 100%; 
    position : relative; 
    top  : -50px; 
} 

+0

+1, si solo esto pudiera hacerse más genérico (es decir sin depender de las dimensiones en píxeles) –

8

Es necesario establecer un transform-origin - en este escenario, un punto alrededor del cual la imagen se gira.

#image { 
    -webkit-transform: rotate(90deg); 
    -webkit-transform-origin: 0 0; //initially 50% 50% 
    margin-left: 100%; 
} 

90deg fiddle/270deg fiddle

Actualización:

El reto con este último es que en realidad no podemos modificar transform-origin ya que su posición es relativa a la aún no transformados elemento y no podemos simplemente establecer margin-top:100% ya que los valores de margen (incluso los verticales) se calculan como a percentage always relative to the width of the containing block. El siguiente código debería funcionar:

#image { 
    -webkit-transform: rotate(-90deg); 
    -webkit-transform-origin: 0 0; 
    position:relative; 
    top:100%; 
} 
+1

Prefiero tu solución: +1. No depende del tamaño de la imagen – fcalderan

+1

+1. Quizás también vale la pena mencionar que el valor inicial para 'transform-origin' es' 50% 50% '. – Ana

+0

ah, pero si giro 270 grados, se rompe la solución. ¿Hay alguna manera de que pueda caber dentro del contenedor rojo si se gira 90 o 270 grados? Si la respuesta es 'no', ¡está bien! –

0

Hola ahora utiliza a este css utiliza posición

#wrapper { 
    width:50px; 
    height:150px; 
    border:2px solid red; 
    position:relative; 
} 
#image { 
    -webkit-transform: rotate(90deg); 
    -moz-transform: rotate(90deg); 
    position:absolute; 
    left:-49px; 
    top:50px; 
} 

Demo

Cuestiones relacionadas