逐帧动画
animation:run 5s steps(1,end); //1表示两个关键帧的过渡是由一步来完成的
//end(保留当前帧,看不到最后一帧,看不到动画结束)
//start(保留下一帧,看不到第一帧,看不到动画开始)
step-start=steps(1,start)
step-end=steps(1,end)
Animate动画
下载到本地,使用时,使用以下代码:
<link rel="stylesheet" href="css/animate.min.css">
3D平移
<style>
transform-style:preserve-3d;
</style>
transform:translateZ(100px);
设置景深
perspactive:1200px; //在父元素中使用
transform:perspective(1200px); //在子元素中使用
transform:translateZ(100px);
transform:translate3d(0,0,200px); //等价写法
3D旋转
transform:rotateZ(30deg);
个人旋转总结:
当是rotateX时,若旋转角度为正,如图所示,为竖直方向的逆时针旋转。
当是rotateX时,若旋转角度为负,如图所示,为竖直方向的顺时针旋转。
当是rotateY时,若旋转角度为正,如图所示,为水平方向的逆时针旋转。
当是rotateY时,若旋转角度为负,如图所示,为水平方向的顺时针旋转。
当是rotateZ时,若旋转角度为正,如图所示,为视觉界面方向的顺时针旋转。
当是rotateZ时,若旋转角度为负,如图所示,为视觉界面方向的逆时针旋转。
3D缩放
transform-style:preserve-3d;
transform:scaleX(2);
scaleZ()在使用时必须加上景深
perspective:800px;
transform:scaleZ(2) rotateX(45deg);
三个轴的汇总写法为:transform : scale3d(1,1,10)
立方体实例
<!--
* @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
* @Date: 2023-03-08 16:52:06
* @LastEditors: Mei
* @LastEditTime: 2023-03-08 20:09:08
* @FilePath: \vscode\cubic.html
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.box{
width: 600px;
height: 600px;
margin: 0 auto;
border: 5px solid gray;
transform-style: preserve-3d;
position: relative;
transform: rotateX(20deg) rotateY(20deg);
animation: run 3s linear infinite;
}
@keyframes run{
0%{
transform: rotateY(30deg) rotateX(30deg);
}
50%{
transform: rotateY(300deg) rotateX(300deg);
}
100%{
transform: rotateY(30deg) rotateX(30deg);
}
}
.box div{
width: 200px;
height: 200px;
position: absolute;
left: 50%;
top:50%;
margin-left: -100px;
margin-top: -100px;
line-height: 200px;
text-align: center;
font-size: 50px;
color: white;
opacity: 0.7;
}
.box div:nth-child(1){
background: green;
transform: translateZ(100px);
}
.box div:nth-child(2){
background: rgb(56, 97, 56);
transform: translateX(-100px) rotateY(-90deg);
/* transform: translateX(-100px) */
}
.box div:nth-child(3){
background: rgb(152, 163, 65);
transform: translateY(-100px) rotateX(90deg)
}
.box div:nth-child(4){
background: rgb(122, 29, 122);
transform: translateY(100px) rotateX(-90deg)
}
.box div:nth-child(5){
background: rgb(138, 17, 55);
transform: translateX(100px) rotateY(90deg)
/* transform: translateX(100px) */
}
.box div:nth-child(6){
background: rgb(188, 125, 42);
transform: translateZ(-100px)
}
</style>
</head>
<body>
<div class="box">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</div>
</body>
</html>
网格布局
display:grid; //块级网格, inline-grid(行内块级网格)