Flex布局实现滑动吸顶分类导航栏:用display: flex构建横向tab栏,position: sticky实现吸顶,scroll-behavior: smooth优化滚动,监听scroll添加.scrolled类增强视觉反馈,并通过padding、white-space、max-width等适配移动端。

用 Flex 布局做滑动吸顶的分类导航栏,核心是“Flex 控制结构 + sticky 实现吸顶 + 滚动状态微调视觉反馈”。它不依赖 JS 计算位置,也不用固定高度 hack,干净高效。
结构用 Flex 搭好横向分类栏
分类导航本质是一排水平排列的 tab 项,Flex 天然适配:
- 给容器(如
<nav class="tabs">)设display: flex,默认flex-direction: row - 用
flex-wrap: nowrap防止换行,配合overflow-x: auto开启横向滚动 - 每个 tab 用
<button>或<a>,设flex: 0 0 auto保持内容宽度,或统一设flex: 1实现等宽分配 - 加
scroll-behavior: smooth让手动拖拽更顺滑(可选)
用 position: sticky 实现吸顶
让整个分类栏在页面纵向滚动时固定在顶部:
- 给分类栏容器加
position: sticky和top: 0 - 确保父容器没有
overflow: hidden或transform等触发新层叠上下文的属性,否则 sticky 失效 - 加
z-index: 100(或更高)保证它压在下方内容之上 - 如果页面顶部有其他吸顶元素(如主 nav),注意 top 值需错开,比如设
top: 60px
滚动时增强视觉反馈(可选但推荐)
仅吸顶不够直观,加一点动态变化提升体验:
- 监听
scroll事件,当页面滚过一定距离(比如 100px),给分类栏加.scrolled类 - 用这个类控制背景色加深、加阴影
box-shadow: 0 2px 8px rgba(0,0,0,0.08)、或轻微缩放transform: scale(0.995) - 过渡动画加
transition: all 0.2s ease,避免生硬跳变
移动端适配要点
小屏下横向空间紧张,要兼顾可滚动与易操作:
- 给容器设
padding-inline: 12px,留出边缘缓冲,避免 tab 贴边难点 - tab 文字用
white-space: nowrap+font-size: 14px,防止折行破坏布局 - 必要时用媒体查询限制最大宽度,比如
max-width: 100vw,防溢出 - 禁用默认滚动条干扰:
&::-webkit-scrollbar { display: none; }


















