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
相关产品推荐
相关产品推荐

