Sulla base del tuo suggerimento suggerimento originale (impostazione dei margini negativi), ho provato a trovare un metodo simile usando le unità percentuali per la larghezza dinamica del browser:
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;
}
I margini negativi consentiranno al contenuto di uscire dal DIV principale. Pertanto ho impostato ilpadding: 0 100%;
per riportare il contenuto ai limiti originali del DIV Chlid.
I margini negativi faranno espandere anche la larghezza totale del .child-div fuori dalla vista del browser, risultando in uno scorrimento orizzontale. Quindi dobbiamo tagliare la larghezza dell'estrusione applicando unoverflow-x: hidden
a un DIV nonno (che è il genitore del Div genitore):
Ecco il JSfiddle
Ho provato Nils Kaspersson left: calc(-50vw + 50%)
; ha funzionato perfettamente in Chrome e FF (non sono ancora sicuro di IE) fino a quando non ho scoperto che i browser Safari non lo fanno correttamente. Spero che lo abbiano risolto presto perché in realtà mi piace questo metodo semplice.
Ciò può anche risolvere il problema in cui deve essere l'elemento DIV principale position:relative
I 2 svantaggi di questo metodo di soluzione alternativa sono:
- Richiede markup extra (ovvero un elemento nonno (proprio come il buon metodo di allineamento verticale della vecchia tabella non è vero ...)
- Il bordo sinistro e destro del DIV secondario non verrà mai visualizzato, semplicemente perché si trovano al di fuori della vista del browser.
Per favore fatemi sapere se c'è qualche problema riscontrato con questo metodo;). Spero che sia d'aiuto.
position: relative
? Di cosa hai bisognoposition: relative
? Immagino che quello che chiedo sia: cosa stai cercando di fare?