我正在从数据库的表中获取数据,并将其以卡片的形式呈现在屏幕上。但是,这些卡片都以一个长列的形式显示在屏幕的左侧,而不是像我希望的那样以3列的形式显示。我的当前代码如下:我试过使用card-deck,它使卡片排成3行,但卡片重复(即它们保存的数据重复)。我希望数据不重复,我如何实现这一点?
card-deck
drnojrws1#
在bootstrap中创建grid时,需要遵循以下结构:
<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>结束标记,但我猜这是一个复制粘贴错误。
row-sm-3
row
</div>
1szpjjfi2#
我不知道.row-sm-3是做什么的,但你甚至不需要.row。.card-deck具有flex,其作用类似于 Bootstrap .row。您的间距(例如,col-lg-3、.col-md-6)应用于每个.card。请参阅下面的代码片段。
.row-sm-3
.row
.card-deck
flex
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> <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>
<div class="container"> {% for class in all_classes %} <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> </div>
2条答案
按热度按时间drnojrws1#
在bootstrap中创建grid时,需要遵循以下结构:
但是,您使用的是
row-sm-3
,它不起作用。您需要将其更改为row
。此外,您的示例中缺少了一个
</div>
结束标记,但我猜这是一个复制粘贴错误。1szpjjfi2#
我不知道
.row-sm-3
是做什么的,但你甚至不需要.row
。.card-deck
具有flex
,其作用类似于 Bootstrap.row
。您的间距(例如,col-lg-3
、.col-md-6
)应用于每个.card
。请参阅下面的代码片段。