You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bootstrap中响应式flex的grow和shrink属性不生效如何解决?

问题原因

  • 你当前的代码中使用了.col类,该类自带flex: 1 0 0%属性,会让两个子元素自动平分父容器.row的宽度,永远不会出现子元素总宽度超过父容器的情况。flex-shrink的触发前提是子元素总宽度大于父容器可用宽度,所以该属性自然不会生效。
  • flex-md-shrink-*属于响应式类,仅在屏幕宽度≥768px的md断点下生效,小于该宽度时不会加载对应的属性。

修正方案

如果要测试flex-shrink的效果,可移除.col类,给子元素设置固定宽度,保证在窗口缩窄时子元素总宽度超过父容器,示例代码如下:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
  <title>Flex Shrink Test</title>
</head>
<body>
  <div class="container-fluid">
    <!-- row是flex容器 -->
    <div class="row bd-highlight">
      <!-- 移除col类,设置固定宽度,md断点下允许压缩,宽度不够时优先压缩这个元素 -->
      <div class="border border-2 flex-md-shrink-1" style="width: 400px">Flex item 1</div>
      <!-- 移除col类,设置固定宽度,md断点下不允许压缩 -->
      <div class="border border-2 flex-md-shrink-0" style="width: 400px">Flex item 2</div>
    </div>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

效果说明

当屏幕宽度≥768px且窗口宽度小于800px时,你会看到第一个元素会自动压缩,第二个元素始终保持400px宽度不变,符合shrink属性的预期效果。

内容的提问来源于stack exchange,提问作者Pradyut Vatsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:09:04