前端web入门-移动web-day09

news2024/12/23 20:51:20

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

空间转换

空间转换 – 平移 

视距 perspective 

空间 – 旋转 

立体呈现 – transform-style 

空间转换 – 缩放

 案例-3D导航 

动画 

动画 - animation

animation属性

案例-逐帧动画 

动画 – 多组动画


空间转换

空间:是从坐标轴角度定义的 X 、Y 和 Z 三条坐标轴构成了一个立体空间,Z 轴位置与视线方向相同。
空间转换也叫 3D转换
属性:transform

空间转换 – 平移 

取值(正负均可)
        像素单位数值
        百分比(参照盒子自身尺寸计算结果)
提示
        默认情况下,Z 轴平移没有效果 

 

视距 perspective 

作用:指定了观察者与 Z=0 平面的距离,为元素添加透视效果
透视效果:近大远小、近实远虚
属性: (添加给父级,取值范围 800-1200)

perspective: 视距;

空间 – 旋转 

transform: rotateZ(值);
transform: rotateX(值);
transform: rotateY(值);

左手法则 – 根据旋转方向确定取值正负
左手握住旋转轴, 拇指指向正值方向, 其他四个手指弯曲方向为旋转正值方向

拓展
rotate3d(x, y, z, 角度度数) :用来设置自定义旋转轴的位置及旋转的角度
 x,y,z 取值为0-1之间的数字

立体呈现 – transform-style 

作用:设置元素的子元素是位于 3D 空间中还是平面
属性名:transform-style
属性值:
flat:子级处于平面中
preserve-3d:子级处于 3D 空间

呈现立体图形步骤
1. 父元素添加transform-style: preserve-3d;
2. 子级定位
3. 调整子盒子的位置(位移或旋转)
提示
空间内,转换元素都有自已独立的坐标轴,互不干扰

空间转换 – 缩放

属性

transform: scale3d(x, y, z);
transform: scaleX();
transform: scaleY();
transform: scaleZ();

 案例-3D导航 

 

<!-- 
    案例 – 3D 导航
    1. 搭建立方体
        • 绿色是立方体的前面
        • 橙色是立方体的上面
    2. 添加鼠标悬停的旋转效果
 -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3D导航</title>
    <style>
        ul 
        {
            margin: 0;
            padding: 0;
            list-style: none;
        }     
        .nav 
        {
            width: 300px;
            height: 40px;
            margin: 50px auto;
        }
        .nav ul
        {
            display: flex;
        }
        .nav li 
        {
            position: relative;
            width: 100px;
            height: 40px;
            line-height: 40px;
            transition: all .5s;
            transform-style: preserve-3d;
        }
        .nav li a
        {
            position: absolute;
            left: 0;
            top: 0;
            display: block;
            width: 100%;
            height: 100%;
            text-align: center;
            text-decoration: none;
            color: #fff;
        }
        .nav li a:first-child 
        {
            background-color: green;
            transform: translateZ(20px);
        }
        .nav li a:last-child 
        {
            background-color: orange;
            transform: rotateX(90deg) translateZ(20px);
        }
        .nav li:hover
        {
            transform: rotateX(-90deg);
        }
    </style>
</head>

<body>
    <div class="nav">
        <ul>
            <li>
                <a href="#">首页</a>
                <a href="#">Index</a>
            </li>
            <li>
                <a href="#">登录</a>
                <a href="#">Login</a>
            </li>
            <li>
                <a href="#">注册</a>
                <a href="#">Register</a>
            </li>
        </ul>
    </div>
</body>

</html>

动画 

动画 - animation

过渡:实现两个状态间的变化过程
动画:实现多个状态间的变化过程,动画过程可控(重复播放、最终画面、是否暂停)

实现步骤
1. 定义动画


2. 使用动画

<!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>动画实现步骤</title>
    <style>
      .box {
        width: 200px;
        height: 100px;
        background-color: pink;
        animation: change 1s;
      }

      /* 动画一:宽度从200变化到800 */
      @keyframes change
      {
        from
        {
          width: 200px;
        }
        to
        {
          width: 800px;
        }
      }
      /* 动画二:从 200*100 变化到 300*300 变化到800*500 */
      @keyframes change
      {
        0%
        {
          width: 200px;
          height: 100px;
        }
        20%
        {
          width: 300px;
          height: 300px;
        }
        100%
        {
          width: 800px;
          height: 500px;
        }
      }
    </style>
  </head>
  <body>
    <div class="box"></div>
  </body>
</html>

animation属性

提示:
动画名称和动画时长必须赋值
取值不分先后顺序
如果有两个时间值,第一个时间表示动画时长,第二个时间表示延迟时间 

案例-逐帧动画 

核心原理:
1. steps() 逐帧动画
2. CSS 精灵图(http://t.csdn.cn/tvSjm)

精灵动画制作步骤
1. 准备显示区域
        盒子尺寸与一张精灵小图尺寸相同
2. 定义动画
        移动背景图(移动距离 = 精灵图宽度)
3. 使用动画
        steps(N),N 与精灵小图个数相同

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div
        {
            width: 140px;
            height: 140px;
            background-image: url(./images/bg.png);
            animation: run 1s steps(12) infinite;
        }
        @keyframes run
        {
            from
            {
                background-position: 0 0;
            }
            to
            {
                background-position: -1680px 0;
            }
        }
    </style>
</head>
<body>
    <div></div>
</body>
</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>
    <style>
        div
        {
            width: 140px;
            height: 140px;
            background-image: url(./images/bg.png);
            animation: 
            run 1s steps(12) infinite,
            move 3s forwards
            ;
        }
        @keyframes run
        {
            from
            {
                background-position: 0 0;
            }
            to
            {
                background-position: -1680px 0;
            }
        }
        @keyframes move 
        {
            0%
            {
                transform: translate(0);
            }
            100%
            {
                transform: translate(800px);
            }
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker学习笔记16

在生产环境中使用Docker&#xff0c;往往需要对数据进行持久化&#xff0c;或者需要在多个容器之间进行数据共享。 容器管理数据有两种方式&#xff1a; 1&#xff09;数据卷&#xff1a;容器内数据直接映射到本地主机环境&#xff1b; 2&#xff09;数据卷容器&#xff1a;…

服务器远程管理工具Xshell安装及使用,传输文件工具安装及使用

两个软件 Xshell 双击输入用户名和密码 也可以通过密钥的方式 怎么生成密钥还没做过 Xftp 一边主机一边服务器&#xff0c;相互拖动就行了

【C#】并行编程实战:实现数据并行(3)

本章继续学习实现数据并行&#xff0c;本文主要介绍取消循环。 本教程对应学习工程&#xff1a;魔术师Dix / HandsOnParallelProgramming GitCode 4、取消循环 在顺序循环中&#xff0c;可以使用 break 来跳出循环&#xff0c;而在并行循环的情况下&#xff0c;由于他…

Unity协程

unity提供了一种类似“多段代码并行执行”的功能&#xff0c;即协程。 我们在定义一个协程的时候&#xff0c;需要遵循类似这样的语法 IEnumerator&#xff08;枚举器接口&#xff09; namespace System.Collections {public interface IEnumerator{object Current { get; }/…

卷积神经网络--猫狗系列【VGG16】

数据集&#xff1a;【文末】 ​ 数据集预处理 定义读取数据辅助类&#xff08;继承torch.utils.data.Dataset&#xff09; import osimport PILimport torchimport torchvisionimport matplotlib.pyplot as pltimport torch.utils.dataimport PIL.Image # 数据集路径train_p…

哈希桶的增删查改简单实现

个人简单笔记。 目录 闭散列 开散列 插入 删除 查找 改变 什么是哈希桶呢&#xff1f;这是一个解决哈希数据结构的一种解决方法&#xff0c;在STL中的unorder_map与unorder_set的底层结构就是使用它来实现的。 闭散列 首先我们知道&#xff0c;哈希映射表是依据数组下…

CSS画特殊边框

例如如图所示边框 .card-middle {width: 672px;height: 486px;border: 1px solid #5fadec;border-radius: 5px;position: relative; }.card-middle::before {content: ;position: absolute;top: -4px;left: -4px;width: 680px;height: 448px;border: 25px solid transparent;b…

【Python】PIL.Image转QPixmap后运行异常的个人解决方法

问题场景&#xff1a; PIL.Image图片&#xff0c;直接调用PIL.Image.toqpixmap()转成QPixmap后&#xff0c;不会立即报错&#xff0c;   但后续使用该QPixmap时(包括但不仅限于使用QLabel.setPximap()、QPixmap.save())将立即出现异常 不知道是我关键词不对&#xff0c;还是只…

【数据结构与算法】文学语言助手(C\C++)

实践要求 1. 问题描述 文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。试写一个实现这一目标的文字统计系统&#xff0c;称为"文学研究助手"。 2. 基本要求 英文小说存于文本文件中。待统计的词汇集合要一次输入完毕&#xff0c;即统计工作必需在…

linux常用命令介绍 06 篇——Linux查看目录层级结构以及创建不同情况的层级目录

linux常用命令介绍 06 篇——Linux查看目录层级结构以及创建不同情况的层级目录 1. 前言1.1 Linux常用命令其他篇1.2 关于tree简介 2. 安装并使用 tree2.1 安装tree2.1.1 方式1&#xff1a;yum安装2.1.2 方式2&#xff1a;下载安装包安装2.1.2.1 下载安装包2.1.2.2 解压安装2.1…

transformer入坑指南

*免责声明: 1\此方法仅提供参考 2\搬了其他博主的操作方法,以贴上路径. 3* 场景一: Attention is all you need 场景二: VIT 场景三: Swin v1 场景四: Swin v2 场景五: SETR 场景六: TransUNet 场景七: SegFormer 场景八: PVT 场景九: Segmeter … 场景一:Attention…

Spring Boot 中的 Spring Cloud Ribbon:什么是它,原理及如何使用

Spring Boot 中的 Spring Cloud Ribbon&#xff1a;什么是它&#xff0c;原理及如何使用 在分布式系统中&#xff0c;服务之间的通信是非常重要的。在大型的分布式系统中&#xff0c;有许多服务需要相互通信&#xff0c;而这些服务可能会部署在多个服务器上。为了实现服务之间…

超详细Redis入门教程——Redis分布式系统

前言 本文小新为大家带来 Redis分布式系统 相关知识&#xff0c;具体内容包括数据分区算法&#xff08;包括&#xff1a;顺序分区&#xff0c;哈希分区&#xff09;&#xff0c;系统搭建与运行&#xff08;包括&#xff1a;系统搭建&#xff0c;系统启动与关闭&#xff09;&…

把 OpenGrok search 上的Android 开源代码扒下来

1、下载工具 wget &#xff08;window10版本&#xff09;以及配置环境变量 工具我会上传到本篇博客的“代码包”区域&#xff0c;可以自行下载&#xff01; 当然如果可以访问如下链接的话&#xff0c;也可以在这个地址自行下载一个比较新的版本即可&#xff01;GNU Wget 1.21.…

Web服务器群集:LVS+Keepalived高可用群集

目录 一、理论 1.Keepalived 2.VRRP协议&#xff08;虚拟路由冗余协议&#xff09; 3.部署LVSKeepalived 高可用群集 二、实验 1.LVSKeepalived 高可用群集 三、问题 1.备服务器网卡启动报错 四、总结 一、理论 1.Keepalived &#xff08;1&#xff09;简介 Keepal…

【动态规划算法】-第一题:1137.第N个斐波那契数

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 &#x1f389;作者宣言&#xff1a;认真写好每一篇博客 &#x1f38a;作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点 点 关 注 吧&#xff01; 文章目录 前言 前言 各位友友们&#xff0c…

element之el-table合并列功能

目标效果如下&#xff1a; 实现代码如下&#xff1a; html部分&#xff1a; <!--定义表格组件,用组件自带的span-method属性定义合并列的方法--> <el-table :data"tableData" :span-method"spanRow"><el-table-column prop"RegionNa…

在proteus中仿真arduino驱动点阵屏matrix-led

我们都知道&#xff0c;如果我们仅仅在某个时间段点亮一个数码管是没有任何困难的&#xff0c;但如果我们点亮多个数码管就会出现问题&#xff0c;因为多个数码管都使用着同样的端口来控制数码管的各个段的亮灭。所以&#xff0c;就会用上一个很重要的方法&#xff0c;对&#…

使用javaScript脚本生成openFoam网格

简介 OpenFoam的首选网格生成器是blockMesh。blockMesh可以根据blockMeshDict这个字典中的信息生成openFoam网格。但是有时候需要修改网格&#xff0c;而网格中的几何点之间又存在约束关系&#xff0c;如果手动修改blockMeshDict那么工作量将是巨大的&#xff0c;所以有必要使…

有没有免费提取音频的软件,分享几个给大家!

在日常生活中&#xff0c;我们经常遇到需要从视频中提取音频的情况&#xff0c;无论是为了制作音频片段、录制语音笔记还是进行后期编辑。本文将介绍三种免费提取音频的方法&#xff0c;分别是记灵在线工具、PR&#xff08;Adobe Premiere Pro&#xff09;和剪映。通过这些方法…