Flex布局实现侧边栏固定、内容区自适应:侧边栏设flex: 0(即flex-grow: 0、flex-shrink: 0、flex-basis: auto),配合固定宽度或内容撑开;内容区设flex: 1(即flex-grow: 1、flex-shrink: 1、flex-basis: 0),并确保父容器display: flex且内容区min-width: 0。
侧边栏固定、内容区自适应,用 Flex 布局确实很简单:侧边栏设 flex: 0(不伸缩、不收缩、按自身宽度显示),内容区设 flex: 1(占满剩余空间),就能自然实现。
flex: 0 是 flex: 0 0 auto 的简写,意味着:
所以只要给侧边栏设个固定宽度(比如 width: 240px),或者靠内容撑开,它就不会被挤压或拉伸。
flex: 1 等价于 flex: 1 1 0,重点在:
这样即使窗口缩放,内容区也会实时响应,始终贴着侧边栏右侧延伸。
Flex 生效的前提是父容器开启 Flex 布局:
display: flex
flex-direction: column
min-width: 0 到内容区(防止内部长内容溢出破坏布局)基本上就这些。不复杂,但容易忽略父容器 display 和内容区 min-width 这两个点。