左侧导航 + 右侧内容区域 | 无 JavaScript | Flexbox 布局 | 响应式设计 | 平滑动画
这是一个完全使用 纯 CSS 实现 的垂直选项卡组件,无需任何 JavaScript 代码。
左侧为垂直排列的导航标题,右侧为对应的内容区域。通过 CSS 的 :checked 伪类和兄弟选择器实现切换逻辑。
组件特点:
核心原理: 利用隐藏的 radio 按钮的 :checked 状态,通过 CSS 兄弟选择器控制内容显示。
radio 按钮 + label 作为标题,内容区域使用绝对定位
#tab1:checked ~ .tab-contents .content-1
容器 display: flex,标题区域 flex-direction: column
使用 opacity + transform 实现平滑过渡
关键 CSS 片段:
#tab1:checked ~ .tab-contents .content-1 {
opacity: 1;
transform: translateX(0);
pointer-events: all;
}
本组件在视觉设计上注重用户体验和现代感:
左侧蓝色边框 + 背景高亮 + 微妙的右移动画
内容从右侧滑入,配合淡入效果,流畅自然
卡片阴影、分隔线、图标系统构建清晰信息层级
小屏设备自动切换为水平选项卡布局
设计细节: 激活项使用 transform-origin 实现从底部生长的边框动画,配合 cubic-bezier 贝塞尔曲线创造更自然的运动感。
此垂直选项卡组件适用于多种场景:
设置面板、用户资料编辑、系统配置等
功能特性分组展示,提升信息可读性
API 文档分类、帮助中心内容组织
不同数据视图切换,保持界面整洁
💡 最佳实践建议:
aria-label 提升无障碍体验固定宽度 200px
这里是主要内容区域,会自动填充剩余空间。
左侧区域固定宽度,右侧区域自适应填充剩余空间。
右侧内部采用上中下结构: