J'essaie de construire un tableau de prix où chaque colonne contient une carte. Je veux que toutes les cartes s'étendent à la hauteur de leurs éléments parents (.col).
Remarque: J'utilise Bootstrap 4 et j'essaie de réaliser cela avec le système de grille existant (par souci de cohérence) et avec ce balisage particulier. Je ne parviens pas à faire en sorte que les cartes atteignent la hauteur de leurs conteneurs parents. Est-ce même possible avec le balisage actuel?
Le balisage de base est le suivant:
<div class="row">
<div class="col">
<div class="card">
blah
blah
blah
</div>
<div class="card">
blah
</div>
<div class="card">
blah
</div>
</div>
</div>
Voici mon stylo: https://codepen.io/anon/pen/oZXWJB
Ajoutez flex-grow : 1;
à votre règle .card
. Le balisage HTML est bon.
.row {
display: flex;
flex-flow: row wrap;
background: #00e1ff;
margin: -8px;
}
.col {
display: flex;
flex: 1 0 400px;
flex-flow: column;
margin: 10px;
background: grey;
}
.card {
display: flex;
padding: 20px;
background: #002732;
color: white;
opacity: 0.5;
align-items: stretch;
flex-direction: column;
flex-grow: 1;
}
Vous pouvez également consulter Foundation 6 Equalizer plugin. Ils utilisent JavaScript cependant.
Ajoutez simplement flex: 1
à votre classe card
. Devrait suffire. Et vous n'avez pas besoin de display: flex; align-items: stretch; flex-direction: column
dans cette classe.
Il vous suffit d'ajouter height: 100%
sur .card
.card {
display: flex;
padding: 20px;
background: #002732;
color: white;
opacity: 0.5;
align-items: stretch;
flex-direction: column;
height: 100%;
}
Ajouter hauteur: 100% à .card
.card {
display: flex;
height: 100%;
padding: 20px;
background: #002732;
color: white;
opacity: 0.5;
align-items: stretch;
flex-direction: column;
}
exemple - https://codepen.io/anon/pen/zZGzyd
Faites juste votre .card
height à 100%.
.card{
height: 100%;
display: flex;
padding: 20px;
background: #002732;
color: white;
opacity: 0.5;
align-items: stretch;
flex-direction: column;
}
Si vous utilisez Bootstrap 4, ils ont déjà des classes intégrées pour ce que vous essayez d’atteindre.
Ajouter card-deck
à <div class="row card-deck">