Как заставить карты появляться рядом друг с другом в ряду, чтобы заполнить сетку перед началом нового ряда?
У меня есть данные из таблицы, на основе этих данных создаются карточки и выводятся на экран. Однако они появляются друг под другом с левой стороны, а не заполняют сначала строку, прежде чем начать новую строку: (https://i.stack.imgur.com/dDgvB.png)
Мой код:
<div class="container">
{% for class in all_classes %}
</br>
<div class="row-sm-3">
<div class="col-sm-4">
<div class="card-deck">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">{{ class.class_name}}</h5>
<p class="card-text">{{class.teacher_id.username }}</p>
<a href="#" class="btn btn-primary">Go To</a>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
Как я могу это исправить?
Замените row-sm-3
(его нет в Bootstrap) на row
.
<div class="container">
{% for class in all_classes %}
<br>
<div class="row">
<div class="col-sm-4">
<div class="card-deck">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">{{ class.class_name}}</h5>
<p class="card-text">{{class.teacher_id.username }}</p>
<a href="#" class="btn btn-primary">Go To</a>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
Я не уверен, что делает .row-sm-3
, но вам даже не нужно .row
.
.card-deck
имеет flex
и будет действовать аналогично Bootstrap .row
. Ваш интервал (например, col-lg-3
, .col-md-6
) должен использоваться на каждом .card
. Смотрите фрагмент ниже.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<div class="container">
<div class="card-deck">
<div class="col-12 col-lg-3 col-md-6">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">{{ class.class_name}}</h5>
<p class="card-text">{{class.teacher_id.username }}</p>
<a href="#" class="btn btn-primary">Go To</a>
</div>
</div>
</div>
<div class="col-12 col-lg-3 col-md-6">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">{{ class.class_name}}</h5>
<p class="card-text">{{class.teacher_id.username }}</p>
<a href="#" class="btn btn-primary">Go To</a>
</div>
</div>
</div>
<div class="col-12 col-lg-3 col-md-6">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">{{ class.class_name}}</h5>
<p class="card-text">{{class.teacher_id.username }}</p>
<a href="#" class="btn btn-primary">Go To</a>
</div>
</div>
</div>
<div class="col-12 col-lg-3 col-md-6">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">{{ class.class_name}}</h5>
<p class="card-text">{{class.teacher_id.username }}</p>
<a href="#" class="btn btn-primary">Go To</a>
</div>
</div>
</div>
</div>
</div>
При создании grid в bootstrap необходимо следовать структуре:
<div class="row">
<div class="col">Item 1</div>
<div class="col">Item 2</div>
<div class="col">Item 3</div>
</div>
Однако вы используете row-sm-3
, что не работает. Вам нужно изменить его на просто row
.
Кроме того, в вашем примере не хватает закрывающего тега </div>
, но я думаю, что это была ошибка копирования-вставки.