Używam Bootstrap 4 alpha 2 i wykorzystuję karty. W szczególności pracuję z tym przykładem zaczerpniętym z oficjalnych dokumentów. Jak sprawić, by wszystkie karty miały taką samą wysokość?
Teraz myślę tylko o ustawieniu następującej reguły CSS:
.card {
min-height: 200px;
}
Ale to jest tylko zakodowane rozwiązanie, które nie zadziała w ogólnym przypadku. Moim zdaniem kod jest taki sam jak ten w dokumentach, tj .:
<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
blueSurfer
źródło
źródło
card-columns
ale utrzymywania tej samej wysokości.Odpowiedzi:
Możesz umieścić klasy w „wierszu” lub „kolumnie”? Nie będzie widoczny na kartach (obramowaniu), jeśli użyjesz go w rzędzie. https://v4-alpha.getbootstrap.com/utilities/flexbox/#align-items
Niektóre z pozostałych odpowiedzi wydają się „zwariowane”. Po co używać minimalnej wysokości lub, co gorsza, stałej wysokości?
Myślałem, że ten problem (równe wysokości) był częścią powodu progresji z dala od pływających bloków div?
źródło
Używam Bootstrap 4 (Beta 2). Tymczasem wydaje się, że sytuacja się zmieniła. Miałem ten sam problem i znalazłem łatwe rozwiązanie. To jest mój kod:
Z "col-sm-12 col-lg-6" sprawiłem, że karty są responsywne. Za pomocą „karty h-100” ustawiłem wszystkie karty na wysokość ich kolumny nadrzędnej. W moim systemie to działa, ale nie jestem profesjonalistą. Więc mam nadzieję, że komuś pomogłem.
źródło
d-flex
spowodowało problemy z IE (które muszę wspierać). Właśnie dodałem amb-4
do nadrzędnego elementu DIV, aby nieco bardziej rozdzielić karty.Najlepsze rozwiązanie, Bootstrap 4 ma wszystko, czego potrzebujesz: UŻYWAJ
.d-flex
i.flex-fill
klasę. Nie używaj ich,card-decks
ponieważ nie reagują. Użyłemcol-sm
, możesz użyć.col
wybranej klasy lub użyćcol-lg-x
x oznacza liczbę szerokości kolumn np. 4 lub 3 dla najlepszego widoku, jeśli post ma wiele niż 3 lub 4 w kolumnieOto bestia, spróbuj zmniejszyć okno przeglądarki do XS, aby zobaczyć ją w akcji:
źródło
card-columns
ale nie mogło to zająć więcej niż 3 kolumny na wiersz. Dzięki za tę odpowiedźMożesz zastosować klasę
h-100
, która oznacza wysokość 100%.źródło
AKTUALIZACJA: W Bootstrap 4 , flexbox jest teraz domyślny i każdy
card-deck
wiersz będzie zawierał 3 karty. Karty wypełnią się do pełnej wysokości.http://www.codeply.com/go/x91w5Cl6ip
Bootstrap 4 alpha
card-columns
używa kolumn CSS3, które tak naprawdę nie obsługują równych wysokości (z wyjątkiem wypełniania kolumn, które jest obsługiwane tylko w Firefoksie).Jeśli zamiast tego włączysz tryb Flexbox Bootstrap 4, możesz zamiast tego użyć
card-deck
i trochę CSS, aby wyrównać wysokość i zawijać co 3 kolumny.http://codeply.com/go/YFFFWHVoRB
Powiązana
karta Bootstrap o tej samej wysokości w Col
źródło
Oto jak to zrobiłem:
CSS:
HTML:
źródło
zawiń karty do środka
<div class="card-group"></div>
lub
<div class="card-deck"></div>
źródło
Przyjąłem nieco inne podejście. Korzystanie z opakowania talii kart
Dodałem regułę stylu, która ogranicza wysokość bloku karty:
Daje to następujący wynik:
źródło
Możesz użyć talii kart, wyrówna ona wszystkie karty ... to pochodzi z oficjalnej strony bootstrap 4.
źródło
Innym przydatnym podejściem są siatki kart :
źródło
Najbardziej minimalny sposób na osiągnięcie tego (o którym wiem) :
.text-monospace
do wszystkich tekstów na karcie.AKTUALIZACJA
Dodaj
.text-truncate
tytuł karty i / lub inne teksty. To zmusza teksty do jednego wiersza. Wykonanie kart o tej samej wysokości.źródło
Jestem w tym nowicjuszem, więc proszę wybacz, jeśli czegoś mi brakuje.
Próbowałem wielu z powyższych. Jeśli ustawisz wysokość = 100%, karta będzie zawsze rozszerzać się do największej długości najdłuższej karty. Kontener będzie ograniczał wszystkie do tej samej długości.
Chciałem zobaczyć pojemnik, więc użyłem koloru tła, aby pomóc mi zobaczyć, co się dzieje.
źródło
to działało dobrze dla mnie:
wymuszanie naszego CSS na ogólnym CSS bootstraps.
źródło
Natknąłem się na ten problem, większość ludzi używa jQuery ... Oto moje rozwiązanie. „Nie przejmuj się, jestem tylko początkującym w tym ...”
Jeśli wysokość dowolnego elementu karty wynosi np. 400px (w oparciu o jego zawartość), ponieważ domyślnym ustawieniem flex-align jest stretch, wówczas rozciągnięty zostanie plik .card-item (element potomny wiersza lub klasy kolekcji kart). ustawienie wysokości karty na 100% rodzica zajmie tę pełną wysokość.
Mam nadzieję, że miałem rację. Jestem?
źródło
Jeśli ktoś jest zainteresowany, istnieje wtyczka jquery o nazwie: jquery.matchHeight.js
https://github.com/liabru/jquery-match-height
matchHeight sprawia, że wysokość wszystkich wybranych elementów jest dokładnie równa. Obsługuje wiele skrajnych przypadków, które powodują niepowodzenie podobnych wtyczek.
Do rzędu kart używam:
Następnie włącz w całej witrynie:
źródło
jsfiddle
Po prostu dodaj żądaną wysokość w CSS, na przykład:
Będziesz musiał dodać własny CSS.
Jeśli sprawdzisz dokumentację, dotyczy to stylu Masonry - chodzi o to, że nie wszystkie są tej samej wysokości.
źródło