Flex 设置横向滚动后元素宽度被压缩

当给一个容器采用 flex 布局并且设置横向滚动的时候,当所有子元素的内容超出父元素的宽度时,子元素的宽度被压缩了,从而导致变形。

需要给父元素设置 overflow-x: auto; 属性,然后子元素设置 flex-shrink: 0; 属性。

<div class="parent">
    <div class="children">xxx</div>
    <div class="children">yyyy</div>
    <div class="children">wwwww</div>
    <div class="children">zzzzzz</div>
</div>
.parent {
    width: 500px;
    height: 40px
    display: flex;
    align-items: center;
    flex-wrap: nowrap; // 不换行
    overflow-x: auto; // 横向滚动
}
.children {
    width: auto; // 这里假设每个子元素的宽度跟随内容进行变化, 即每个子元素宽度不相同
    height: 100%;
    flex-shrink: 0; // 禁止宽度被压缩
}