新闻中心
Bootstrap 4:响应式布局中使列高度自适应内容

本文介绍了如何在使用 Bootstrap 4 构建响应式布局时,使两列在移动设备上折叠成一列后,其高度能够根据内容自适应。通过使用 `@media` 查询和 `display: block!important` 样式,可以有效地解决在没有滚动条时,列高度平均分配的问题,同时保留原有的滚动条功能。
在使用 Bootstrap 4 构建响应式布局时,经常会遇到需要在不同屏幕尺寸下调整列的排列方式和高度的问题。一个常见的场景是,在桌面端,两列并排显示,各自具有滚动条;而在移动端,这两列折叠成一列,垂直排列。在某些情况下,当内容较少,没有滚动条时,这些列可能会平均分配剩余的高度,而不是根据内容自适应。本文将介绍如何解决这个问题,确保在各种情况下列的高度都能正确显示。
问题描述
假设我们有一个包含 Header、两列内容区域和 Footer 的布局。在桌面端,两列内容区域并排显示,并且可以独立滚动。在移动端,我们希望这两列内容区域折叠成一列,垂直排列,并且高度能够自适应内容。
以下是一个基本的 HTML 结构示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 4 Responsive Columns</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css">
<style>
html,
body {
height: 100%;
}
</style>
</head>
<body>
<div class="container-fluid d-flex flex-column vh-100">
<div class="row border flex-shrink-0">
Header
</div>
<div class="row flex-grow-1 overflow-hidden">
<div class="col-6 mh-100 overflow-auto">
Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
</div>
<div class='col-6 mh-100 overflow-auto'>
World<br>World<br>World<br>World<br>World<br>World<br>World<br>
World<br>World<br>World<br>World<br>World<br>World<br>World<br>
World<br>World<br>World<br>World<br>World<br>World<br>World<br>
</div>
</div>
<div class="row border flex-shrink-0">
Footer
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>在移动端,我们通常会使用 @media 查询来改变列的宽度和溢出属性,使其折叠成一列:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 4 Responsive Columns</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css">
<style>
html,
body {
height: 100%;
}
</style>
</head>
<body>
<div class="container-fluid d-flex flex-column vh-100">
<div class="row border flex-shrink-0">
Header
</div>
<div class="row flex-grow-1 mh-100 overflow-auto">
<div class="col-12 overflow-visible">
Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
</div>
<div class='col-12 overflow-visible'>
World<br>World<br>World<br>World<br>World<br>World<br>World<br>
World<br>World<br>World<br>World<br>World<br>World<br>World<br>
World<br>World<br>World<br>World<br>World<br>World<br>World<br>
</div>
</div>
<div class="row border flex-shrink-0">
Footer
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>然而,当内容不足以产生滚动条时,两列的高度会平均分配,这可能不是我们想要的结果。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 4 Responsive Columns</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css">
<style>
html,
body {
height: 100%;
}
</style>
</head>
<body>
<div class="container-fluid d-flex flex-column vh-100">
<div class="row border flex-shrink-0">
Header
</div>
<div class="row flex-grow-1 mh-100 overflow-auto">
<div class="col-12 overflow-visible">
Hello
</div>
<div class='col-12 overflow-visible'>
World
</div>
</div>
<div class="row border flex-shrink-0">
Footer
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>解决方案
为了解决这个问题,我们可以使用 @media 查询在移动端为包含列的 row 元素添加 display: block!important 样式。这将覆盖 Bootstrap 默认的 flexbox 行为,使得列的高度能够根据内容自适应。
以下是修改后的代码:
科威旅游管理系统
该软件是以php+MySQL进行开发的旅游管理网站系统。系统前端采用可视化布局,能自动适应不同尺寸屏幕,一起建站,不同设备使用,免去兼容性烦恼。系统提供列表、表格、地图三种列表显示方式,让用户以最快的速度找到所需行程,大幅提高效率。系统可设置推荐、优惠行程,可将相应行程高亮显示,对重点行程有效推广,可实现网站盈利。系统支持中文、英文,您还可以在后台添加新的语言,关键字单独列出,在后台即可快速翻译。
0
查看详情
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 4 Responsive Columns</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css">
<style>
html,
body {
hei
ght: 100%;
}
@media (max-width: 768px) {
.row.flex-grow-1 {
display: block !important;
}
}
</style>
</head>
<body>
<div class="container-fluid d-flex flex-column vh-100">
<div class="row border flex-shrink-0">
Header
</div>
<div class="row flex-grow-1 mh-100 overflow-auto">
<div class="col-12 overflow-visible">
Hello
</div>
<div class='col-12 overflow-visible'>
World
</div>
</div>
<div class="row border flex-shrink-0">
Footer
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>通过添加以下 CSS 规则,我们可以在屏幕宽度小于或等于 768px 时,将 row 元素的 display 属性设置为 block:
@media (max-width: 768px) {
.row.flex-grow-1 {
display: block !important;
}
}!important 确保这个样式能够覆盖 Bootstrap 默认的样式。
完整示例
以下是包含滚动条和没有滚动条的完整示例代码,展示了如何使用上述方法来解决问题:
包含滚动条的示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 4 Responsive Columns</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css">
<style>
html,
body {
height: 100%;
}
@media (max-width: 768px) {
.row.flex-grow-1 {
display: block !important;
}
}
</style>
</head>
<body>
<div class="container-fluid d-flex flex-column vh-100">
<div class="row border flex-shrink-0">
Header
</div>
<div class="row flex-grow-1 mh-100 overflow-auto">
<div class="col-12 overflow-visible">
Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
</div>
<div class='col-12 overflow-visible'>
World<br>World<br>World<br>World<br>World<br>World<br>World<br>
World<br>World<br>World<br>World<br>World<br>World<br>World<br>
World<br>World<br>World<br>World<br>World<br>World<br>World<br>
</div>
</div>
<div class="row border flex-shrink-0">
Footer
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>没有滚动条的示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 4 Responsive Columns</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css">
<style>
html,
body {
height: 100%;
}
@media (max-width: 768px) {
.row.flex-grow-1 {
display: block !important;
}
}
</style>
</head>
<body>
<div class="container-fluid d-flex flex-column vh-100">
<div class="row border flex-shrink-0">
Header
</div>
<div class="row flex-grow-1 mh-100 overflow-auto">
<div class="col-12 overflow-visible">
Hello
</div>
<div class='col-12 overflow-visible'>
World
</div>
</div>
<div class="row border flex-shrink-0">
Footer
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>总结
通过使用 @media 查询和 display: block!important 样式,我们可以有效地解决在使用 Bootstrap 4 构建响应式布局时,列高度自适应内容的问题。这种方法既能保证在移动端列的高度根据内容自适应,又能保留原有的滚动条功能。在实际开发中,可以根据具体需求调整 @media 查询的断点值,以适应不同的屏幕尺寸。
以上就是Bootstrap 4:响应式布局中使列高度自适应内容的详细内容,更多请关注其它相关文章!
# 单选框
# 引用文献网站建设总结
# 湛江seo优化直供
# 店内推广营销工具怎么写
# 河南网站长尾关键词排名
# 建立网站seo
# 营销推广短视频拍摄方法
# 桦南网站推广怎么样赚钱
# seo人性营销
# 活动营销策划推广方案
# 网站推广快往a金脉科技可靠
# 解决这个问题
# 平均分配
# 有效地
# 解决问题
# 我们可以
# css
# 表单
# 管理系统
# 自适应
# 滚动条
# overfl
# .net
# 排列
# 响应式布局
# cdn
# ai
# npm
# bootstrap
# js
# html
# jquery
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】
怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】
使用J*aScript检测输入元素是否包含在特定类中
2026春节假期时间安排 2026春节假日查询
Mac怎么锁定备忘录_Mac备忘录加密设置教程
在python-socketio事件处理器中安全访问Flask应用上下文
Python实现多节点属性重叠度分析教程
如何提高微信支付的安全性_微信支付安全防护与设置建议
如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率
sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统
可靠CSGO开箱平台解析 CSGO开箱网合集
俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达
Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】
顺丰快件物流信息 官方网站查询入口
字由网在线版登录地址 字由网网页版安全入口
谷歌google账号怎么注册账号 谷歌账号注册官方流程
响应式图片在网页设计中的正确实现方法
12306选座怎么选到临时改签座_12306改签选座策略与步骤
C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法
c++中为什么推荐使用using替代typedef_c++现代化类型别名
Go语言中Map值调用指针接收器方法的限制与应对
Win10双系统截图高效法 截屏快捷键速记【技巧】
如何在 Excel Online 和 Google 表格中更改日期格式
印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】
深入理解J*aScript Promise异步执行与微任务队列
TikTok网页版直接登录 TikTok网页端官方平台入口
谷歌浏览器一键优化方案_谷歌浏览器直达主页极速不卡版
PHP高效扁平化嵌套数组:使用array_merge与数组解包操作符
126邮箱手机版登录官网2026_126手机邮箱免费入口最新
Win11输入法不见了怎么办_Windows11恢复语言栏显示方法
TypeScript/J*aScript:高效查找数组中首个唯一ID对象
CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示
内存检查:在VS Code中调试C++时的内存视图
126邮箱账号注册 电脑版登录入口
谷歌邮箱注册显示错误Gmail服务器异常与延迟处理
Go语言中JSON数据解码与字段访问指南
css绝对定位元素脱离父容器怎么办_确保父元素position非static
在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明
qq游戏免费畅玩入口_qq游戏电脑版快速启动
“在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法
俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口
Linux如何构建多环境配置管理_Linux多环境配置方案
微信怎么把收藏的内容分类管理 微信收藏内容标签分类方法
服务端验证_j*ascript输入检查
Lar*el DB::listen 事件中的查询执行时间单位解析
抖音极速版最新版本 抖音极速版官方下载地址
谷歌邮箱网页版官方页面入口 谷歌邮箱网页端快速访问
快手官方唯一登录入口 谨防山寨钓鱼网站
163邮箱注册官网 免费申请163个人邮箱
必由学在线入口 必由学网页版快速登录入口


2025-10-19
浏览次数:次
返回列表
ght: 100%;
}
@media (max-width: 768px) {
.row.flex-grow-1 {
display: block !important;
}
}
</style>
</head>
<body>
<div class="container-fluid d-flex flex-column vh-100">
<div class="row border flex-shrink-0">
Header
</div>
<div class="row flex-grow-1 mh-100 overflow-auto">
<div class="col-12 overflow-visible">
Hello
</div>
<div class='col-12 overflow-visible'>
World
</div>
</div>
<div class="row border flex-shrink-0">
Footer
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>