css梯形tab

server/2025/3/14 6:12:18/

效果:

代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Tab 示例</title><style>/* 定义 CSS 变量 */:root {--tab-width: 200px;--tab-height: 50px;--tab-radius: 10px;--tab-bg: #EFF6FF;--tab-active-bg: gold;--tab-corner-size: 10px;}/* 基础样式 */.box {padding: 50px 300px;text-align: center;display: flex;}/* Tab 通用样式 */.tab {width: var(--tab-width);height: var(--tab-height);background-color: var(--tab-bg);position: relative;border-radius: var(--tab-radius) var(--tab-radius) 0 0;transform-origin: center bottom;transform: perspective(10px) rotateX(10deg);cursor: pointer; /* 添加鼠标指针样式 */}/* Tab 伪元素样式 */.tab::before,.tab::after {content: "";position: absolute;bottom: 0;width: var(--tab-corner-size);height: var(--tab-corner-size);background: var(--tab-bg);}.tab::before {left: calc(-1 * var(--tab-corner-size));background: radial-gradient(circle at 0 0, transparent var(--tab-corner-size), var(--tab-bg) var(--tab-corner-size));}.tab::after {right: calc(-1 * var(--tab-corner-size));background: radial-gradient(circle at var(--tab-corner-size) 0, transparent var(--tab-corner-size), var(--tab-bg) var(--tab-corner-size));}/* 第二个 Tab 的特殊样式 */.tab2 {top: -26px;margin-left: -50px;transform: perspective(10px) rotateX(170deg);}/* 激活状态的 Tab 样式 */.active {background-color: var(--tab-active-bg);}.active::before {background: radial-gradient(circle at 0 0, transparent var(--tab-corner-size), var(--tab-active-bg) var(--tab-corner-size));}.active::after {background: radial-gradient(circle at var(--tab-corner-size) 0, transparent var(--tab-corner-size), var(--tab-active-bg) var(--tab-corner-size));}</style>
</head>
<body><div class="box"><div class="tab tab1 active"></div><div class="tab tab2"></div></div><script>const tabs = document.querySelectorAll(".tab");tabs.forEach((tab) => {tab.addEventListener("click", () => {tabs.forEach((t) => t.classList.remove("active"));tab.classList.add("active");});});</script>
</body>
</html>


http://www.ppmy.cn/server/174799.html

相关文章

linux系统忘记密码时修改密码的两种方法

下面记录一下 linux系统忘记密码时修改密码的两种方法。 第一种方法是&#xff1a;通过进入单用户模式修改 root密码 步骤如下&#xff1a; 1&#xff09;启动系统到 GRUB页面时&#xff0c;选择某个内核&#xff0c;并迅速按下 e键编辑启动选项&#xff1b; 2&#xff09;找到…

【Python】为什么要写__init__.py

文章目录 PackageA(__init__特性)应该往__init__.py里放什么东西&#xff1f;1、包的初始化2、管理包的公共接口3、包的信息 正常我们直接导入就可以执行&#xff0c;但是在package的时候&#xff0c;有一种__init__.py的特殊存在 引入moduleA.py&#xff0c;执行main.py&…

Linux安装系统后,无法查看ip

1.保证网络已连接&#xff0c;网络适配器中的网络连接选择自定义VMnet8(NAT模式) 2.进入/etc/sysconfig/network-scripts/ifcfg-ens33或者ifcfg-eht0&#xff0c;版本不同文件名可能不同 3.添加和修改文件内容&#xff08;红色部分&#xff09;&#xff0c;设置的ip最好设置成…

JVM中常量池和运行时常量池、字符串常量池三者之间的关系

文章目录 前言常量池&#xff08;Constant Pool&#xff09;运行时常量池&#xff08;Runtime Constant Pool&#xff09;字符串常量池&#xff08;String Literal Pool&#xff09;运行时常量池和字符串常量池位置变化方法区与永久代和元空间的关系三者之间的关系常量池与运行…

深度学习篇---Opencv中Haar级联分类器的自定义

文章目录 1. 准备工作1.1安装 OpenCV1.2准备数据集1.2.1正样本1.2.2负样本 2. 数据准备2.1 正样本的准备2.1.1步骤2.1.2生成正样本描述文件2.1.3示例命令2.1.4正样本描述文件格式 2.2 负样本的准备2.2.1步骤2.2.2负样本描述文件格式 3. 训练分类器3.1命令格式3.2参数说明 4. 训…

【农业大数据处理与应用】实验二 随机森林算法与LSTM循环神经网络

一、实验目的 1.掌握利用随机森林算法构建分类器模型的方法&#xff0c;并且了解如何准确评估随机森林模型分类器的性能&#xff0c;包括准确率、精确度、召回率和F1分数等指标的计算和解读&#xff0c;以便对模型的表现进行全面评价&#xff1b; 2.深入学习随机森林模型的参…

【Golang】第三弹----运算符

笔上得来终觉浅,绝知此事要躬行 &#x1f525; 个人主页&#xff1a;星云爱编程 &#x1f525; 所属专栏&#xff1a;Golang &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 一、运算符介绍 运算符是一…

【Aioredis实战总结】Aioredis简介

一、Aioredis简介 Aioredis 是一个基于Python asyncio框架的异步Redis客户端库&#xff0c;专为高并发场景设计。它允许开发者在不阻塞主线程的情况下执行Redis操作&#xff0c;显著提升I/O密集型任务&#xff08;如Web应用的缓存、实时消息队列等&#xff09;的性能。自4.2.0…