【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); // 重点
            }
        }
    }
相关推荐
少年姜太公3 小时前
什么?还不知道git cherry pick?
前端·javascript·git
白兰地空瓶5 小时前
🏒 前端 AI 应用实战:用 Vue3 + Coze,把宠物一键变成冰球运动员!
前端·vue.js·coze
Liu.7746 小时前
vue3使用vue3-print-nb打印
前端·javascript·vue.js
松涛和鸣7 小时前
Linux Makefile : From Basic Syntax to Multi-File Project Compilation
linux·运维·服务器·前端·windows·哈希算法
dly_blog7 小时前
Vue 逻辑复用的多种方案对比!
前端·javascript·vue.js
万少7 小时前
HarmonyOS6 接入分享,原来也是三分钟的事情
前端·harmonyos
烛阴7 小时前
C# 正则表达式:量词与锚点——从“.*”到精确匹配
前端·正则表达式·c#
wyzqhhhh8 小时前
京东啊啊啊啊啊
开发语言·前端·javascript
JIngJaneIL8 小时前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
想学后端的前端工程师8 小时前
【Java集合框架深度解析:从入门到精通-后端技术栈】
前端·javascript·vue.js