4 votes

Extension d'un div enfant à l'extérieur d'un div conteneur de manière égale des deux côtés avec margin : 0 auto

Disons que j'ai un div qui contient un div enfant. La div conteneur est définie comme margin: 0 auto de sorte que lorsque la largeur est augmentée, la division s'étend des deux côtés. Si la division à l'intérieur de ce conteneur était également définie sur margin: 0 auto, existe-t-il un moyen de faire en sorte que cette div s'étende au-delà de sa div conteneur et s'étende aussi bien à droite qu'à gauche ?

L'exemple suivant montre que lorsque la largeur du .background est supérieure à celle du conteneur, sa taille augmente uniquement à partir de la droite et non des deux côtés.

le css et le html :

.container {
  width: 600px;
  background-color: lightgreen;
  margin: 0 auto;
}
.background {
  width: 300px;
  margin: 0 auto;
  background-color: blue;
}
.content {
  width: 200px;
  background-color: lightblue;
  margin: 0 auto;
}

<div class = "container">
  <div class = "background">
    <div class = "content">
      content
    </div>
  </div>
</div>

http://jsfiddle.net/DpYGm/2/

Il s'agit d'une tentative de faire en sorte qu'une image d'arrière-plan graphique de bannière s'étende sur la largeur du corps d'une page tout en conservant le même contenu à l'intérieur de la page.

6voto

ralph.m Points 7815

Disons que vous voulez le background div pour qu'il dépasse de 50px de chaque côté. Vous pouvez le faire dans votre CSS :

.background {
    margin: 0 -50px 0 -50px;
    background-color: #00F;
}

Un exemple complet :

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">

    <style media="all">

      .container {
        width: 500px;
        background-color: lightgreen;
        margin: 0 auto;
        height: 400px; /* for illustration */
      }
      .background {
        margin: 0 -50px;
        background-color: blue;
      }
      .content {
        width: 200px;
        background-color: lightblue;
        margin: 0 auto;
      }

    </style>

  </head>
  <body>

    <div class = "container">
      <div class = "background">
        <div class = "content">
          content
        </div>
      </div>
    </div>

  </body>
</html>

3voto

nick Points 859

C'est sûr :

.container {
    width: 600px;
    background-color: #eee;
    margin: 0 auto;
    padding: 10px 0;
}
.background {
    width: 400px;
    margin: 0 auto;
    background-color: blue;
    padding: 10px 0;
}
.content {
    width: 500px;
    background-color: red;
    margin-left: -50px;
}

http://jsfiddle.net/yBcpu/1/

0voto

Darren Points 43

Il existe une manière plus sémantique d'y parvenir, en fonction de votre raisonnement :

.container {
    background: green url(../path-to-image.jpg) no-repeat top center;
    margin: 0 auto;
    min-height:300px;
}

.content {
    width: 500px;
    background-color: red;
    margin: 0 auto;
    min-height: 300px;
}

Collez votre image d'arrière-plan sur le .container avec une position centrée en haut.

http://jsfiddle.net/DpYGm/5/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X