HTML5学习笔记(6.0)

文章介绍了CSS3中的逐帧动画和3D变换技术,包括设置动画步骤、3D平移、3D旋转和3D缩放的概念及应用。通过具体的代码示例,展示了如何创建3D立方体旋转动画,并提到了使用`transform-style:preserve-3d`和`perspective`属性来实现景深效果。此外,还提及了CSS的网格布局`display:grid`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逐帧动画

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(行内块级网格)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mez_Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值