Basado en su sugerencia original (configuración de márgenes negativos), he intentado encontrar un método similar usando unidades de porcentaje para el ancho dinámico del navegador:
HTML
<div class="grandparent">
<div class="parent">
<div class="child">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolore neque repellat ipsum natus magni soluta explicabo architecto, molestias laboriosam rerum. Tempore eos labore temporibus alias necessitatibus illum enim, est harum perspiciatis, sit, totam earum corrupti placeat architecto aut minus dignissimos mollitia asperiores sint ea. Libero hic laudantium, ipsam nostrum earum distinctio. Cum expedita, ratione, accusamus dicta similique distinctio est dolore assumenda soluta dolorem quisquam ex possimus aliquid provident quo? Enim tempora quo cupiditate eveniet aperiam.</p>
</div>
</div>
</div>
CSS:
.child-div{
margin: 0 -100%;
padding: 0 -100%;
}
.parent {
width: 60%;
background-color: red;
margin: 0 auto;
padding: 50px;
position:relative;
}
.grandparent {
overflow-x:hidden;
background-color: blue;
width: 100%;
position:relative;
}
Los márgenes negativos permitirán que el contenido fluya fuera de la DIV principal. Por lo tanto, configuré padding: 0 100%;
para que el contenido vuelva a los límites originales del Chlid DIV.
Los márgenes negativos también harán que el ancho total de .child-div se expanda fuera de la ventana del navegador, lo que resulta en un desplazamiento horizontal. Por lo tanto, debemos recortar el ancho de extrusión aplicando un overflow-x: hidden
a un DIV de abuelo (que es el padre de la División de padres):
Aquí está el JSfiddle
Había intentado con Nils Kaspersson left: calc(-50vw + 50%)
; funcionó perfectamente bien en Chrome y FF (aún no estoy seguro sobre IE) hasta que descubrí que los navegadores Safari no lo hacen correctamente. Espero que hayan solucionado esto pronto, ya que en realidad me gusta este método simple.
Esto también puede resolver su problema donde el elemento DIV principal debe ser position:relative
Los 2 inconvenientes de este método de solución alternativa son:
- Requerir marcado adicional (es decir, un elemento abuelo (al igual que el método de alineación vertical de la buena tabla no es así ...)
- El borde izquierdo y derecho del Child DIV nunca se mostrará, simplemente porque están fuera de la ventana del navegador.
Avíseme si hay algún problema con este método;). Espero eso ayude.
position: relative
? ¿Para qué necesitasposition: relative
? Supongo que lo que pregunto es: ¿qué intentas hacer?