HTML、CSS学习笔记4(3D转换、动画)

news2024/11/17 13:23:31

目录

一、空间转换(3D转换)

 1.空间位移

语法:

 取值:(正负均可)

透视:

2.空间旋转

3.立体呈现

二、动画(animation)

1.动画的使用

先定义动画

 再调用定义好的动画

动画序列

2.动画常见属性

2.1复合写法​编辑

2.2了解拆分写法

2.3 逐帧动画(两针之间跳格转动)&补间动画(平滑转动) ​编辑

 2.4 案例:小人跑步

3.案例

3.1走马灯


一、空间转换(3D转换)

(素材:D:\前端基础\2023寒假web学习\题目\2移动web开发\学习包\素材(3)\素材)

  • 使用transform属性实现元素在空间的位移、旋转、缩放等效果
  • 空间:x、y、z轴,z轴位置与视线方向相同(正值指向自己)

 1.空间位移

语法:

transform: translate3d(x,y,z);
transform: translateX(值);
transform: translateY(值);
transform: translateZ(值);

x、y轴有变化,z轴并没有体现

 取值:(正负均可

  • 像素单位数值
  • 百分比

透视:

目标:使用perspective属性实现透视效果

 

 

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>透视效果</title>
  <style>
    body {
      /* perspective添加给父级 */
      perspective: 1000px;
    }

    .box {
      width: 200px;
      height: 200px;
      margin: 100px auto;
      background-color: pink;
      transition: all 0.5s;
    }

    .box:hover {
      /* 正值指向自己(变大),负值变小 */
      transform: translateZ(200px);
    }
   
  </style>
</head>

<body>
  <div class="box"></div>
</body>

</html>

2.空间旋转

 注:

  • 单位:deg
  • transform: rotateZ(360deg);与transform: rotate(360deg);效果相同

  • rotateX的时候可以保留透视属性(其父级)(perspective: 1000px;),没有的话图片旋转时会变扁 
  • rotateY(60deg)时,也要保留透视属性(其父级)(perspective: 1000px;),否则没有立体旋转效果,而是水平变扁

3.立体呈现

 案例:

 

 

 

 代码展示:

<!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;
        }
        
        .navs {
            position: relative;
            width: 300px;
            height: 40px;
            margin: 50px auto;
        }
        
        .navs li {

            float: left;
            width: 100px;
            height: 40px;
            line-height: 40px;
            transition: all .5s;
           
            transform-style: preserve-3d;

            /* 旋转:让大家在写代码的过程中看到立体盒子  */
            /* transform: rotateX(-20deg) rotateY(30deg); */
           
        }

        .navs li a {         
            position: absolute;
           top: 0;
           left: 0;
            display: block;
            width: 100%;
            height: 100%;
            text-align: center;
            text-decoration: none;
            color: #fff;
        }
        
        .navs li a:first-child {
            background-color: green;
            transform: translateZ(20px);
           
        }
        
        .navs li a:last-child {
            background-color: orange;
            transform: rotateX(90deg) translateZ(20px);
           }

           .navs li:hover {
            transform: rotateX(-90deg);
           }
       
    </style>
</head>

<body>
    <div class="navs">
        <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)

(D:\前端基础\2023寒假web学习\题目\2移动web开发\学习包\素材(4)\素材)

动画是CSS3中最具颠覆性的特征之一,可通过设置多个节点来精确的控制一个或者一组动画,从而实现复杂的动画效果。

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

1.动画的使用

注:@keyframes写在style中,不需包括在某个元素里面,而调用动画的animation写在想要实现动画的相应那个元素里面

  • 先定义动画

多个状态变化:((百分比指的是动画总时长的占比)(一般不需在意)

/*1. 定义动画*/
@keyframes 动画名称 {
    0% {
        width: 100px;
    }

    10% {}

    15% {}

    100% {
        width: 200px;
    }
}

两个状态变化 (从XX到XX)

@keyframes 动画名称 {
    from {}
    to {}
}
  •  再调用定义好的动画

div {
    animation: 动画名称 动画花费时长;
}

动画序列

  • 0% 是动画的开始,100 % 是动画的完成,这样的规则就是动画序列

  • 在 @keyframs中规定某项 CSS 样式,就由创建当前样式逐渐改为新样式的动画效果

  • 动画是使元素从一个样式逐渐变化为另一个样式的效果,可以改变任意多的样式任意多的次数

  • 用百分比来规定变化发生的时间,或用 fromto,等同于 0% 和 100%

2.动画常见属性

2.1复合写法

animation: change 1s steps(3) 2s infinite  alternate

 注:

速度曲线:(速度变化是加速/减速/匀速)——linear表示匀速,steps(3)分步动画,将动画分成三等份去执行

延迟时间:控制动画的先后出场顺序 2s

重复次数:1. 3(表示重复3次) 2. 无限循环:infinite

动画方向alternate(带有反向动画效果)

执行完毕时状态(两种状态):1.backwards(默认值):让动画停留在最开始的状态; 2.forwards:让动画停留在最终的状态; (要将重复次数和动画方向注释掉,否则没有效果)

2.2了解拆分写法

 注:

  • 动画名称和时长必须有(无论是拆分还是复合),否则没有动画效果;

建议:使用复合属性(方便),注意拆分的暂停动画

2.3 逐帧动画(两针之间跳格转动)&补间动画(平滑转动)

 

 

 2.4 案例:小人跑步

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>精灵动画</title>
  <style>
    .box {
      /* 1.准备显示区域 */
      /* 1680px/12 (总宽度1680px 12个小人): 保证显示区域的尺寸和一个精灵小图的尺寸相同 */
      width: 140px;
      height: 140px;
      /* border: 1px solid #000; */
      background-image: url(./images/bg.png);

      /* 3.使用动画 */
      animation: move 1s steps(12) infinite;
    }
      /* 2.定义动画 */
      @keyframes move {
        from {
          background-position: 0 0;
        }
        to {
          background-position: -1680px 0;
          /* 正的1680往右走 */
        }
      

    }
  </style>
</head>

<body>
  <div class="box"></div>
</body>

</html>

思考:

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>精灵动画</title>
  <style>
    .box {
      position: absolute;
      left: 0;
      width: 140px;
      height: 140px;
      background-image: url(./images/bg.png);

      /* 净零小图个数 */
      animation:
        move 1s steps(12) infinite ,
        /* 注意:多个动画名称之间用逗号隔开 */
        run 1s forwards;
    }

    @keyframes move {
      from {
        background-position: 0 0;
      }

      to {
        /* 1680:精灵图的宽度 */
        background-position: -1680px 0;
      }
    }


    /* 思考:想让小人跑远一些 */
    /* 定义一个盒子移动的动画 800px */
    @keyframes run {
      /* 动画的开始状态和盒子的默认样式相同的,可以省略开始状态的代码 */
      /* from {
        transform: translateX(0);
      } */

      to {
        transform: translateX(800px);
      }
    }
  </style>
</head>

<body>
  <div class="box"></div>
</body>

</html>

3.案例

3.1走马灯

(D:\前端基础\2023寒假web学习\题目\2移动web开发\学习包\2.2.11作业\作业\走马灯)

3.1.1 分析

(方框的长度是3张图的长度)共7张图,但每张图片从左到右自动移动,无法判断哪张图是第一张图,同时每张图无空白移动(即紧密挨着),但是第5张图移动出时,第七张图旁边是空白,所以设置10张图,8、9、10图是原来的1、2、3图。

 3.1.2 代码展示

<!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>
      * {
        padding: 0;
        margin: 0;
      }
      li {
        list-style: none;
      }

      img {
        width: 200px;
      }
      
      .box {
        width: 600px;
        height: 112px;
        border: 5px solid #000;
        margin: 100px auto;

        overflow: hidden;
      }

      .box ul {
        width: 2000px;
        animation: move 10s infinite linear;
        /* linear表示匀速 */
      }

      .box li {
        float: left;
      }
     
      /* 定义动画:位移,ul 向左侧移动  -1400 */

      @keyframes move {
        to {
          transform: translateX(-1400px);
        }
      }

      /* 用户鼠标移入box,动画暂停 */
      .box:hover ul {
        animation-play-state: paused;
      }


    </style>
  </head>
  <body>
    <div class="box">
      <ul>
        <li><img src="./images/1.jpg" alt="" /></li>
        <li><img src="./images/2.jpg" alt="" /></li>
        <li><img src="./images/3.jpg" alt="" /></li>
        <li><img src="./images/4.jpg" alt="" /></li>
        <li><img src="./images/5.jpg" alt="" /></li>
        <li><img src="./images/6.jpg" alt="" /></li>
        <li><img src="./images/7.jpg" alt="" /></li>

        <li><img src="./images/1.jpg" alt="" /></li>
        <li><img src="./images/2.jpg" alt="" /></li>
        <li><img src="./images/3.jpg" alt="" /></li>
       </ul>
    </div>
  </body>
</html>

 

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

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

相关文章

YSYY科研试剂DSPE-PEG-Cholesterol;磷脂聚乙二醇胆固醇简介;DSPE-PEG-胆固醇

二硬脂酰磷脂酰乙酰胺-聚乙二醇-胆固醇,DSPE-PEG-CLS&#xff0c;DSPE-PEG-Cholesterol 结构式&#xff1a; 中文名称&#xff1a;二硬脂酰磷脂酰乙酰胺-聚乙二醇-胆固醇英文名称&#xff1a;1,2-distearoyl-sn-glycero-3-phosphoethanolamine-N-[ Cholesterol(polyethylene g…

消息队列介绍和RabbitMQ的安装

1.消息队列 1.1 MQ的相关概念 1.1.1 什么是MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是message 而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在…

视频营销活动中7个常见的错误

如今&#xff0c;越来越多的企业在社交媒体平台上开展视频营销活动。与其他传统营销策略不同&#xff0c;视频营销可以为企业带来更多的销售机会。随着越来越多的视频社交媒体平台的出现&#xff0c;营销人员更应该抓住这个机会。但在开始视频创作之前&#xff0c;您需要有一个…

一次查询的全过程

一次查询的全过程&#xff1a; 比方说我这里有一个订单系统&#xff0c;一条查询请求发送过来&#xff0c;它内部是怎么执行的呢&#xff1f; 用户发送请求到业务系统&#xff0c;就会有一条线程来处理这个请求该线程会在数据库连接池里面获取一个JDBC连接MySQL工作线程会监听数…

从零开始的python基础教程(3)

十、Popular Python Packages 1、What are APIs Application Programming Interface 2、Search for Business 3、Hiding API Keys so now when we push our codes to Github repository, our config file will not be there 十一、使用Dyjango构建Web应用程序 1、Your Firs…

九年时间,倾情投入,JumpServer开源堡垒机v3.0正式发布

2023年2月27日&#xff0c;JumpServer开源堡垒机正式发布v3.0版本。在JumpServer开源堡垒机v3.0版本的设计过程中&#xff0c;我们始终秉持着“内外兼修”的原则&#xff0c;旨在进一步提升用户的使用体验&#xff0c;真正用心做好一款开源堡垒机。 在JumpServer v3.0版本中&…

回溯算法(BackTracking)

在许多情况下&#xff0c;回溯算法相当于穷举搜索的巧妙实现。回溯算法的一个具体例子是在新房子里摆放家具&#xff0c;开始什么也不摆放&#xff0c;然后每件家具被摆放在房间的某个位置&#xff0c;如果所有的家具都被摆放得令户主满意&#xff0c;那么算法终止&#xff1b;…

SpringMVC——响应处理(1)【包含源码分析】

Controller public class JsonReturnController {ResponseBodyGetMapping("/getPet")public Pet getPet(){Pet petnew Pet();pet.setAge(5);pet.setName("lily");return pet;} }项目启动后 浏览器输入 http://localhost:8080/getPet 。 debug DispatcherS…

十、vben框架如何使用table来写报表

在项目开发的过程中&#xff0c;有很多特殊的table样式&#xff0c;有的时候后端会用帆软来写报表&#xff0c;但是有的特殊的报表后端就不能支持实现了&#xff0c;那么前端是如何实现的呢&#xff0c;今天我们就来讲讲。 先上效果图&#xff1a; 本次使用的tsx组件来写的报表…

csapp第一章 --- 计算机系统漫游

重要内容大纲 1.1 C程序实现过程 一个由用户编写的“hello world”源代码到可以在屏幕上看见可执行文件经过一下过程&#xff1a; C语言翻译的阶段介绍 1.预处理cpp&#xff1a;头文件展开、宏定义替换 将 .c 文件&#xff08;源程序&#xff09;变成 .i 文件&#xff08;修改…

一文搞懂如何在 React 中使用 防抖(Debounce)和 节流(Throttle)

在前端的日常开发中&#xff0c;经常会使用到两个函数防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;&#xff0c;防抖函数可以有效控制在一段时间内只执行最后一次请求&#xff0c;例如搜索框输入时&#xff0c;只在输入完成后才进行请求接口。…

linux环境下打包c++的Qt应用程序装载vtk和itk

文章目录一、QT安装安装前准备1.1 方法一 源码编译安装(实践缺少xcb依赖)&#xff1a;1.2 方法二 run文件安装&#xff1a;二、迁移windows下qt应用到linux三、VTK安装3.1 安装ccmake 和 VTK 的依赖项3.2 linux下VTK库下载安装四、QT应用基础上引入VTK依赖五、ITK安装六、QT应用…

sikuli+eclipse对于安卓app自动化测试的应用

Sikuli是什么&#xff1f; 下面是来自于官网的介绍&#xff1a;Sikuli is a visual technology to automate and test graphical user interfaces (GUI) using images (screenshots). Sikuli includes Sikuli Script, a visual scripting API for Jython, and Sikuli IDE, an …

入门Java第十五天 线程

一、多线程 1.1进程和线程 进程&#xff1a;进程就是操作系统中运行的每一个应用程序。例如&#xff1a;微信&#xff0c;QQ 线程&#xff1a;线程是进程中的每一个任务。 多线程&#xff1a;在一个进程中&#xff0c;可以同时执行多个线程。同时完成多个任务。 并发&#x…

投票的链接怎么做出来的网上那些投票链接怎么做的网上投票器

用户在使用微信投票的时候&#xff0c;需要功能齐全&#xff0c;又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便&#xff0c;用户可以随时使用手机微信小程序获得线上投票服务&#xff0c;很多用户都很喜欢“活动星投票”这款软件。“活动星投票”小程序在使…

【踩坑记录】使用OpenCV报错“ undefined symbol: TIFFReadRGBATileExt, version LIBTIFF_4.0”

问题描述 例如&#xff1a;使用OpenCV报错&#xff0c;找不到相关动态库&#xff1a; ImportError: /lib/libgdal.so.26: undefined symbol: TIFFReadRGBATileExt, version LIBTIFF_4.0解决方案&#xff1a; 运行前&#xff0c;先执行或者在./bashrc &#xff08;根目录下ctr…

【图像分类】卷积神经网络之ZFNet网络模型结构详解

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 1. 前言 由于AlexNet的提出,大型卷积网络开始变得流行起来,但是人们对于网络究竟为什么能表现的这么好,以及怎…

Python编写GUI界面案例:实现免费下载器

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 本次网站&#xff1a; 本文所有模块\环境\源码\教程皆可点击文章下方名片获取此处跳转 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 模块使用&#xff1a; import parsel >>> pip install parsel…

从0开始学python -41

Python3 命名空间和作用域 命名空间 先看看官方文档的一段话&#xff1a; A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries。 命名空间(Namespace)是从名称到对象的映射&#xff0c;大部分的命名空间都是…

蓝牙耳机适合跑步戴吗,五款适合跑步蓝牙耳机推荐

音乐是坚持运动下去的不懈动力&#xff0c;在运动当中佩戴蓝牙耳机&#xff0c;能够让我们远离枯燥无味&#xff0c;运动更有律动感&#xff0c;运动更为畅快。运动当中佩戴的蓝牙耳机&#xff0c;佩戴舒适度以及牢固度是我们十分需要注意的&#xff0c;下面这几款比较热门的运…