2021-09-07------5.5CSS3 3D变换

3D变换

  1. 3D transform-style属性,把transform-style属性的值设置为preserve-3d,这就意味着要做3D变换;transform-style:preserve-3d。
  2. 旋转 transform属性,主要旋转变换,旋转分为空间上的3个维度,将transform属性的取值分别设为这三种:rotateX()、rotateY()、rotateZ(),这样就可以分别沿着这三个轴来做3D的变换,取值为角度deg。
  3. 透视 perspective属性,将它的值设置为一个像素值,近大远小的效果,像素值越小表示离舞台越近,透视效果越明显。

transform属性的三个值:

(1)X轴:将transform属性的取值设为rotateX(),这是就是沿着水平方向的x轴变换,就是绕着水平x轴做一个旋转。
(2)Y轴:将transform属性的取值设为rotateY(),就是绕着垂直y轴做一个旋转。
(3)Z轴:将transform属性的取值设为rotateZ(),Z轴的方向就是垂直于水平面(也就是x轴和y轴)的方向,就是绕着z轴做一个旋转。
在这里插入图片描述
举个栗子:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>3D</title>
	<style> 
	#stage{
		width: 300px;
		margin: 100px auto;
		perspective:200px;
	}
	.box{
		width: 100px;
        height:100px;
        float:left; 
        transition:linear 1s;
        transform-style: preserve-3d;
	}
	img
	{
		width:100px;
		height:75px;
	}
	.x:hover
	{		
		transform:rotateX(60deg);
	}
	.y:hover
	{		
		transform:rotateY(60deg);
	}
	.z:hover
	{		
		transform:rotateZ(60deg);
	}
	</style>

</head>
<body>
<div id="stage">
	<div class="box x">
		<img src="2 3d 变换综合案例/images/4.jpg" />
	</div>
	<div class="box y">
		<img src="2 3d 变换综合案例/images/4.jpg" />
	</div>
	<div class="box z">
		<img src="2 3d 变换综合案例/images/4.jpg" />
	</div>
</div>
</body>
</html>

上面的代码的效果就是:当鼠标悬停在第一幅图片上的时候,图绕x轴旋转60度;当鼠标悬停在第二幅图片上的时候,图绕y轴旋转60度;当鼠标悬停在第三幅图片上的时候,图绕z轴旋转60度。

透视效果

无透视的效果
在这里插入图片描述
有透视效果
可以看见近大远小的效果
在这里插入图片描述

3D变换的嵌套结构

3D变换的时候,我们将变换的元素通常嵌套在其它的几层元素当中,这种嵌套的结构它的组成相对是固定的。
在这里插入图片描述
首先看到的内容就是要做旋转的元素,然后将内容包裹在一个容器当中,这是要做的第一层,称为内容的父容器;之后父容器或者是要要进行变换的内容可能有好几个,它们都相当于在舞台上表演,不管有多少个父容器或者里面嵌套多少个内容,在最外层要有一个表演的舞台,是最外层的容器,称为舞台;这就是嵌套结构
父容器的设置:设置旋转。内容的变换或是选择主要是通过它的父容器来完成的,所以它的父容器上设置了两个属性:
(1)transform-style:preserve-3d;表示要做3D变换
(2)transform:rotateY(60deg);表示在做一个什么样的变换
舞台的设置:设置透视关系。通过当前观众的视角,也就是距离舞台的距离来表示当前是否有透视关系,透视关系有多大。主要设置perspective属性
perspective:100px;相当于现在有一个观众他距离舞台有100px的距离;如果这个值设置的越大,透视关系越不明显,如果值越小,离舞台越近,看到的效果越明显。

posted @ 2022-10-08 01:20  昔痕  阅读(4)  评论(0编辑  收藏  举报