Css—实现3D导航栏

一、背景

        最近在其他的网页中看到了一个很有趣的3d效果,这个效果就是使用css3中的3D转换实现的,所以今天的内容就是3D的导航栏效果。那么话不多说,直接开始主要内容的讲解。

二、效果展示

 三、思路解析

1、首先我们需要将这个导航使用一个大的盒子包裹,方便管理整体;

2、每一块的效果都是独立的,所以需要单独设置其效果;

3、这个效果是当鼠标悬浮的时候,会向上翻动,鼠标离开自动弹回

基本的思路已经介绍完了,那么接下来就开始代码的实现和解析。

四、 代码总览

1、html部分

<div class="box">
      <ul class="box_nav">
        <li>
          <div class="nav_front">Home</div>
          <div class="nav_top">Home</div>
        </li>
        <li>
          <div class="nav_front">Services</div>
          <div class="nav_top">Services</div>
        </li>
        <li>
          <div class="nav_front">Products</div>
          <div class="nav_top">Products</div>
        </li>
        <li>
          <div class="nav_front">Blog</div>
          <div class="nav_top">Blog</div>
        </li>
        <li>
          <div class="nav_front">Contact</div>
          <div class="nav_top">Contact</div>
        </li>
        <li>
          <div class="nav_front">About Us</div>
          <div class="nav_top">About Us</div>
        </li>
      </ul>
    </div>

        首先我们就来介绍一下我的实现思路,先从结构说起,通过上边的效果展示不难看出,这里一定是有两个面的,或者说是至少需要两个面才可以实现这个效果,在这里我选择了使用无序列表来充当最外层的大盒子,来实现3d的效果,然后每个li就是一个独立的个体,在li中包裹了两个div来实现两个平面,这样基本的结构元素就齐全了。

那么接下来我们就需要想一下如何实现翻转的效果,第一步就需要将这两个盒子重叠起来,然后通过3d属性来设置他们的位置,目前先抛开动态效果不说,我们想来实现一下,解下来就来看一下css部分

 2、CSS部分

html,body{
  margin: 0;
  padding: 0;
}
.box{
  width: 100%;
  height: 100vh;
  background-color: #ccc;
  display: flex;
}
.box_nav{
  margin: auto;
  list-style: none;
  width: 770px;
  height: 35px;
  display: flex;
 
}
.box_nav>li{
  cursor: pointer;
  width: 120px;
  height: 35px;
  line-height: 35px;
  margin: 0px 5px;
  text-align: center;
  transition: all .5s;
  position: relative;
  transform-style: preserve-3d;
  
}
.nav_front{
  width: 120px;
  height: 35px;
  background-color: rgb(48, 172, 164);
  transform: translateZ(17.5px);
  font-size: 14px;
}
.nav_top{
  width: 120px;
  height: 35px;
  background: linear-gradient(to top , #256b65,#38b0a8);
  position: absolute;
  top: 0px;
  left: 0px;
  transform: translateY(17.5px) rotateX(-90deg);
  font-size: 14px;
}
.box_nav>li:hover{
  transform: rotateX(90deg);
}

首先我们先来处理一下之后可能会影响我们布局的内外边距,处理之后我们就来实现,这里我们使用到了flex布局,将li横向排列,实现基本的布局,然后我们需要将nav_front和nav_top设置固定的合适的宽高,注意:这里不必和我设置的一样,我只实现基本的效果

至于将两个面重叠起来,我们就需要使用到定位属性,来将两个面实现分层处理,这个时候我们就可以轻松的发现,我们只需要将在下面的那个盒子旋转为与我们桌子平行的样子就就可以了,注意,这里需要使用translateY()来移动那个面,移动到下边,来充当悬浮后翻起的那个面,这样就可以实现基本的布局。那么说到这里我们现在就差动态的效果了。

        动态效果就全靠这条属性的定义了

.box_nav>li:hover{
  transform: rotateX(90deg);
}

 语义就是,以x轴作为旋转轴将整个li进行旋转90度,这样就可以实现效果了,当然只设置这个就会很僵硬,所以我们呢需要配合过渡属性来缓和效果,这样就实现了基础了3d导航栏的效果。

五、结语

        今天的分享就到这里了,如果您觉得这篇文章还不错,请点赞、分享给更多的朋友吧!同时,也欢迎关注我的博客,获取更多精彩内容。

本人刚刚组件了社区,大家社区中后续会持续更新一些其他的内容,大家可以加入一下。

https://bbs.csdn.net/forums/fe46c651de82465696aeabef266b0476?joinKey=xndsi3pgxkw2-wn5z0y463k-1-446fd82212de589eead88d47f7b7dabbicon-default.png?t=O83Ahttps://bbs.csdn.net/forums/fe46c651de82465696aeabef266b0476?joinKey=xndsi3pgxkw2-wn5z0y463k-1-446fd82212de589eead88d47f7b7dabb

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

书生大模型实战营第四期-入门岛-4. maas课程任务

书生大模型实战营第四期-入门岛-4. maas课程任务 任务一、模型下载 任务内容 使用Hugging Face平台、魔搭社区平台&#xff08;可选&#xff09;和魔乐社区平台&#xff08;可选&#xff09;下载文档中提到的模型&#xff08;至少需要下载config.json文件、model.safetensor…

服务器密码错误被锁定怎么解决?

当服务器密码错误多次导致账号被锁定时&#xff0c;解决方法需要根据服务器的操作系统&#xff08;如 Linux 或 Windows &#xff09;和具体服务器环境来处理。以下是常见的解决办法&#xff1a; 一、Linux 服务器被锁定的解决方法 1. 使用其他用户账号登录 如果有其他未被…

初识ProtoBuf以及环境搭建(Win和Ubuntu)

初始ProtoBuf 序列化和反序列化的概念 序列化&#xff1a;把对象转换为字节序列的过程 称为对象的序列化。 反序列化&#xff1a;把字节序列恢复为对象的过程 称为对象的反序列化。 什么情况下需要序列化和反序列化&#xff1f; 存储数据&#xff1a;当你想把的内存中的对象状…

Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型)

Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型&#xff09; 目录 Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型&#xff09; 1. 项目说明 2. 数据说明 &#xff08;1&#xff09;心跳信号分类预测数据集 3. 模型训练 &#xff08;1&#xff09;项目安装 &…

【Nginx】核心概念与安装配置解释

文章目录 1. 概述2. 核心概念2.1.Http服务器2.2.反向代理2.3. 负载均衡 3. 安装与配置3.1.安装3.2.配置文件解释3.2.1.全局配置块3.2.2.HTTP 配置块3.2.3.Server 块3.2.4.Location 块3.2.5.upstream3.2.6. mine.type文件 3.3.多虚拟主机配置 4. 总结 1. 概述 Nginx是我们常用的…

循环神经网络:从基础到应用的深度解析

&#x1f35b;循环神经网络&#xff08;RNN&#xff09;概述 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一种能够处理时序数据或序列数据的深度学习模型。不同于传统的前馈神经网络&#xff0c;RNN具有内存单元&#xff0c;能够捕捉序列中前后信息…

使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost)

使用vcpkg自动链接tinyxml2时莫名链接其他库&#xff08;例如boost&#xff09; vcpkg的自动链接功能非常方便&#xff0c;但在某些情况下会出现过度链接的问题。 链接错误症状 以tinyxml2为例&#xff0c;程序中调用tinyxml2的函数后&#xff0c;若vcpkg中同时存在opencv和…

鸿蒙开发-HMS Kit能力集(应用内支付、推送服务)

1 应用内支付 开发步骤 步骤一&#xff1a;判断当前登录的华为账号所在服务地是否支持应用内支付 在使用应用内支付之前&#xff0c;您的应用需要向IAP Kit发送queryEnvironmentStatus请求&#xff0c;以此判断用户当前登录的华为帐号所在的服务地是否在IAP Kit支持结算的国…

IDEA敲Web前端快捷键

1.html基础格式 英文符号TAB键 <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, mini…

字符串算法题

目录 题目一——14. 最长公共前缀 - 力扣&#xff08;LeetCode&#xff09; 1.1.两两比较 1.2.统一比较 题目二——5. 最长回文子串 - 力扣&#xff08;LeetCode&#xff09; 2.1.中心拓展算法 题目三——67. 二进制求和 - 力扣&#xff08;LeetCode&#xff09; 题目…

嵌入式Linux - UBoot学习篇

目录 使用tftp上传我们的zImage 在Ubuntu上安装TFTP 把我们的网线连接到Ubuntu上 mmc指令 基本命令 2. 重新扫描和分区管理 3. 硬件分区 4. 启动配置 5. 复位功能和 DSR 配置 关键警告与注意事项&#xff1a; 常见用途&#xff1a; mmc info mmc rescan mmc list …

Ubuntu 20.04 Server版连接Wifi

前言 有时候没有网线口插网线或者摆放电脑位置不够时&#xff0c;需要用Wifi联网。以下记录Wifi联网过程。 环境&#xff1a;Ubuntu 20.04 Server版&#xff0c;无UI界面 以下操作均为root用户&#xff0c;如果是普通用户&#xff0c;请切换到root用户&#xff0c;或者在需要权…

亚马逊自研大语言模型 Olympus 即将亮相,或将在 LLM 竞赛中掀起新波澜

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

采用片上光学相控阵的激光雷达

激光雷达基础知识 LIDAR 基于众所周知的 RADAR 原理雷达是20世纪初就存在的著名技术激光雷达使用光频率而不是无线电波 激光雷达和雷达 使用相控阵的激光雷达通过干涉来提高方向性 激光雷达的输出剖面是阵列因子和单天线远场的乘积。 N &#xff1a;天线数量 k &#xff1a;…

阿里云服务器(centos7.6)部署前后端分离项目(MAC环境)

Jdk17安装部署 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/ 选择自己需要的jdk版本进行下载。 通过mac终端scp命令上传下载好的jdk17到服务器的/usr/local目录下 scp -r Downloads/jdk-17.0.13_linux-x64_bin.tar.gz 用户名服务器ip地址:/us…

SQL优化与性能——数据库设计优化

数据库设计优化是提高数据库性能、确保数据一致性和支持业务增长的关键环节。无论是大型企业应用还是小型项目&#xff0c;合理的数据库设计都能够显著提升系统性能、减少冗余数据、优化查询响应时间&#xff0c;并降低维护成本。本章将深入探讨数据库设计中的几个关键技术要点…

41 基于单片机的小车行走加温湿度检测系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;采样DHT11温湿度传感器检测温湿度&#xff0c;滑动变阻器连接数码转换器模拟电量采集传感器&#xff0c; 电机采样L298N驱动&#xff0c;各项参数通过LCD1602显示&#x…

在VMware虚拟机上安装Kali Linux的详细教程(保姆级教程)

在VMware虚拟机上安装Kali Linux的详细教程 引言 Kali Linux是一个基于Debian的Linux发行版&#xff0c;专为渗透测试和安全审计而设计。它内置了数百种安全工具&#xff0c;广泛应用于网络安全领域。通过在VMware虚拟机上安装Kali Linux&#xff0c;您可以在不影响主操作系统…

30分钟学会正则表达式

正则表达式是对字符串操作的一种逻辑公式&#xff0c;就是用事先定义好的一些特定字符、及这些特定字符的组合&#xff0c;组成一个“规则字符串”&#xff0c;这个“规则字符串”用来表达对字符串的一种过滤逻辑。 作用 匹配 查看一个字符串是否符合正则表达式的语法 搜索 正…

spring-boot-maven-plugin 标红

情况&#xff1a;创建好 Spring Boot 项目后&#xff0c;pom.xml 文件中 spring-boot-maven-plugin 标红。 解决方案&#xff1a;加上 Spring Boot 的版本即可解决。