【React】Ant Design 5.x 实现tabs圆角及反圆角效果

需要实现的效果


实现思路

利用tab页的before和after属性,添加tab页前后的圆弧属性,同时使用tab页的shadow阴影填充右下角的圆弧空缺部分。

复制代码
            <Tabs
                onChange={onChange}
                type="card"
                items={getTabItems()}
            />

.ant-tabs-nav{
        margin: 0;

        .ant-tabs-nav-list{
            display: flex;
            position: relative;
            z-index: 2;
            width: 100%;
            background: #E1E8F2;
            border-radius: 24px 24px 0 0;
            overflow: hidden; // 重点
            user-select: none;
        }

        .ant-tabs-tab{
            flex: 1;
            position: relative;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 66px;
            padding: 18px 0;
            margin: 0;
            border: none;
            font-weight: 500;
            font-size: 22px;
            color: #606266;
            line-height: 30px;
            text-align: left;
            font-style: normal;
            border-radius: 24px 24px 0 0 !important;
            background: #E1E8F2;
            transition: none;
            user-select: none;

            &::before{
                content: '';
                position: absolute;
                left: 10px;
                bottom: 0;
                width: 32px;
                height: 66px;
                background: #E1E8F2;
                border-bottom-left-radius: 24px;
                transform: skewX(15deg); // 重点
                z-index: 4; 
            }
            &::after{
                z-index: 4;
                content: '';
                position: absolute;
                right: 10px;
                bottom: 0;
                width: 32px;
                height: 66px;
                background: #E1E8F2;
                border-bottom-right-radius: 24px;
                transform: skewX(-15deg); // 重点
            }
        }
        .ant-tabs-tab-active{
            opacity: 1;
            z-index: 3; 
            background: #ffffff;
            border-radius: 24px 24px 0 0 !important;
            box-shadow: 48px 42px 0 #ffffff, -48px 42px 0 #ffffff; // 重点
            user-select: none;

            &::before{
                content: '';
                position: absolute;
                left: -12px;
                bottom: 0;
                width: 24px;
                height: 66px;
                border-top-left-radius: 24px;
                background-color: #ffffff;
                transform: skewX(-15deg); // 重点
            }
            &::after{
                content: '';
                position: absolute;
                right: -12px;
                bottom: 0;
                width: 24px;
                height: 66px;
                border-top-right-radius: 24px;
                background-color: #ffffff;
                transform: skewX(15deg); // 重点
            }
        }
    }
相关推荐
用户0595401744616 分钟前
把 Redis 持久化测试从 800 行 Shell 换成 30 行 pytest,排错效率翻了 10 倍
前端·css
GISer_Jing21 分钟前
AI全栈工程师知识体系全景:从前后端核心架构到落地项目全拆解
前端·人工智能·后端·ai编程
Wect26 分钟前
深度剖析浏览器跨域问题
前端·面试·浏览器
陈随易40 分钟前
bun将会支持Bun.image,你怎么看?
前端·后端·程序员
jingqingdai31 小时前
别用正则格式化 HTML!我用 DOM 遍历实现零风险本地格式化,老项目重构效率直接拉满
前端·重构·html
木斯佳1 小时前
前端八股文面经大全:腾讯前端实习二、三OC面(2026-04-27)·面经深度解析
前端·状态模式
Python私教1 小时前
如意Agent日志系统重构:从 print() 大海捞针到结构化可观测性栈
java·前端·重构
We་ct2 小时前
LeetCode 97. 交错字符串:动态规划详解
前端·算法·leetcode·typescript·动态规划
Chengbei112 小时前
轻量化 Web 安全日志分析神器 星川智盾日志威胁检测、地理溯源、MITRE ATT&CK 映射,支持 Windows/macOS/Linux
前端·人工智能·安全·web安全·macos·系统安全·安全架构