J'utilise Bootstrap 4 alpha 2 et je profite des cartes. Plus précisément, je travaille avec cet exemple tiré de la documentation officielle. Comment puis-je faire en sorte que toutes les cartes aient la même hauteur?
Tout ce que je peux penser maintenant, c'est de définir la règle CSS suivante:
.card {
min-height: 200px;
}
Mais ce n'est qu'une solution codée en dur qui ne fonctionnera pas dans un cas général. Le code à mon avis est le même que celui de la documentation, à savoir:
<div class="card-columns">
<div class="card">
<img class="card-img-top" data-src="..." alt="Card image cap">
<div class="card-block">
<h4 class="card-title">Card title that wraps to a new line</h4>
<p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
</div>
</div>
<div class="card card-block">
<blockquote class="card-blockquote">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
<footer>
<small class="text-muted">
Someone famous in <cite title="Source Title">Source Title</cite>
</small>
</footer>
</blockquote>
</div>
<div class="card">
<img class="card-img-top" data-src="..." alt="Card image cap">
<div class="card-block">
<h4 class="card-title">Card title</h4>
<p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
</div>
<div class="card card-block card-inverse card-primary text-xs-center">
<blockquote class="card-blockquote">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat.</p>
<footer>
<small>
Someone famous in <cite title="Source Title">Source Title</cite>
</small>
</footer>
</blockquote>
</div>
<div class="card card-block text-xs-center">
<h4 class="card-title">Card title</h4>
<p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
<div class="card">
<img class="card-img" data-src="..." alt="Card image">
</div>
<div class="card card-block text-xs-right">
<blockquote class="card-blockquote">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
<footer>
<small class="text-muted">
Someone famous in <cite title="Source Title">Source Title</cite>
</small>
</footer>
</blockquote>
</div>
<div class="card card-block">
<h4 class="card-title">Card title</h4>
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
</div>
html
css
twitter-bootstrap
bootstrap-4
bootstrap-cards
bleuSurfer
la source
la source
card-columns
mais en gardant la même hauteur.Réponses:
Vous pouvez mettre les classes sur la "ligne" ou la "colonne"? Ne sera pas visible sur les cartes (bordure) si vous l'utilisez sur la ligne. https://v4-alpha.getbootstrap.com/utilities/flexbox/#align-items
Certaines des autres réponses ici semblent «farfelues». Pourquoi utiliser une hauteur minimale ou pire encore une hauteur fixe?
Je pensais que ce problème (hauteurs égales) faisait partie de la raison de la progression loin des blocs divs flottants?
la source
J'utilise Bootstrap 4 (Beta 2). Pendant ce temps, les situations semblent avoir changé. J'ai eu le même problème et j'ai trouvé une solution simple. Voici mon code:
Avec "col-sm-12 col-lg-6", j'ai rendu les cartes réactives. Avec "card h-100", j'ai réglé toutes les cartes à la hauteur de leur colonne parente. Sur mon système, cela fonctionne, mais je ne suis pas un pro. Alors, j'espère avoir aidé quelqu'un.
la source
d-flex
problèmes avec IE (que je dois prendre en charge). Je viens d'ajouter unmb-4
à la division parent pour séparer un peu plus les cartes.Meilleure solution, Bootstrap 4 a tout ce dont vous avez besoin: UTILISEZ LA
.d-flex
et.flex-fill
classe. N'utilisez pas lecard-decks
car ils ne répondent pas. J'ai utilisécol-sm
, vous pouvez utiliser la.col
classe que vous voulez, ou utilisercol-lg-x
le x signifie le nombre de colonnes de largeur, par exemple 4 ou 3 pour une meilleure vue si le message en a plusieurs, puis 3 ou 4 par colonneVoici la bête, essayez de réduire la fenêtre du navigateur à XS pour la voir en action:
la source
card-columns
mais cela ne pouvait pas prendre plus de 3 colonnes par ligne. Merci pour cette réponseVous pouvez appliquer la classe
h-100
, qui correspond à la hauteur 100%.la source
MISE À JOUR: Dans Bootstrap 4 , flexbox est maintenant par défaut, et chaque
card-deck
ligne contiendra 3 cartes. Les cartes se rempliront à pleine hauteur.http://www.codeply.com/go/x91w5Cl6ip
Bootstrap 4 alpha
card-columns
utilise des colonnes CSS3 qui ne supportent pas vraiment des hauteurs égales (sauf le remplissage de colonnes qui n'est pris en charge que dans Firefox).Si vous activez à la place le mode Flexbox Bootstrap 4, vous pouvez utiliser à la place le
card-deck
et un peu de CSS pour égaliser la hauteur et envelopper toutes les 3 colonnes.http://codeply.com/go/YFFFWHVoRB
Carte Bootstrap associée
de même hauteur en col
la source
Voici comment je l'ai fait:
CSS:
HTML:
la source
envelopper les cartes à l'intérieur
<div class="card-group"></div>
ou
<div class="card-deck"></div>
la source
J'ai adopté une approche légèrement différente. Utilisation de l' enveloppe du jeu de cartes
J'ai ajouté une règle de style qui limite la hauteur du bloc de carte:
Cela donne le résultat suivant:
la source
Vous pouvez utiliser le jeu de cartes, il alignera toutes les cartes ... cela vient de la page officielle de bootstrap 4.
la source
Les grilles de cartes sont une autre approche utile :
la source
Moyen le plus minimal pour y parvenir (que je connaisse) :
.text-monospace
à tous les textes de la carte.METTRE À JOUR
Ajoutez
.text-truncate
le titre de la carte et / ou d'autres textes. Cela force les textes sur une seule ligne. Faire en sorte que les cartes aient la même hauteur.la source
Je suis novice dans ce domaine, alors veuillez pardonner si quelque chose me manque tous ensemble.
J'ai essayé plusieurs des solutions ci-dessus. Si vous définissez la hauteur = 100%, la carte s'étendra toujours à la plus grande longueur de la carte la plus longue. Le conteneur contraindra tous à la même longueur.
Je voulais voir le conteneur, alors j'ai utilisé la couleur de fond pour m'aider à voir ce qui se passait.
la source
CA marchait bien pour moi:
forcer notre CSS sur le CSS général bootstraps.
la source
Je suis tombé sur ce problème, la plupart des gens utilisent jQuery ... Voici ma solution. "Ça ne me dérange pas, je ne suis qu'un débutant dans ce domaine ..."
Si la hauteur d'un élément de carte est par exemple de 400px (en fonction de son contenu), parce que la valeur par défaut pour flex-align est stretch, alors .card-item (enfant de la classe row ou card-collection) sera étiré. rendre la hauteur de la carte à 100% du parent occupera cette pleine hauteur.
J'espère que j'avais raison. Suis-je?
la source
Si quelqu'un est intéressé, il existe un plugin jquery appelé: jquery.matchHeight.js
https://github.com/liabru/jquery-match-height
matchHeight rend la hauteur de tous les éléments sélectionnés exactement égale. Il gère de nombreux cas extrêmes qui provoquent l'échec de plugins similaires.
Pour une rangée de cartes, j'utilise:
Ensuite, activez à l'échelle du site:
la source
jsfiddle
Ajoutez simplement la hauteur souhaitée avec CSS, exemple:
Vous devrez ajouter votre propre CSS.
Si vous consultez la documentation, c'est pour la maçonnerie style de - le fait est qu'ils n'ont pas tous la même hauteur.
la source