当前位置: 网站首页 >> 知识库 >> 正文
CSS display:flex 弹性布局 子标签设置宽度无效的问题
发布时间:2025-11-04       编辑:网络中心       浏览次数:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

来源:https://yaochong.blog.csdn.net/article/details/124539920



前言

最难的果然还是css,工作中经常使用display:flex; 让多个竖直排列的元素变成横向排列,直到今天才发现display:flex; 会导致子标签的宽度失效。

正文

问题

<div class="outer">
    <div class="inner">1</div>
    <div class="inner">2</div>
    <div class="inner">3</div></div>
    .outer {
    width: 300px;
    border: 1px solid black;
    overflow-x: auto;
    display: flex;

        .inner {
        width: 200px;
        height: 20px;
        background: pink;
        margin-right: 10px;
    }}

按理说,父元素应该会出现横向滚动条,但实际结果如下:
在这里插入图片描述

原因

百度查了一下,原因如下:

父元素设置了display:flex,那么所有的子标签都会默认加上flex:0 1 auto;其中1 就是 flex中的 flex-shrink 属性,表示开启了元素的收缩功能,所以子元素宽度才会失效。

flex 属性是 flex-grow、flex-shrink 和 flex-basis 属性的简写属性。
flex的默认值就是 0 1 auto

在这里插入图片描述

解决

方法1

flex: 0 0 auto;width: 200px;

方法2

flex: 0 0 200px;

方法3

flex-shrink: 0;width: 200px;

方法4

min-width:200px;

效果
在这里插入图片描述

推荐使用方法3


上一条:CSS MASK

关闭本页

广东茂名农林科技职业学院教育技术与网络中心版权所有

© by GDAFC Education Technology & Network Center, All Rights Reserved.

Baidu
map