Web前端开发 - 4 - CSS3动画

CSS3动画

    • 一、 设计2D变换
    • 二、 设计3D变换
    • 三、 设计过渡动画
    • 四、设计帧动画

一、 设计2D变换

transform : none | <transform-function>
/* 
<transform-function> 设置变换函数,可以是一个或多个变换函数列表。函数包括:
martrix(x缩放,x倾斜,y倾斜,y缩放,x移动,y移动): 定义矩阵变换,即基于X和Y坐标重新定位元素的位置
translate(): 移动元素对象,即基于X和Y坐标重新定位元素
scale(): 缩放元素对象,可以使任意元素对象尺寸发生变化,取值包括正数和负数,以及小数
rotate(): 旋转元素对象,取值为一个度数值
skew(): 倾斜元素对象,取值为一个度数值

transform-origin : 两个参数,值为百分比、em、px等或者left/center/right/top/midden/bottom等
*/

在这里插入图片描述

二、 设计3D变换

/* 3D变换函数
3D位移:translateZ() | translate3d() 
3D旋转:rotaleX() | rotateY() | rotateZ() | rotate3d()
3D缩放:scaleZ() | scale3d()
3D矩阵:matrix3d()
*/

在这里插入图片描述
在这里插入图片描述

三、 设计过渡动画

/* transition
设置过渡属性transition-property : none | all
设置过渡时间transition-duration : <time>
设置延迟时间transition-delay : <time>
设置过渡动画类型transition-timing-function : 
· ease : 平滑过渡
· linear : 线性过渡
· ease-in : 由慢到快
· ease-out : 由快到慢
· ease-in-out : 由慢到快再到慢
· cubic-bezier : 特殊的立方贝塞尔曲线效果

设置触发方式:鼠标时间或状态定义动画,如CSS伪类和Javascript事件
- CSS动态伪类  :link | :visited | :hover | :active | :focus
- Javasctipt事件: click | focus | mousemove | mouseover | mouseout等
- CSS3媒体查询
*/

在这里插入图片描述

四、设计帧动画

/* animation 通过定义多个关键帧以及定义每个关键帧中元素的属性值来实现更为复杂的动画效果
设置关键帧 @keyframes
@keyframes animationname {
	keyframes-selector {
		css-styles;
	}
}

设置动画属性
定义动画名称animation-name : none | IDENT
定义动画时间animation-duration : <time>
定义动画类型animation-timing-function : ease | linear | ease-in | ease-out | ease-in-out | cubicbezier
定义延迟时间animation-delay : <time>
定义播放次数animation-iteration-count : infinite | <number>
定义播放方向animation-direction : normal | alternate(偶数次向前播放,奇数次向反方向播放)
定义播放状态animation-play-state : paused | running (Javsscript脚本中用法:object.style.animationPlayState="paused")
定义播放外状态animation-fill-mode : none | forwards | backwards | both
*/
<!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">
    <link rel="stylesheet" href="a.css">
    <title>Document</title>
</head>
<body>
    <div id="wrap">
        <div id="box"></div>
    </div>
</body>
</html>
#wrap {     /* 定义运动轨迹包含框   */
    position: relative;  /* 定义定位包含框,避免小盒子跑到外面运动 */
    border: solid 1px red;
    width: 250px;
    height: 250px;
}

#box {  /* 定义运动小盒的样式  */
    position: absolute;
    left: 0;
    top: 0;
    width: 50px;
    height: 50px;
    background: #9eb6e6;
    border-radius: 8px;
    box-shadow: 2px 2px 2px #999;
    /* 定义帧动画:动画名称为ball,动画时长5秒,动画类型为匀速渐变,动画无限播放 */
    animation: ball 5s linear infinite;
}

/* 定义关键帧:共包含5帧,分别总时长0%,25%,50%,75%,100%的位置 */
/* 每帧中设置动画属性为left和top,让它们的值匀速渐变,产生运动动画 */
@keyframes ball {
    0% {left: 0; top: 0;}
    25% {left: 200px; top: 0;}
    50% {left: 200px; top: 200px;}
    75% {left: 0; top: 200px;}
    100% {left: 0; top: 0;}
}

在这里插入图片描述

<div class="ball"></div>
/* 启动运动的小球,并定义动画结束后返回 */
.ball {
    width: 50px;
    height: 50px;
    background: #9eb6e6;
    border-radius: 100%;
    box-shadow: 2px 2px 2px #999;
    animation: ball 1s ease backwards;
}

/* 定义小球水平运动关键帧 */
@keyframes ball {
    0% {transform: translate(0,0);}
    100% {transform: translate(400px);}
}

在这里插入图片描述

  • 翻转广告
<!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">
    <link rel="stylesheet" href="a.css">
    <title>Document</title>
</head>
<body>
    <div class="wrapper">
        <div class="item">
            <img src="../images/1.jpg" alt="" width="345px" height="186px">
            <span class="information"><img src="../images/2.jpg" alt="" width="345px"  height="186px"></span>
        </div>
    </div>

</body>
</html>
/* 定义包含框样式 */
.wrapper {
    display: inline-block;
    width: 345px;
    height: 186px;
    margin: 1em auto;
    cursor: pointer;
    position: relative;
    /* 定义3D元素距视图的距离 */
    perspective: 4000px;
}

/* 定义旋转元素样式:3D动画,动画时间0.6秒 */
.item {
    height: 186px;
    transform-style: preserve-3d;
    transition: transform .6s;
}

/* 定义鼠标经过时触发动画,并定义旋转形式 */
.item:hover {
    transform: translateZ(-50px) rotateX(95deg);
}
.item:hover img {
    box-shadow: none;
    border-radius: 15px;
}
.item:hover .information {
    box-shadow: 0px 3px 8px rgba(0, 0, 0, 0.3);
    border-radius: 15px;
}

/* 定义广告图的动画形式和样式 */
.item>img {
    display: block;
    position: absolute;
    top: 0;
    border-radius: 3px;
    box-shadow: 0px 3px 8px rgba(0, 0, 0, 0.3);
    transform: translateZ(50px);
    transition: all .6s;
    /* 隐藏不可见页面 */
    backface-visibility: hidden;
}

/* 定义广告文字的动画形式和样式 */
.item .information {
    position: absolute;
    top: 0;
    height: 186px;
    width: 345px;
    border-radius: 15px;
    transform: rotateX(-90deg) translateZ(50px);
    transition: all .6s;
    /* 隐藏不可见页面 */
    backface-visibility: hidden;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

玩转Matlab-Simscape(初级)-01-从一个简单模型开始学习之旅

** 玩转Matlab-Simscape&#xff08;初级&#xff09;- 01 - 从一个简单模型开始学习之旅 ** 目录 玩转Matlab-Simscape&#xff08;初级&#xff09;- 01 - 从一个简单模型开始学习之旅 前言一、从模板开始建模二、建模一个简单的连杆2.1 建模2.2 生成子系统 总结 前言 在产…

如何在 Windows 11/10 中恢复已删除的分区

在将重要数据存储在计算机上之前&#xff0c;许多用户会创建分区以更好地组织和管理他们的文件。此分区可以在内部硬盘驱动器或外部存储设备上创建。但是&#xff0c;有时可能会意外删除分区。如果发生这种情况&#xff0c;您可能想知道是否可以在不丢失任何信息的情况下恢复已…

适用于 Windows 8/10/11 的 10 大 PC 迁移工具:电脑克隆迁移软件

当您发现自己拥有一台新的 PC 或笔记本电脑时&#xff0c;PC 迁移变得至关重要。将数据从旧计算机传输到新计算机的过程似乎令人生畏&#xff0c;尤其是如果您是第一次这样做。迁移过程中数据丢失的潜在风险加剧了焦虑。为确保文件和系统设置的无缝无忧传输&#xff0c;使用专为…

初识C语言——第二十天

do while ()循环 do 循环语句; while(表达式); 句式结构&#xff1a; 执行过程&#xff1a; do while循环的特点&#xff1a; 代码练习&#xff1a; 二分法算法&#xff1a; int main() {int arr[] { 0,1,2,3,4,5,6,7,8,9};int k 7;//查找数字7&#xff0c;在arr这个数组…

prompt工程策略(三:使用 LLM 防护围栏创建系统提示)

原文&#xff1a;我是如何赢得GPT-4提示工程大赛冠军的 原文的原文&#xff1a; How I Won Singapore’s GPT-4 Prompt Engineering Competition &#xff01;&#xff01;本内容仅适用于具有 System Prompt&#xff08;系统提示&#xff09;功能的 LLM。具有这一功能的最著名 …

Python sort() 和 sorted() 的区别应用实例详解

大家好&#xff0c;今天针对 Python 中 sort() 和 sorted() 之间的区别&#xff0c;来一个实例详细解读。sort — 顾名思义就是排序的意思&#xff0c;它可以接收的对象为可迭代的数据类型。今天以列表为例子演示两者的不同点、相同点&#xff0c;以及其中一些常用的高级参数使…

【3dmax笔记】022:文件合并、导入、导出

文章目录 一、合并二、导入三、导出四、注意事项一、合并 只能合并 max 文件(高版本能够合并低版本模型,低版本不能合并高版本的模型)。点击【文件】→【导入】→【合并】: 选择要合并的文件,后缀名为3dmax默认的格式,max文件。 二、导入 点击【文件】→【导入】→【导…

NSSCTF中的1zjs、作业管理系统、finalrce、websign、简单包含、Http pro max plus

目录 [LitCTF 2023]1zjs [LitCTF 2023]作业管理系统 [SWPUCTF 2021 新生赛]finalrce exec()函数&#xff1a;php中exec介绍及使用_php exec-CSDN博客​​​​​​ 资料参考&#xff1a;RCE(远程命令执行)绕过总结_rce绕过-CSDN博客 [UUCTF 2022 新生赛]websign [鹏城杯 …

【校园论坛系统】分站式后台,多城市圈子论坛,校园圈子交流平台,二手发布市场,校园圈子论坛系统

简述 校园论坛系统是为学生们提供一个交流、分享信息、互相帮助的平台。它通常包括了各种分类的版块&#xff0c;例如学习交流、社团活动、二手交易、失物招领等等。用户可以在论坛上发帖&#xff0c;回复他人的帖子&#xff0c;也可以私信其他用户。此外&#xff0c;管理员还…

只用了三天就入门了Vue3?

"真的我学Vue3&#xff0c;只是为了完成JAVA课设" 环境配置 使用Vue3要去先下载Node.js。 就像用Python离不开pip包管理器一样。 Node.js — Run JavaScript Everywhere (nodejs.org) 下完Node.js去学习怎么使用npm包管理器&#xff0c;放心你只需要学一些基础的…

【数据结构】数据结构大汇总 {数据结构的分类总结:定义和特性、实现方式、操作与复杂度、适用场景、相关算法、应用实例}

一、线性结构 1.1 顺序表 定义和特性&#xff1a;顺序表是一种线性表的存储结构&#xff0c;它采用一段地址连续的存储单元依次存储线性表中的元素。顺序表具有随机访问的特性&#xff0c;即可以通过元素的下标直接访问元素。 实现方式&#xff1a;顺序表可以通过数组来实现&…

React Native 之 原生组件和核心组件(二)

原生组件 在 Android 开发中是使用 Kotlin 或 Java 来编写视图&#xff1b;在 iOS 开发中是使用 Swift 或 Objective-C 来编写视图。在 React Native 中&#xff0c;则使用 React 组件通过 JavaScript 来调用这些视图。在运行时&#xff0c;React Native 为这些组件创建相应的 …

第1章 初始Spring Boot【仿牛客网社区论坛项目】

第1章 初始Spring Boot【仿牛客网社区论坛项目】 前言推荐项目总结第1章初识Spring Boot&#xff0c;开发社区首页1.课程介绍2.搭建开发环境3.Spring入门体验IOC容器体验Bean的生命周期体验配置类体验依赖注入体验三层架构 4.SpringMVC入门配置体验响应数据体验响应Get请求体验…

Java应用程序的本地内存跟踪分析

本文将讨论本机内存跟踪 (NMT)&#xff0c;我们可以使用它来隔离在 VM 级别增长的任何异常内存。 1.什么是本机内存&#xff1f; 本机内存是指计算机系统上运行的应用程序或程序可直接访问的内存空间。它是程序在执行期间存储和操作数据的内存区域。本机内存不同于托管内存&a…

实物仿真平台设计方案:927-8路GMSL视频注入回灌的自动驾驶半实物仿真平台

8路GMSL视频注入回灌的自动驾驶半实物仿真平台 一、平台介绍 产品基于8路GMSL视频注入回灌的自动驾驶半实物仿真平台旨在提高实验室及研究生院师生在基础软件层开发、计算机视觉和深度学习方面的专业知识学习和实践能力&#xff0c;为师生提供一个稳定软件开发和多精度框…

【C++】认识C++(上)

目录 从C到C命名空间同名冲突命名空间的定义命名空间的使用 C的输入和输出缺省参数&#xff08;默认参数&#xff09; 从C到C C语言的出现是计算机科学和工程史上的一个重要里程碑&#xff0c;许多现代计算机语言都受C语言的影响。C语言是面向过程的&#xff0c;结构化和模块化…

优选算法——双指针2

题目一——有效三角形的个数 思路 先审题 举个例子&#xff0c;下面一个序列可分成4个三元组 然后我们论证哪个可以组成三角形即可 判断三个数能不能组成三角形&#xff1a;任意两边之和大于第三边 注意第一个和第四个&#xff0c;有人说&#xff0c;这不是两个相同的吗&#…

【opencv】opencv透视变换和ocr识别实验

实验环境&#xff1a;anaconda、jupyter notebook 实验用到的包opencv、numpy、matplotlib、tesseract 一、opencv透视变换 原图 图片是我拍的耳机说明书&#xff0c;哈哈哈哈&#xff0c;你也可以使用自己拍的照片&#xff0c;最好是英文内容&#xff0c;tesseract默认识别英…

JVM运行时内存整体结构一览

文章目录 Java 虚拟机 (JVM) 运行时内存由程序计时器, 堆, 方法区, 本地方法栈, 虚拟机栈,构成 Java 虚拟机 (JVM) 运行时内存布局主要包括以下几个部分&#xff1a; 程序计数器 (Program Counter Register): 每个线程都有一个程序计数器&#xff0c;它是当前线程执行的字节码…

【js逆向】易车网JS逆向案例实战手把手教学(附完整代码)

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…