Je suis un débutant en flexbox. J'essaye d'implémenter une flexbox avec différents paramètres dans une flexbox déjà existante. Ceci est ce que j'ai jusqu'à présent. Voici ce que j'essaye de faire:
<div class="container"> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="ads"> <div class="ads_element"></div> <div class="ads_element"></div> <div class="ads_element"></div> <div class="ads_element"></div> </div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> </div>
html, body { background-color: #ffeead; margin: 10px; } .container>div:nth-child(even) { background-color: red; } .container>div:nth-child(odd) { background-color: blue; } .container { max-width: 500px; margin: auto; border: 5px solid #ffcc5c; display: flex; flex-wrap: wrap; justify-content: space-between; } .element { box-sizing: border-box; border: 1px solid #edeeee; width: calc(50% - 5px); margin: 5px 0px; height: 200px; box-shadow: 0 0 5px 0 #edeeee; border-radius: 5px 5px 5px 5px; } .ads {} .ads_element { width: calc(25% - 5px); height: 100px; background-color: green; }
5 Réponses :
vous devez définir la largeur et la hauteur des annonces
, sinon cette balise et tout ce qu'elle contient aura 0 largeur et 0 hauteur par défaut
.ads { width: 100%; height: 100%; display: flex; } .ads_element { width: calc(25% - 5px); height: 100px; background-color:green; margin: 10px; }
ajoutez-la dans votre code pour voir le résultat
J'ai renseigné les propriétés css de la classe ads
.ads { height: 100px; width: 100%; display: flex; align-items: center; }
Vérifiez le violon qui fonctionne ici https://jsfiddle.net/L5egv0ah/1/
Modifie le css de .ads
et .ads_element
ci-dessous en utilisant display: flex et width: 100% et écrasement de la couleur d'arrière-plan
<div class="container"> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="ads"> <div class="ads_element"></div> <div class="ads_element"></div> <div class="ads_element"></div> <div class="ads_element"></div> </div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> </div>
html, body { background-color: #ffeead; margin: 10px; } .container > div:nth-child(even) { background-color: red; } .container > div:nth-child(odd) { background-color: blue; } .container { max-width: 500px; margin: auto; border: 5px solid #ffcc5c; display: flex; flex-wrap: wrap; justify-content: space-between; } .element { box-sizing: border-box; border: 1px solid #edeeee; width: calc(50% - 5px); margin: 5px 0px; height: 200px; box-shadow: 0 0 5px 0 #edeeee; border-radius: 5px 5px 5px 5px; } .container > div:nth-child(odd).ads { width: 100%; display: flex; background-color: transparent; } .ads_element { width: calc(25% - 5px); height: 200px; border:3px solid red; background-color: transparent; margin: 0px 5px; }
Vous pouvez le faire sans imbriquer les flexbox - ajustez simplement la largeur
et la marge
de l ' ads_element
- voir la démo ci-dessous:
<div class="container"> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="ads"> <div class="ads_element"></div> <div class="ads_element"></div> <div class="ads_element"></div> <div class="ads_element"></div> </div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> </div>
html, body { background-color: #ffeead; margin: 10px; } .container>div:nth-child(even) { background-color: red; } .container>div:nth-child(odd) { background-color: blue; } .container { max-width: 500px; margin: auto; border: 5px solid #ffcc5c; display: flex; flex-wrap: wrap; justify-content: space-between; } .element { box-sizing: border-box; border: 1px solid #edeeee; width: calc(50% - 5px); margin: 5px 0px; height: 200px; box-shadow: 0 0 5px 0 #edeeee; border-radius: 5px 5px 5px 5px; } .ads { /* ADDED */ display: flex; width: 100%; background: transparent !important; } .ads_element { width: calc(25% - 5px); height: 100px; /* background-color: green; */ /* ADDED BELOW */ border: 2px solid red; margin: 5px; }
Si vous ne souhaitez pas modifier votre balisage, vous pouvez simplement faire des annonces
une flexbox - voir la démo ci-dessous:
<div class="container"> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <!-- <div class="ads"> --> <div class="ads_element"></div> <div class="ads_element"></div> <div class="ads_element"></div> <div class="ads_element"></div> <!-- </div> --> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> </div>
html, body { background-color: #ffeead; margin: 10px; } .container>div:nth-child(even) { background-color: red; } .container>div:nth-child(odd) { background-color: blue; } .container { max-width: 500px; margin: auto; border: 5px solid #ffcc5c; display: flex; flex-wrap: wrap; justify-content: space-between; } .element { box-sizing: border-box; border: 1px solid #edeeee; width: calc(50% - 5px); margin: 5px 0px; height: 200px; box-shadow: 0 0 5px 0 #edeeee; border-radius: 5px 5px 5px 5px; } .ads_element { width: calc(25% - 15px); /* CHANGED */ height: 100px; background-color: transparent !important; /* CHANGED */ /* ADDED BELOW */ border: 2px solid red; margin: 5px; }
Voici ce que vous voulez faire:
HTML
html, body { background-color: #ffeead; margin: 10px; } .container > .element_row > div:nth-child(even) { background-color: red; } .container > .element_row > div:nth-child(odd) { background-color: blue; } .container { max-width: 500px; margin: auto; border: 5px solid #ffcc5c; display: flex; flex-flow: column; } .element_row{ display:flex; flex-flow:row; justify-content: space-between; } .element { width: 49%; box-sizing: border-box; border: 1px solid #edeeee; margin: 5px 0px; height: 200px; box-shadow: 0 0 5px 0 #edeeee; border-radius: 5px 5px 5px 5px; } .ads { display: flex; flex-flow:row; justify-content: space-evenly; } .ads_element { width: 22%; height: 200px; border: 3px solid red; }
CSS
<div class="container"> <div class="element_row"> <div class="element"></div> <div class="element"></div> </div> <div class="element_row"> <div class="element"></div> <div class="element"></div> </div> <div class="ads"> <div class="ads_element"></div> <div class="ads_element"></div> <div class="ads_element"></div> <div class="ads_element"></div> </div> <div class="element_row"> <div class="element"></div> <div class="element"></div> </div> <div class="element_row"> <div class="element"></div> <div class="element"></div> </div> </div>