2014-09-20 4 views
0

J'essaie de centrer le conteneur de divs (boîtes grises) de sorte que A = B. Cette égalité doit être préservée lors du redimensionnement des fenêtres du navigateur. En outre, lorsque la fenêtre est plus petite que la largeur du nombre actuel de divs dans une rangée, l'arrangement div devrait changer à moins de nombre de colonnes. J'essayais de trouver du code, mais pas de chance. J'espère que quelqu'un pourrait aider.Centrer le conteneur de divs

enter image description here

Et voici le code que j'ai pour l'instant

HTML:

<div id="Area"> 
    <div id="container"> 
     <div class="square"></div> 
     <div class="square"></div> 
     <div class="square"></div> 
     <div class="square"></div> 
     <div class="square"></div> 
     <div class="square"></div> 
     <div class="square"></div> 
     <div class="square"></div> 
     <div class="square"></div> 
     <div class="square"></div> 
     <div class="square"></div> 
     <div class="square"></div> 
    </div> 
</div> 

CSS:

#Area { 
    padding: 30px 50px; /* top and bottom 25px, left and right 50px */ 
} 

#container{ 
    width: 90%; 
    margin: 0 auto; 
} 

.square { 
    display: inline-block; 
    margin: 7 auto; 
    width: 350px; 
    height: 200px; 
    background-color: gray; 
    border: 1px black solid; 
} 

UPDATE. Après l'aide de Shai, je suis venu à un nouveau problème. Divs sont maintenant empilés aimé:

enter image description here

Mais je voudrais les avoir comme ceci:

enter image description here

+0

S'il vous plaît créer un – Andy

+0

jsFiddle Pouvez-vous utiliser des boîtes flex? – Siddharth

+0

@ votre montage: c'est pourquoi vous n'utilisez pas quelque chose comme 'text-align' pour la mise en page des boîtes comme je l'ai dit dans le commentaire à la réponse de Shai. Jetez un oeil à ma réponse. – lexith

Répondre

2

Ajouter text-align: center; au #container.

Working JSFiddle

+0

ne recommanderait pas une propriété de texte pour positionner un div. – lexith

+1

Définissez également 'text-align: left' sur' .square's pour annuler l'effet. –

+0

@Razah pour positionner un 'div' inline-block' - pourquoi pas?Edit: après la modification d'OP, je suis d'accord que cette solution n'est plus parfaite (votre solution ne résout pas la question d'OP avant ou après la modification!) – Shai

1

Une solution rapide sans changer votre balisage et styles serait de donner à vos #area les attributs position:relative; et width:100% ainsi que de changer le width:90% à une width:100% complète de votre #container

#Area { 
    padding: 30px 50px; /* top and bottom 25px, left and right 50px */ 
    width: 100%; 
    position: relative; 
} 

#container{ 
    width: 100%; 
    margin: 0 auto; 
} 

http://jsfiddle.net/8a0035ep/

+0

@Rayah Le problème est que le conteneur n'est pas centré maintenant. – justRadojko

0

Une autre solution (que je préfère) est de rem ove dsiplay: inline-block (donc conservez le bloc par défaut) et utilisez margin: 0 auto. Ajoutez également margin-bottom à x px en fonction de vos besoins.

#Area { 
 
    padding: 30px 50px; 
 
    /* top and bottom 25px, left and right 50px */ 
 
} 
 
#container { 
 
    width: 90%; 
 
    margin: 0 auto; 
 
} 
 
.square { 
 
    margin: 7 auto; 
 
    width: 350px; 
 
    height: 200px; 
 
    background-color: gray; 
 
    border: 1px black solid; 
 
    margin: 0 auto; 
 
    margin-bottom: 5px; 
 
}
<div id="Area"> 
 
    <div id="container"> 
 
     <div class="square"></div> 
 
     <div class="square"></div> 
 
     <div class="square"></div> 
 
     <div class="square"></div> 
 
     <div class="square"></div> 
 
     <div class="square"></div> 
 
     <div class="square"></div> 
 
     <div class="square"></div> 
 
     <div class="square"></div> 
 
     <div class="square"></div> 
 
     <div class="square"></div> 
 
     <div class="square"></div> 
 
    </div> 
 
</div>

0

pourrait vous entendu parler media query. J'utilise l'attribut pour atteindre votre objectif.
This is my JSFiddle.
Le code principal:

@media screen and (min-width:352px){ 
    #container{ 
     text-align: center; 
    } 
} 
+0

Il est presque là. Le problème est quand vous avez le nombre impair de divs dans la dernière rangée ils seront également centrés et vous perdez le format de grille – justRadojko

Questions connexes