当前位置: 首页 > article >正文

3D导航案例

一、介绍

本节内容我们来讲解一下,3D导航案例,主要运用到了css3中的3D以及过渡效果,效果如下展示,那么我们开始来学习使用css3来制作一个3D导航效果吧!

二、思路解析

  • 制作四个面(前后上下)
    1.前后上下,左右部分可以不用添加,因为旋转时看不到(注意后续讲解代码时会添加左右部分) 
  • 将四个面通过定位放到一起
  • 开启3d空间,通过位移,旋转放置在相应的位置
  • 填写文字
  • 制作划入效果,再划入时让整体的盒子对于X轴进行旋转

三、代码分析

1.HTML 

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<link rel="stylesheet" href="./index.css">
</head>
<body>
	<div class="all">
		<!-- 大盒子,一共六个 -->
		<div class="box">
			<!-- 前面 -->
			<div class="item1">Home</div>
			<!-- 后面 -->
			<div class="item2">Home</div>
			<!-- 上面 -->
			<div class="item3">Home</div>
			<!-- 下面 -->
			<div class="item4">Home</div>
			<!-- 左面和右面(可以不做) -->
			<div class="item5"></div>
			<div class="item6"></div>
		</div>
		<div class="box">
			<div class="item1">Services</div>
			<div class="item2">Services</div>
			<div class="item3">Services</div>
			<div class="item4">Services</div>
			<div class="item5"></div>
			<div class="item6"></div>
		</div>
		<div class="box">
			<div class="item1">Produts</div>
			<div class="item2">Produts</div>
			<div class="item3">Produts</div>
			<div class="item4">Produts</div>
			<div class="item5"></div>
			<div class="item6"></div>
		</div>
		<div class="box">
			<div class="item1">Blog</div>
			<div class="item2">Blog</div>
			<div class="item3">Blog</div>
			<div class="item4">Blog</div>
			<div class="item5"></div>
			<div class="item6"></div>
		</div>
		<div class="box">
			<div class="item1">Contact</div>
			<div class="item2">Contact</div>
			<div class="item3">Contact</div>
			<div class="item4">Contact</div>
			<div class="item5"></div>
			<div class="item6"></div>
		</div>
		<div class="box">
			<div class="item1">About Us</div>
			<div class="item2">About Us</div>
			<div class="item3">About Us</div>
			<div class="item4">About Us</div>
			<div class="item5"></div>
			<div class="item6"></div>
		</div>
	</div>
</body>
</html>

 2.CSS

.all{
/*	给最外层盒子设置宽高*/
	width: 540px;
	height: 30px;
/*	让其溢出隐藏*/
	overflow: hidden;
/*	设置flex弹性布局,让盒子水平排开*/
	display: flex;
	justify-content: space-between;
/*	设置水平居中显示*/
	margin: 100px auto;
/*	开启3D空间*/
	transform-style:preserve-3d ;
}
.box{
/*	设置包着四个面的父盒子宽,高由子元素撑开*/
	width: 80px;
/*	设置定位父相子绝,这里是父级相对定位*/
	position: relative;
	/*	开启3D空间*/
	transform-style:preserve-3d ;
/*	设置过度时间*/
	transition: all .3s;
}
.item1,.item2,.item3,.item4{
/*	设置四个面的宽高,因为属性相同所以使用并集选择器设置*/
	width: 80px;
	height: 30px;
/*	设置背景颜色*/
	background: rgb(48, 172, 164);
/*	让文字水平居中*/
	text-align: center;
/*	设置行高与高相同,让盒子垂直居中*/
	line-height: 30px;
/*设置定位,子绝,子级绝对定位	*/
	position: absolute;
/*	相对于父级的位置*/
	top: 0;
	left: 0;
}
/*左右两边的盒子,可以不加*/
.item6,.item5{
	width: 30px;
	height: 30px;
	background: rgb(48, 172, 164);
	position: absolute;
	top: 0;
	left: 0;
}
/*让第一个子级对于z轴向前移动15像素*/
.item1{
	transform: translateZ(15px);
}
/*让第二个子级对于z轴后前移动15像素*/
.item2{
	transform: translateZ(-15px);
}
/*让第三个子级对于Y轴向上移动15像素,并且旋转90度,这样就盖到前后两个盒子上*/
.item3{
	transform: translateY(-15px) rotateX(90deg);
}
/*让第四个子级对于Y轴向下移动15像素,并且旋转90度,这样就盖到前后两个盒子下*/
.item4{
	transform: translateY(15px) rotateX(-90deg);
/*	设置他的背景色为一个渐变色*/
	background: linear-gradient(to bottom,rgb(48, 172, 164),rgb(38, 109, 104));
}
/*设置左右两个盒子,对于X轴进行移动,旋转90度,放置再左右两侧*/
.item5{
	transform: translateX(-15px) rotateY(90deg);
}
.item6{
	transform: translateX(15px) rotateY(90deg);
}
/*设置盒子划入效果,划入让父级盒子旋转90度*/
.box:hover{
	transform: rotateX(90deg);
}

运行结果如下

 

四、结束语

那么本节3D导航案例就结束了,不要忘记点赞加关注哦~


http://www.kler.cn/a/411802.html

相关文章:

  • 【WEB开发.js】getElementById :通过元素id属性获取HTML元素
  • go-carbon v2.5.0 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
  • webrtc支持h265
  • 基于springboot的县市级土地使用监控系统的设计与实现
  • PYTORCH基础语法知识
  • Python绘制太极八卦
  • 钉钉与企业微信机器人:助力网站定时任务高效实现
  • RTMP协议
  • 基于matlab的电力系统潮流计算
  • js中this的指向问题
  • 代码随想录算法训练营第五十八天|Day58 图论
  • JavaScript的运算符与Python的对比
  • leetcode hot100【LeetCode 215.数组中的第K个最大元素】java实现
  • 【AI技术赋能有限元分析应用实践】FEniCS 安装在Ubuntu路径实现python调用
  • leetcode.3206 交替组Ⅰ
  • Spring Bean初始化流程
  • linux安装mysql8.0.40
  • Mairadb 最大连接数、当前连接数 查询
  • 【Git原理与使用】多人协作
  • 通过指令导入/导出vscode扩展插件
  • 【数据结构】C语言实现---栈
  • ChatGPT 4.0:如何提高学术论文的发表成功率
  • MATLAB深度学习(六)——LSTM长短期神经网络原理与应用
  • 华为ENSP--BGP路由协议实验详解
  • 网络安全期末复习
  • docker启动kafka、zookeeper、kafdrop