Django模板中Bootstrap网格布局对齐异常问题求助
Django+Bootstrap网格布局错位问题
我使用Django框架在模板中循环展示数据库内的图片,尝试用Bootstrap网格实现整洁布局,但布局异常,底部图片出现对齐错位问题。

模板HTML代码
<div class="container"> <div class="row"> <div class="col-sm-12 col-md-3 col-lg-2"> <div class="card-filter" style="width: 10rem;"> <div class="card-header"> Pattern Type </div> <ul class="list-group list-group-flush"> {% for pattern in categories %} <li class="list-group-item">{{pattern.name}}</li> {% endfor %} </ul> </div> </div> {% for photo in photos %} <div class="col-sm-12 col-md-5 col-ld-5"> <div class="card" style="width: 25rem;"> <img class="card-img-top" src="{{photo.image.url}}" alt="Card image cap"> <div class="card-body"> <p class="card-text">Symbol: GBPUSD<br>Pattern: ButterFly Bullish</p> <a href="{% url 'photo' photo.id %}" class="btn btn-dark">View Pattern</a> </div> </div> </div> {% endfor %} </div> </div>
views.py代码
def home(request): categories = Category.objects.all() photos = Photo.objects.all() context = {'categories': categories, 'photos': photos} return render(request, "main/home.html", context)
问题原因及修复方案
1. 列类拼写错误
代码中col-ld-5是拼写错误,正确应为col-lg-5,错误的类名会导致大屏幕下列宽规则失效,破坏布局逻辑。
2. 网格列宽总和超出限制
Bootstrap网格系统基于12列布局,左侧侧边栏占col-md-3,右侧每个卡片列用col-md-5的话,3+5+5=13,超出了12列的上限,这是布局错位的核心原因。
3. 卡片高度不一致
不同卡片的图片或内容高度不同,会导致网格自动换行时出现错位。
修复后的HTML代码
<div class="container"> <div class="row"> <!-- 左侧过滤器区域 --> <div class="col-sm-12 col-md-3 col-lg-2"> <div class="card-filter" style="width: 10rem;"> <div class="card-header"> Pattern Type </div> <ul class="list-group list-group-flush"> {% for pattern in categories %} <li class="list-group-item">{{pattern.name}}</li> {% endfor %} </ul> </div> </div> <!-- 右侧卡片容器,单独占剩余列宽 --> <div class="col-sm-12 col-md-9 col-lg-10"> <div class="row"> {% for photo in photos %} <div class="col-sm-12 col-md-6 col-lg-4 mb-4"> <div class="card h-100"> <!-- h-100强制所有卡片高度一致 --> <img class="card-img-top" src="{{photo.image.url}}" alt="Card image cap"> <div class="card-body"> <p class="card-text">Symbol: GBPUSD<br>Pattern: ButterFly Bullish</p> <a href="{% url 'photo' photo.id %}" class="btn btn-dark">View Pattern</a> </div> </div> </div> {% endfor %} </div> </div> </div> </div>
修复说明:
- 将右侧卡片统一放入一个占剩余宽度的列中,内部嵌套row循环卡片,避免列宽总和超标
- 用
col-md-6(中等屏幕每行2张)、col-lg-4(大屏幕每行3张)设置合理的列宽 - 添加
h-100类确保所有卡片高度一致,mb-4给卡片添加底部间距提升美观度
内容的提问来源于stack exchange,提问作者tiberhockey
相关产品推荐
相关产品推荐

