
本文详解通过 css 响应式控制(如 `overflow`, `word-break`, `flex-wrap`, `max-width`)与 bootstrap 栅格系统协同优化,彻底解决卡片内列表文字在移动端溢出、布局错乱的问题。
在构建响应式卡片组件时,内容溢出(尤其是长文本项如“Food License (FSSAI)”或“Company / LLP Incorporation”)是初学者常见问题。你提供的代码中,.services-list 使用了 position: absolute 和固定宽高(如 width: 550px),这会直接破坏响应式行为——在小屏幕下,元素无法自适应容器宽度,导致文字撑破卡片、换行失效甚至横向滚动。
✅ 核心修复策略
-
移除破坏流式布局的绝对定位
position: absolute 使 .services-list 脱离文档流,失去对父容器(.card-body)的尺寸依赖。应改为标准块级或弹性布局:.services-list { list-style: none; padding: 0; margin: 0; text-align: left; font-size: 1.5em; /* 删除:position: absolute; display: flex; overflow: hidden; */ } 启用安全换行与防溢出
对- 内容添加强制换行和溢出隐藏(兼顾可读性与完整性):
.services-list li { padding: 0.75rem 1rem; word-break: break-word; /* 在任意字符间换行(适合长英文/混合文本) */ /* 或使用:overflow-wrap: break-word; */ white-space: normal; /* 允许正常换行(禁用 nowrap) */ } -
响应式字体与内边距缩放
利用媒体查询动态调整移动端字体大小和间距,避免文字“挤出”:@media (max-width: 768px) { .services-list li { font-size: 1.1rem; /* 比桌面端小,但保持可读 */ padding: 0.5rem 0.75rem; } #services-card { padding: 5% 8%; /* 减少左右留白,留出更多内容宽度 */ } } -
Bootstrap 栅格已足够健壮,无需额外固定宽度
你使用了 .col-lg-6,这是正确的;但 .card-back 和 .card-white 的 width: 550px 会覆盖 Bootstrap 的响应式宽度。应删除所有显式 width,改用 max-width 或完全交由栅格控制:.card-back, .card-white { /* 删除 width: 550px; */ max-width: 100%; /* 确保不超出父容器 */ width: auto; /* 让内容决定自然宽度 */ /* 移除 height: 70px; —— 高度应由内容撑开 */ } -
增强可访问性与视觉一致性(推荐)
添加 box-sizing: border-box 防止 padding/border 影响尺寸计算,并为小屏优化 hover 效果(避免误触):.services-list li { box-sizing: border-box; transition: all 0.2s ease; } @media (hover: hover) and (pointer: fine) { .card-back:hover, .card-white:hover { background-color: #e6f7ff; color: #e60073; font-weight: 600; } }
✅ 完整优化后关键 CSS 示例
.services-list {
list-style: none;
padding: 0;
margin: 0;
text-align: left;
font-size: 1.5em;
}
.services-list li {
padding: 0.75rem 1rem;
word-break: break-word;
white-space: normal;
box-sizing: border-box;
cursor: pointer;
}
.card-back, .card-white {
background-color: transparent;
border: none;
width: 100%;
padding: 0.5rem 1rem;
text-align: left;
font-weight: 500;
}
@media (max-width: 768px) {
.services-list li {
font-size: 1.1rem;
padding: 0.6rem 0.8rem;
}
#services-card {
padding: 4% 6%;
}
}? 重要提醒:Bootstrap 5+ 已弃用 fa-solid 图标类(需引入 Font Awesome 6 CDN),且 pl-5 等间距工具类在小屏下可能造成过宽缩进。建议统一用 ps-3(padding-start)替代 pl-3,并配合 text-truncate 类处理超长单项(如 Food License (FSSAI))。
通过以上调整,你的卡片将在所有设备上保持内容完整、换行合理、无横向溢出,真正实现专业级响应式体验。










