在Bootstrap 4的响应式布局开发中,栅格系统默认采用Flexbox布局,当同一行的列内容多少不同时,所有列会自动拉伸到同一高度,这往往不符合内容自适应高度的需求。我们可以通过调整相关CSS属性来解决这个问题。

方法一:修改栅格容器的对齐方式
Bootstrap 4的row类默认设置了display: flex和align-items: stretch,后者会让列高度拉伸对齐。我们只需要将align-items的值改为flex-start,就能让列高度跟随内容自适应。
可以直接在row元素上添加自定义类,或者覆盖默认样式:
/* 自定义样式 */
.auto-height-row {
align-items: flex-start !important;
}
HTML结构示例如下:
<div class="container">
<div class="row auto-height-row">
<div class="col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">短内容列</h5>
<p class="card-text">这是一段很短的内容。</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">长内容列</h5>
<p class="card-text">这是一段很长的内容,用来测试列高度是否会根据内容自适应。这里添加更多文字,让这个列的内容比旁边的列多很多,观察高度变化。</p>
<p class="card-text">继续添加内容,进一步增加列的高度,验证自适应效果。</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">中等内容列</h5>
<p class="card-text">这是一段中等长度的内容,介于短内容和长内容之间。</p>
</div>
</div>
</div>
</div>
</div>
方法二:将列设置为非Flex子项
如果不想修改row的Flex属性,也可以将列自身的display属性从flex改为block,这样列就不会被Flex容器拉伸,高度会跟随内容变化。
对应的CSS样式如下:
/* 让列恢复块级显示,高度自适应内容 */
.auto-height-col {
display: block !important;
}
使用时给需要自适应高度的列添加这个类即可:
<div class="container">
<div class="row">
<div class="col-md-4 auto-height-col">
<p>短内容列,高度会跟随内容变化。</p>
</div>
<div class="col-md-4 auto-height-col">
<p>长内容列,这里有很多文字,列的高度会自动变高,不会和旁边的列保持统一高度。</p>
<p>额外添加的内容,进一步增加高度。</p>
</div>
<div class="col-md-4 auto-height-col">
<p>中等内容列。</p>
</div>
</div>
</div>
两种方法的适用场景
- 如果整行都需要列高度自适应,优先选择方法一,修改
row的对齐属性,影响范围更统一。 - 如果只有部分列需要自适应高度,其他方法保持默认拉伸效果,选择方法二单独设置列的显示属性更合适。
需要注意的是,修改这些属性后,如果列内有需要垂直居中的内容,可能需要额外调整内部元素的对齐方式,避免布局错乱。
Bootstrap_4响应式布局列高度自适应栅格系统修改时间:2026-07-24 13:18:32