带有滑动菜单指示器的纯 CSS 导航选项卡

news2024/10/7 18:23:06

效果展示

在这里插入图片描述

CSS 知识点

  • filter 属性回顾

  • transition 属性回顾

  • 使用单选框实现导航菜单的思路

    单选框当点击完成后就会有一个:checked属性,可以利用这个属性来实现导航菜单底部滑动块的滑动动画和当前菜单项激活状态的管理。

整体页面结构

<div class="tabs">
  <!-- 单选 -->
  <input type="radio" id="home" name="tabsMenu" />
  <input type="radio" id="profile" name="tabsMenu" />
  <input type="radio" id="likes" name="tabsMenu" />
  <input type="radio" id="settings" name="tabsMenu" />
  <input type="radio" id="notifications" name="tabsMenu" />

  <!-- 图标 -->
  <div class="buttons">
    <label for="home">
      <i class="fa-solid fa-house"></i>
    </label>
    <label for="profile">
      <i class="fa-solid fa-user"></i>
    </label>
    <label for="likes">
      <i class="fa-solid fa-heart"></i>
    </label>
    <label for="settings">
      <i class="fa-sharp fa-solid fa-gear"></i>
    </label>
    <label for="notifications">
      <i class="fa-solid fa-bell"></i>
    </label>
    <!-- 滑块 -->
    <div class="underline"></div>
  </div>
</div>

实现整体布局

.tabs input {
  visibility: hidden;
  display: none;
}

.buttons {
  position: relative;
  display: flex;
  gap: 80px;
  padding: 30px 40px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  background: #182d3c;
  overflow: hidden;
  border-radius: 20px;
}

编写菜单图标激活后的样式

.buttons label {
  width: 20%;
  font-size: 1.75em;
  -webkit-text-stroke: 1px #fff;
  color: transparent;
  cursor: pointer;
  transition: 0.5s;
}

.buttons label:hover {
  opacity: 1;
  filter: drop-shadow(0 0 10px #fff) drop-shadow(0 0 20px #fff);
}

/* 通过单选框激活状态,设置图标的激活状态 */
.tabs input:nth-child(1):checked ~ .buttons label:nth-child(1),
.tabs input:nth-child(2):checked ~ .buttons label:nth-child(2),
.tabs input:nth-child(3):checked ~ .buttons label:nth-child(3),
.tabs input:nth-child(4):checked ~ .buttons label:nth-child(4),
.tabs input:nth-child(5):checked ~ .buttons label:nth-child(5) {
  color: #fff;
  opacity: 1;
  filter: drop-shadow(0 0 10px #fff) drop-shadow(0 0 20px #fff);
}

实现菜单底部块的样式和移动样式

.underline {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 20%;
  height: 5px;
  /* 设置滑块的移动时间 */
  transition: 0.5s;
}

.underline::before {
  content: "";
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: 40px;
  height: 100%;
  background: #fff;
  filter: drop-shadow(0 0 10px #fff) drop-shadow(0 0 20px #fff) drop-shadow(
      0 0 30px #fff
    ) drop-shadow(0 0 50px #fff);
}

.underline::after {
  content: "";
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: 40px;
  height: 100%;
  background: #fff;
  filter: drop-shadow(0 0 10px #fff) drop-shadow(0 0 20px #fff) drop-shadow(
      0 0 30px #fff
    ) drop-shadow(0 0 50px #fff) blur(5px);
}

/* 通过单选框激活状态,设置滑块的移动距离 */
.tabs input:nth-child(1):checked ~ .buttons .underline {
  left: 0;
}

.tabs input:nth-child(2):checked ~ .buttons .underline {
  left: 20%;
}

.tabs input:nth-child(3):checked ~ .buttons .underline {
  left: 40%;
}

.tabs input:nth-child(4):checked ~ .buttons .underline {
  left: 60%;
}

.tabs input:nth-child(5):checked ~ .buttons .underline {
  left: 80%;
}

完整代码下载

完整代码下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1186688.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#创建Windows Service(Windows 服务)基础教程

Windows Service这一块并不复杂&#xff0c;但是注意事项太多了&#xff0c;网上资料也很凌乱&#xff0c;偶尔自己写也会丢三落四的。所以本文也就产生了&#xff0c;本文不会写复杂的东西&#xff0c;完全以基础应用的需求来写&#xff0c;所以不会对Windows Service写很深入…

springboot内容协商

1.基于请求头 Accept: application/json Accept: application/xml Accept: application/xxx 自定义数据 发的请求头的数据类型 期望返回的数据类型 2.通过请求参数 例如 /football?formatjson 一般respondbody 默认以json方式进行返回 如何请求同一个接口&#xff0c;可以…

四川芸鹰蓬飞:抖音短视频运营是做什么的?

抖音短视频作为一种新兴的社交媒体平台&#xff0c;它的运营团队肩负着将用户需求与平台资源相结合&#xff0c;促使平台发展壮大的重要任务。抖音短视频运营旨在通过精准的用户分析和有针对性的内容推送&#xff0c;提高用户留存和活跃度&#xff0c;增加广告收入&#xff0c;…

idea使用git删除本地提交(未推送)

1、找到reset head 2、打开弹窗&#xff0c;在HEAD后面输入^ 结果为HEAD^ 注释&#xff1a; Reset Type 有三种&#xff1a; Mixed&#xff08;默认方式&#xff09;&#xff0c;保留本地源码&#xff0c;回退 commit 和 index 信息&#xff0c;最常用的方式Soft 回退到某个版本…

黑色星期五推广策略:TikTok海外网红营销加速品牌增长

在数字化时代&#xff0c;TikTok已经成为了一个具有巨大潜力的社交媒体平台&#xff0c;它不仅让用户分享短视频&#xff0c;还为品牌提供了一个独特的宣传渠道。尤其是在黑色星期五这个全球购物盛宴的时刻&#xff0c;品牌有机会通过TikTok网红营销来提升销售额。本文Nox聚星将…

搭建 Makefile+OpenOCD+CMSIS-DAP+Vscode arm-none-eabi-gcc 工程模板

STM32F407-GCC-Template Arm-none-eabi-gcc MakefileOpenOCDCMSIS-DAPVscode工程模板 一、本次环境搭建所用的软硬件 1&#xff09;Windows or Linux (本文以Windows为主) 2&#xff09;JLink、Daplink、Wch-Link烧录器 3&#xff09;GNU Arm Embedded Toolchain交叉编译…

Apache Storm 2.5.0 集群安装与配置

1、下载Apache Storm 2.5.0 https://mirrors.tuna.tsinghua.edu.cn/apache/storm/apache-storm-2.5.0/ 2、准备3台服务器 192.168.42.139 node1 192.168.42.140 node1 192.168.42.141 node2 3、配置host [rootnode1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost…

前端缓存机制——强缓存、弱缓存、启发式缓存

强缓存和弱缓存的主要区别是主要区别在于缓存头携带的信息不同。 强缓存&#xff1a; 浏览器发起请求&#xff0c;查询浏览器的本地缓存&#xff0c;如果找到资源&#xff0c;则直接在浏览器中使用该资源。若是未找到&#xff0c;或者资源已过期&#xff0c;则浏览器缓存返回未…

jva智能bi(自助式商业分析)可视化大屏新增功能

jvs智能bi更新说明 新增: 1.数据集定时任务新增前置后置任务功能&#xff1b; 前置后置任务功能允许用户为数据集定时任务添加前置任务和后置任务。前置任务是在主任务执行之前运行的任务&#xff0c;而后置任务是在主任务执行之后运行的任务。通过这种方式&#xff0c;用户…

学习笔记|Pearson皮尔逊相关系数|Spearman斯皮尔曼相关系数|和Kendall肯德尔tau-b相关系数|分析流程|-SPSS中双变量相关性分析系数

目录 学习目的软件版本原始文档基础概念皮尔逊相关系数基本假设&#xff08;适用条件&#xff09;&#xff1a;系数的范围及意义实例1. 读数据&#xff1a;2.正态性检验&#xff1a;3.异常值检验&#xff08;体重&#xff09;&#xff1a;4.分析&#xff1a; 斯皮尔曼相关系数基…

内网可达网段探测netspy- Mac环境

netspy是一款快速探测内网可达网段工具 当我们进入内网后想要扩大战果&#xff0c;那我们可能首先想知道当前主机能通哪些内网段。 netspy正是一款应用而生的小工具&#xff0c;体积较小&#xff0c;速度极快&#xff0c;支持跨平台&#xff0c;支持多种协议探测&#xff0c;…

STM32外部中断大问题

问题&#xff1a;一直进入中断&#xff0c;没有触发信号&#xff0c;也一直进入。 描述&#xff1a;开PA0为外部中断&#xff0c;刚刚很好&#xff0c;一个触发信号一个中断&#xff0c;中断函数没有丢&#xff0c;也没有抢跑&#xff0c;开PA1为外部中断也是&#xff0c;都很好…

基于CSP的运动想象 EEG 特征提取和可视化

基于运动想象的公开数据集&#xff1a;Data set IVa (BCI Competition III)1 数据描述参考前文&#xff1a;https://blog.csdn.net/qq_43811536/article/details/134224005?spm1001.2014.3001.5501 EEG 信号时频空域分析参考前文&#xff1a;https://blog.csdn.net/qq_4381153…

十月份 NFT 市场显示复苏迹象,等待进一步的积极发展

作者: stellafootprint.network 10 月份&#xff0c;比特币价格大幅飙升&#xff0c;NFT 市场出现了复苏迹象&#xff0c;月度交易量和用户数均增长了 15.2%。尽管 10 月份的数据相比 9 月份有所改善&#xff0c;但仍然不及 8 月份和之前几个月的水平。因此&#xff0c;现在断…

Cesium 笛卡尔坐标转换

Cesium中主要使用笛卡尔坐标系&#xff0c;球心相当于原点 z轴不是高度&#xff0c;高度是点到地表的距离&#xff0c;贴在表面高度就为0&#xff0c;z改变&#xff0c;x,y都会随之改变&#xff1b; 1.经纬度转笛卡尔 // (经度 纬度 高度)&#xff0c;返回的是一个笛卡尔坐标 c…

预约按摩app小程序开发搭建;

预约按摩app小程序开发搭建&#xff1b; 后端&#xff1a;系统后端使用PHP语言开发 前端&#xff1a;前端使用uniapp进行前后端分离开发&#xff0c;支持&#xff08;公中号、小程序、APP&#xff09;。 用户端功能模块&#xff1a;技师选择、预约服务、优惠券、订单、技师服…

事件绑定-回调函数

1.事件的概念 2.小程序常用的事件集 2.1 bindtap 点击回调事件方法 2.1.1语法格式 2.1.2 事件处理中调用data 使用setDatacount&#xff1a;这种方式 直接使用this.data.count 2.1.3 事件处理中传参 错误示范&#xff1a; 传递方式&#xff1a;数值用{{}}&#xff0c;直接引…

如何使用 GTX750 或 1050 显卡安装 CUDA11+

前言 由于兼容性问题&#xff0c;使得我们若想用较新版本的 PyTorch&#xff0c;通过 GPU 方式训练模型&#xff0c;也得更换较新版本得 CUDA 工具包。然而 CUDA 的版本又与电脑显卡的驱动程序版本关联&#xff0c;如果是低版本的显卡驱动程序安装 CUDA11 及以上肯定会失败。 比…

react之Component存在的2个问题

问题 只要执行setState()&#xff0c;即使不改变状态数据&#xff0c;组件也会重新render()只当前组件重新render()&#xff0c;就会自动重新render子组件 原因 Component中的shouldComponentUpdate()总是返回true 思路 只有当组件的state或props数据发生改变时才重新rend…

c++ 信奥赛编程 2050:【例5.20】字串包含

#include<iostream> #include<cstring> using namespace std; int main() {string str1,str2;int temp;cin>>str1>>str2;//判断长度 if(str1.size()<str2.size()){ swap(str1,str2); //交换内容 }str1str1str1; //AABCDAABCDAABCDAABCDif(str…