Sur la base de votre suggestion d'origine (définition de marges négatives), j'ai essayé et trouvé une méthode similaire en utilisant des unités de pourcentage pour la largeur du navigateur dynamique:
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;
}
Les marges négatives laisseront le contenu sortir de la DIV parentale. Par conséquent, j'ai défini le padding: 0 100%;
pour repousser le contenu aux limites d'origine du Chlid DIV.
Les marges négatives entraîneront également l'expansion de la largeur totale du .child-div hors de la fenêtre du navigateur, entraînant un défilement horizontal. Par conséquent, nous devons couper la largeur d'extrusion en appliquant un overflow-x: hidden
à un grand-parent DIV (qui est le parent du parent Div):
Voici le JSfiddle
J'ai essayé Nils Kaspersson left: calc(-50vw + 50%)
; cela a parfaitement fonctionné dans Chrome et FF (pas encore sûr d'IE) jusqu'à ce que je découvre que les navigateurs Safari ne le font pas correctement. J'espère qu'ils ont corrigé cela dès que j'aime vraiment cette méthode simple.
Cela peut également résoudre votre problème où l'élément parent DIV doit être position:relative
Les 2 inconvénients de cette méthode de contournement sont:
- Exiger un balisage supplémentaire (c'est-à-dire un élément grand-parent (tout comme la bonne méthode d'alignement vertical de la bonne vieille table n'est-ce pas ...)
- Les bordures gauche et droite de la DIV enfant ne s'afficheront jamais, simplement parce qu'elles sont en dehors de la fenêtre d'affichage du navigateur.
Veuillez me faire savoir s'il y a un problème avec cette méthode;). J'espère que ça aide.
position: relative
? De quoi avez-vous besoinposition: relative
? Je suppose que ce que je demande, c'est: qu'essayez-vous de faire?