CSS3动画-程序员宅基地

技术标签:   前端  html  javascript  

动画(animation)是CSS3中具有颠覆性的特征之一,可通过多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果。

相比较过渡,动画可以实现更多变化,更多控制,连续自动播放等效果。

1.动画的基本使用

制作动画分为两步:

1.先定义动画

2.再使用(调用)动画

1.用keyframes定义动画(类似定义类选择器)

 

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>动画animation</title>
    <style>
        /* 我们想页面一打开,一个盒子就从左边走到右边 */
        /* 1.定义动画 */
        @keyframes move {
            /* 开始状态 */
            0% {
                transform: translateX(0px);
            }
            /* 结束状态 */
            100% {
                transform: translateX(1000px);
            }
        }
        div {
            width: 200px;
            height: 200px;
            background-color: pink;
            /* 2.调用动画 */
            /* 动画名称 */
            animation-name: move;
            /* 持续时间 */
            animation-duration: 2s;
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

动画序列  

<!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>
        /* 动画序列 */
        /* 1.可以做多个状态的变化  keyframe 关键帧 */
        /* 2.里面的百分比是整数 */
        /* 3.里面的百分比就是总的时间的划分 */
        @keyframes move {
            /* 0%的内容可以不写,也可以直接不写0% */
           0% {

           }
           25% {
               transform: translate(1000px, 0);
           }
           50% {
               transform: translate(1000px, 200px);
           }
           75% {
               transform: translate(0px, 200px);
           }
           100% {
               transform: translate(0, 0);
           }
        }
        div {
            width: 200px;
            height: 200px;
            background-color: pink;
            /* 2.调用动画 */
            /* 动画名称 */
            animation-name: move;
            /* 持续时间 */
            animation-duration: 10s;
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

动画常用属性 

 速度曲线细节

animation-timing-function: 规定动画的速度曲线,默认是“ease”

 

<!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>
       div{
           font-size: 20px;
           width: 0;
           height: 30px;
           background-color: pink;
           /* steps就是分几步来完成我们的动画 有了steps就不用再写ease或者linear了 */
           animation: move 4s steps(10) forwards;
       }
       @keyframes move{
           0% {
               width: 0;
           }
           100% {
               width: 200px;
           }
       }
    </style>
</head>
<body>
    <div></div>
</body>
</html>
<!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>CSS3动画常用属性</title>
    <style>
        @keyframes move {
           0% {
                transform: translate(0, 0);
           }
           100% {
               transform: translate(1000px, 0);
           }
        }
        div {
            width: 100px;
            height: 100px;
            background-color: pink;
            /* 动画名称 */
            animation-name: move;
            /* 持续时间 */
            animation-duration: 5s;
            /* 运动曲线 */
            animation-timing-function: ease;
            /* 何时开始 */
            animation-delay: 1s;
            /* 重复次数 iteration 重复的   count 次数  infinite无限 */
            /* animation-iteration-count: infinite; */
            /* 是否反方向播放  默认normal  想反方向就写alternate*/
            /* animation-direction: alternate; */
            /* 动画结束后状态默认backwards  回到起始状态 我们可以让他停留在结束状态forwards */
            animation-fill-mode: forwards;
        }
        div:hover {
            /* 鼠标经过div 让这个div 停止动画, 鼠标离开就继续动画 */
            animation-play-state: paused;
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

动画简写属性

animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束的状态;

· 简写属性里面不包含animation-play-state

· 暂停动画:animation-play-state: paused;  经常和鼠标经过等其他配合使用

· 想要动画走回去,而不是直接跳回来:animation-direction: alternate

· 盒子动画结束后,停在结束位置:animation-fill-mode: forwards

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xy_is_fhh/article/details/121539469

智能推荐

MySQL修改my.cnf配置不生效的解决方法_mysql 修改配置文件不生效-程序员宅基地

文章浏览阅读6.2k次,点赞2次,收藏3次。1,参数没有写到 [mysqld] 下面而是写到 配置文件的末尾处了,我今天犯的错就是这个2,没有重启3,没有退出当前会话4,修改派配置文件错误5,参数写错了,打脸6,修改了错误的配置文件这里只说了修改 my.cnf,并没有说清楚其绝对路径是哪个文件。也就是说,有可能修改的不是正确路径下的my.cnf文件。在MySQL中,是允许存在多个 my.cnf 配置文件的,有的能对整个系统环境产生影响,例如:/etc/my.cnf。有的则只能影响个别用户,例如:~/.my.cnf。M._mysql 修改配置文件不生效

SpringBoot扩展篇:Spring注入 @Autowired & @Resource_spring boot resource按类型注入-程序员宅基地

文章浏览阅读938次,点赞22次,收藏24次。Autowired注入是由AutowiredAnnotationBeanPostProcessor完成的。@Resource注入是由CommonAnnotationBeanPostProcessor完成的。由于两种方式代码重复率太高,原理基本一致,下面我们主要以AutowiredAnnotationBeanPostProcessor源码分析为主。AutowiredAnnotationBeanPostProcessor负责属性、方法的注入。_spring boot resource按类型注入

Qt5.9.4中利用QOpenGLWidget类进行opengl绘图_qt opgl绘制图片-程序员宅基地

文章浏览阅读3w次,点赞15次,收藏110次。首先打开Qt Creator,然后点击菜单 ,文件-&gt;新建文件和项目,如图所示:左边选择Application,右边选择Qt Widgets Application,点击Choose...,项目名称为myOpenGLShow,接着下一步,一直默认,到Details,如下:点击取消选中创建界面(G)。然后下一步,知道完成,程序显示的为mainwindow.cpp文件:接着是利用QOpenGLW..._qt opgl绘制图片

用JAVA重0开始刷数据结构与算法04--二维数组及滚动数组-程序员宅基地

文章浏览阅读66次。二维数组及滚动数组118. 杨辉三角难度简单给定一个非负整数 *numRows,*生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows = 1输出: [[1]]提示:1 <= numRows <= 30class Solution { //purpos

TCP 之 SYN_SENT状态-程序员宅基地

文章浏览阅读5.1w次,点赞13次,收藏37次。SYN_SENT是TCP连接的发起方第一次发给接受放的时候设置成的状态。可以通过netstat -ano查看其中 在"state" 中可能会有 SYN_SENT如果在"state"中出现大量的"SYN_SENT ",那么你很有可能中了蠕虫病毒.这类病毒为了感染别的计算机,它就要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现许多SYN_S..._syn_sent

什么叫编译时和运行时-程序员宅基地

文章浏览阅读1.4k次,点赞7次,收藏26次。以前经常听说编译时和运行时的概念.但没太搞明白具体代表啥意思.后面花了点时间研究了下.总算知道个大概意思了.编译时编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只是一般意义上这么说,实际上可能只是翻译成某个中间状态的语言.比如Java只有JVM识别的字节码,C#中只有CLR能识别的MSIL.另外还有啥链接器.汇编器.为了了便于理解我..._.net编译时和运行时

随便推点

【QT】Ubuntu 16如何使用qt creator加载或者创建ros工程_qt如何打开ros项目-程序员宅基地

文章浏览阅读2.8k次,点赞2次,收藏22次。背景:通过qt creator来编写,编译,运行ros程序包。ros程序包也可以带有界面。其工程是一个ros工程(不是.pro,而是cmakelist.txt),使用cmake编译方式。步骤:(1)安装QT(最新版本):见 https://blog.csdn.net/ipfpm/article/details/80698659(2)设置快捷方式:这一步将要修改Qt Creato..._qt如何打开ros项目

高并发 高负载 网站系统架构_priceline数据库架构-程序员宅基地

文章浏览阅读3k次。高并发 高负载 网站系统架构注:我看到这篇文章写的太好了,可以没法转到CSDN上我就COPY了,看到下面激烈的评论,我也一并COPY了。不过还是要谢谢哪位作者了。这样的文章很少。 转自:http://www.toplee.com/blog/71.html我在CERNET做过拨号接入平台的搭建,而后在Yahoo&3721从事过搜索引擎前端开发,_priceline数据库架构

异构计算 文章_异构计算系统的优点-程序员宅基地

文章浏览阅读5.3k次,点赞2次,收藏11次。从桌面到移动:异构计算翻天覆地的技术变革http://www.csdn.net/article/2014-07-10/2820610-heterogeneous-computing-in-mobile/1_异构计算系统的优点

数字图像 - 边缘检测原理 - Sobel, Laplace, Canny算子_为什么laplace可以检测出canny检测不出来的边缘-程序员宅基地

文章浏览阅读308次。https://www.jianshu.com/p/2334bee37de5 先来看张图,左边是原图,右边是边缘检测后的图,边缘检测就是检测出图像上的边缘信息,右图用白色的程度表示边缘的深浅。sobel.png边缘其实就是图像上灰度级变化很快的点的集合。如何计算出这些变化率很快的点?1.导数,连续函数上某点斜率,导数越大表示变化率越大,变化率越大的地方就越是“边缘”,但是..._为什么laplace可以检测出canny检测不出来的边缘

软件设计师c语言程序题,软考软件设计师:C语言代码规范问题(2)-程序员宅基地

文章浏览阅读88次。1.2数据和函数说明1.2.1数据说明次序应当规范化,使数据属性容易查找,也有利于测试、排错和维护。说明的先后次序应固定,应按逻辑功能排序,逻辑功能块内建议采用下列顺序:整型说明、实型说明、字符说明、逻辑量说明。1.2.2如果设计了一个复杂的数据结构,应当通过注释对其变量的含义、用途进行说明。1.2.3在函数的声明中使用异常声明。如:void f() throw(toobig, toosmall,..._软件设计师的c语言题目

有序双向链表的插入和删除节点_有序双向链表插入节点-程序员宅基地

文章浏览阅读453次。struct ListNode{ int val; ListNode *pre; ListNode *next; //ListNode(int _val):val(_val), next(nullptr), random(nullptr){}}void insert(ListNode* head,int v){ ListNode* node=new ListNode;//默..._有序双向链表插入节点