2026-10-31 16:28:29
要使用CSS的clip-path和path()函数实现分段器的45度曲线效果,核心思路是为激活状态的标签创建伪元素(:before和:after),并通过clip-path: path()定义45度贝塞尔曲线路径。以下是具体实现步骤和代码解析:
1. HTML结构<div class="wrap"> <div class="tabs"> <div class="tab active">标签1</div> <div class="tab">标签2</div> </div> <div class="content-wrap"></div></div>通过伪元素(:before和:after)和clip-path: path()定义曲线:
.tab.active:before { /* 左侧曲线 */ content: ''; position: absolute; top: 0; left: -50px; /* 曲线向左延伸50px */ height: 100%; width: 50px; z-index: 2; background-color: #fff; clip-path: path('M 0,50 C 25,50 25,0 50,0 L 50,50 Z');}.tab.active:after { /* 右侧曲线 */ content: ''; position: absolute; top: 0; right: -50px; /* 曲线向右延伸50px */ height: 100%; width: 50px; z-index: 2; background-color: #fff; clip-path: path('M 0,0 C 25,0 25,50 50,50 L 0,50 Z');}M x,y:移动到起点。
C x1,y1 x2,y2 x,y:绘制三次贝塞尔曲线,控制点为(25,50)和(25,0)(左侧曲线)或(25,0)和(25,50)(右侧曲线)。
L x,y:绘制直线到终点。
通过JavaScript(如Alpine.js、原生JS或框架)管理active类,实现标签切换时曲线的动态显示:
// 示例:原生JavaScript实现document.querySelectorAll('.tab').forEach(tab => { tab.addEventListener('click', () => { document.querySelector('.tab.active')?.classList.remove('active'); tab.classList.add('active'); });});通过以上步骤,即可实现一个具有45度曲线效果的分段器,用户点击标签时曲线动态切换,增强交互体验。