Bootstrap 4 baralho de cartas com o número de colunas baseadas na área de visualização

Estou a tentar implementar a funcionalidade de baralho de cartas no bootstrap 4 para fazer todas as minhas cartas da mesma altura.

os exemplos que o bootstrap oferece mostram 4 cartas bonitas, mas são 4 cartas na linha, não importa a área de visualização. Veja o codeply aqui.

Isto não faz sentido para mim, pois, presumo, que queiras um tamanho mínimo para o teu cartão encolher para que o teu conteúdo ainda pareça bom.

Então tentei adicionar em algumas classes de visualização a break on screen sizes, but as soon as that div gets added, the card-deck doesn't apply anymore, thus not making the cards equal height.

Como posso conseguir isto? Esta é uma característica em falta que será abordada no lançamento completo do Bootstrap 4?

Aqui está o violino. https://jsfiddle.net/crrm5q9m/

<div class="card-deck-wrapper">
  <div class="card-deck">
    <div class="card card-inverse card-success text-center col-xs-6 col-sm-4 col-md-3 col-lg-2 col-xl-1">
      <div class="card-block">
        <blockquote class="card-blockquote">
          <p>It's really good news that the new Bootstrap 4 now has support for CSS 3 flexbox.</p>
          <footer>Makes flexible layouts <cite title="Source Title">Faster</cite></footer>
        </blockquote>
      </div>
    </div>
    <div class="card card-inverse card-danger text-center col-xs-6 col-sm-4 col-md-3 col-lg-2 col-xl-1">
      <div class="card-block">
        <blockquote class="card-blockquote">
          <p>The Bootstrap 3.x element that was called "Panel" before, is now called a "Card".</p>
          <footer>All of this makes more <cite title="Source Title">Sense</cite></footer>
        </blockquote>
      </div>
    </div>
    <div class="card card-inverse card-warning text-center col-xs-6 col-sm-4 col-md-3 col-lg-2 col-xl-1">
      <div class="card-block">
        <blockquote class="card-blockquote">
          <p>There are also some interesting new text classes for uppercase and capitalize.</p>
          <footer>These handy utilities make it <cite title="Source Title">Easy</cite></footer>
        </blockquote>
      </div>
    </div>
    <div class="card card-inverse card-info text-center col-xs-6 col-sm-4 col-md-3 col-lg-2 col-xl-1">
      <div class="card-block">
        <blockquote class="card-blockquote">
          <p>If you want to use cool icons in Bootstrap 4, you'll have to find your own such as Font Awesome or Ionicons.</p>
          <footer>The Glyphicons are not <cite title="Source Title">Included</cite></footer>
        </blockquote>
      </div>
    </div>
        <div class="card card-inverse card-success text-center col-xs-6 col-sm-4 col-md-3 col-lg-2 col-xl-1">
      <div class="card-block">
        <blockquote class="card-blockquote">
          <p>It's really good news that the new Bootstrap 4 now has support for CSS 3 flexbox.</p>
          <footer>Makes flexible layouts <cite title="Source Title">Faster</cite></footer>
        </blockquote>
      </div>
    </div>
    <div class="card card-inverse card-danger text-center col-xs-6 col-sm-4 col-md-3 col-lg-2 col-xl-1">
      <div class="card-block">
        <blockquote class="card-blockquote">
          <p>The Bootstrap 3.x element that was called "Panel" before, is now called a "Card".</p>
          <footer>All of this makes more <cite title="Source Title">Sense</cite></footer>
        </blockquote>
      </div>
    </div>
    <div class="card card-inverse card-warning text-center col-xs-6 col-sm-4 col-md-3 col-lg-2 col-xl-1">
      <div class="card-block">
        <blockquote class="card-blockquote">
          <p>There are also some interesting new text classes for uppercase and capitalize.</p>
          <footer>These handy utilities make it <cite title="Source Title">Easy</cite></footer>
        </blockquote>
      </div>
    </div>
    <div class="card card-inverse card-info text-center col-xs-6 col-sm-4 col-md-3 col-lg-2 col-xl-1">
      <div class="card-block">
        <blockquote class="card-blockquote">
          <p>If you want to use cool icons in Bootstrap 4, you'll have to find your own such as Font Awesome or Ionicons.</p>
          <footer>The Glyphicons are not <cite title="Source Title">Included</cite></footer>
        </blockquote>
      </div>
    </div>
  </div>
</div>
Author: Zim, 2016-04-05

5 answers

actualizado 2018

Se quiser um baralho de cartas que responda , use os utils de visibilidade para forçar uma mudança de linha em cada x colunas em diferentes pontos de vista(breakpoints)...

Bootstrap 4 ágil baralho de cartas (v 4.1)


Resposta Original para Bootstrap 4 alfa 2:

Você pode usar a grelha col-*-* para obter as diferentes larguras (em vez do baralho de cartas) e, em seguida, definir a altura igual aos cols usando flexbox.

.row > div[class*='col-'] {
  display: flex;
  flex:1 0 auto;
}

Http://codeply.com/go/O0KdSG2YX2 (alfa 2)

O problema é que o w / o flexbox activou o card-deck usa table-cell onde se torna muito difícil controlar a largura. A partir de Bootstrap 4 Alfa 6, flexbox é padrão para que o CSS adicional não é necessário para flexbox, e o h-100 A classe pode ser usada para fazer as cartas de altura completa: http://www.codeply.com/go/gnOzxd4Spk


Pergunta Conexa: Bootstrap 4 - Cartas sensíveis em colunas de cartas

 24
Author: Zim, 2018-07-31 10:07:55

Aqui está uma solução com Sass para configurar o número de cartas por linha, dependendo dos pontos de paragem: https://codepen.io/migli/pen/OQVRMw

Funciona bem com Bootstrap 4 beta 3

// Bootstrap 4 breakpoints & gutter
$grid-breakpoints: (
    xs: 0,
    sm: 576px,
    md: 768px,
    lg: 992px,
    xl: 1200px
) !default;

$grid-gutter-width: 30px !default;

// number of cards per line for each breakpoint
$cards-per-line: (
    xs: 1,
    sm: 2,
    md: 3,
    lg: 4,
    xl: 5
);

@each $name, $breakpoint in $grid-breakpoints {
    @media (min-width: $breakpoint) {
        .card-deck .card {
            flex: 0 0 calc(#{100/map-get($cards-per-line, $name)}% - #{$grid-gutter-width});
        }
    }
}
 12
Author: migli, 2018-01-31 14:59:02

Existe uma solução mais simples para isso - Definir a altura fixa dos elementos da carta - cabeçalho e corpo. Desta forma, podemos definir o layout resposivo com a grelha de colunas boostrap padrão.

Aqui está o meu exemplo.: http://codeply.com/go/RHDawRSBol
 <div class="card-deck text-center">
    <div class="col-sm-6 col-md-4 col-lg-3">
        <div class="card mb-4">
            <img class="card-img-top img-fluid" src="//placehold.it/500x280" alt="Card image cap">
            <div class="card-body" style="height: 20rem">
                <h4 class="card-title">1 Card title</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>
                <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
            </div>
        </div>
 2
Author: Bart Gluszak, 2018-06-09 12:30:21
<div class="w-100 d-lg-none mt-4"></div>
Criei 4 cartas e coloquei este código entre a segunda e a terceira carta, tenta isto.
 2
Author: Mohammad Ayoub Khan, 2018-06-17 20:14:54

Demorei um pouco a perceber isto, mas a resposta é não usar um baralho de cartas, mas em vez disso usar .row e .cols.

Isto faz um conjunto sensível de cartões com especificações para cada tamanho do ecrã: 3 cartões para xl, 2 para lg e md, e 1 para sm e xs. Põe um acolchoado em cima e em baixo para ficarem bonitos.

mixin postList(stuff)
  .row
    - site.posts.each(function(post, index){
      .col-sm-12.col-md-6.col-lg-6.col-xl-4
        .card.my-3
          img.card-img-top(src="...",  alt="Card image cap")
          .card-body
            h5.card-title Card title #{index}
            p.card-text Some quick example text to build on the card title and make up the bulk of the cards content.
            a.btn.btn-primary(href="#") Go somewhere
    - })
 -1
Author: Michael Cole, 2018-02-22 18:34:24