子元素即使设置了width,宽度也可能会发生变化
div#container {
display: flex;
}
.box {
width: 300px;
}
默认情况下,width: 300px; 只是一个初始宽度
-
由于
display: flex;使#container变成弹性容器,.box元素会默认以flex-grow: 0; flex-shrink: 1; flex-basis: auto;的方式进行布局(除非手动设置flex相关属性)。 -
width: 300px;会被flex-basis影响,因为flex-basis的默认值是auto,这意味着.box的宽度会优先参考width的值,但仍可能因flex-grow和flex-shrink发生变化。 -
当
flex-basis: auto;时,width的值会被用作.box的初始宽度。
也就是:
.box {
width: 300px;
}
.box {
flex-basis: auto; /* 继承 width: 300px */
flex-grow: 0; /* 不会扩大 */
flex-shrink: 1; /* 允许缩小 */
}