2010-07-11 28 views
33

He estado golpeando mi cabeza en este caso. Quiero posicionar de forma absoluta una imagen en la que me moveré en un div y quiero recortar cualquier cosa que se extienda fuera del div. Aquí hay un ejemplo del problema:Desbordamiento de CSS oculto con la posición absoluta

<html> 
<body> 
    <div style="width: 500px; height: 200px; border: 1px solid black; overflow: hidden;"> 
    <div style="width: 200px; height: 50px; margin: auto; border: 1px solid black; background: gray;">On top of image.</div> 
    <div style="position: absolute; top: 10px; left: 250px; z-index: -1;"><img src="http://www.google.com/logos/worldcupfinale10-hp.gif" /></div> 
    </div> 
</body> 
</html> 

Por lo tanto, quiero que el borde derecho del logotipo no se muestre. Ideas?

Respuesta

18

Desde contenedor de la imagen se coloca absolutamente, está fuera del flujo de la "que contiene" div.

Sus opciones son posicionar de forma relativa o ajustar las dimensiones del div completamente posicionado, dinámicamente, con jQuery.

+0

OK, tenía miedo de eso. ¡Gracias! –

+0

Hm qué pasa con este ejemplo '

' hay alguna razón para que el div interior no se oculte. Experimentar este comportamiento en Safari para Windows y Opera – Olga

+3

Esto no es correcto. Agregar desbordamiento: oculto; a su contenedor principal hará que el elemento absolutamente posicionado dentro de él no se muestre afuera. –

76

Intente agregar position: relative a su div externo. Esto posicionará la imagen relativa a ese div (honrando el estilo de desbordamiento) en lugar de relativa a la página.

Ejemplo:

<html> 
<body> 
    <div style="position: relative; width: 500px; height: 200px; border: 1px solid black; overflow: hidden;"> 
    <div style="width: 200px; height: 50px; margin: auto; border: 1px solid black; background: gray;">On top of image.</div> 
    <div style="position: absolute; top: 10px; left: 250px; z-index: -1;"><img src="http://www.google.com/logos/worldcupfinale10-hp.gif" /></div> 
    </div> 
</body> 
</html> 

ve en JS Bin

+2

Pero luego ya no está posicionado en relación con la página. –

+5

Si se supone que la imagen "se mueve en el div", ¿por qué la quiere en relación con la página? Tal vez me estoy perdiendo algo. –

+1

Gracias hombre que salvó mi día :) – user2972061

0

Mueva la posición absoluta a la imagen, luego agregue la relativa al contenedor principal. Trabajó para mí en una situación similar.

<html> 
<body> 
    <div style="width: 500px; height: 200px; border: 1px solid black; overflow: hidden;"> 
    <div style="width: 200px; height: 50px; margin: auto; border: 1px solid black; background: gray;">On top of image.</div> 
    <div style="position: relative; overflow:hidden;"><img style="position: absolute; top: 10px; left: 250px; z-index: -1;" src="http://www.google.com/logos/worldcupfinale10-hp.gif" /></div> 
    </div> 
</body> 
</html> 
Cuestiones relacionadas