CSS3动画基础学习

2023-11-06

放在前面的-----

    浏览器支持问题:

Internet Explorer 10、Firefox 以及 Opera 支持 @keyframes 规则和 animation 属性。

而Chrome 和 Safari 需要前缀 -webkit-。

CSS3中动画是什么-----

        动画是指从一种样式逐渐改变成另一种样式,可改变数次,改变多种样式,其中用百分比(0%至100%)或用关键词 ("from" 和 "to")来规定变化发生的时间。1.为了得到最佳的浏览器支持,我们应该始终定义 0% 和 100% 选择器。2.请使用动画属性来控制动画的外观,同时将动画与选择器绑定.

动画所需的属性------

接下来我们仔细看看这些属性------

1. @keyframes    (keyframes被称为关键帧)

语法为:@keyframes animationname {

keyframes-selector {css-styles;}

}

animationname位置:    需填写动画的名字,而keyframes-selector是用来设定动画时长的百分比,如果省略某个状态,浏览器会自动推算中间状态。但是,为了获得最佳的浏览器支持,应该始终定义0%和100%的选择器,另外,可以将多个状态写在一行,如下例所示:

@keyframes nice{
  0%,100% { background: #f00; }
  50% { background: #0f0; 
}

 

css-styles;位置:    指可填写一个或多个css样式属性,这些值都是必不可少的。注:其中的animationname需与之后介绍到的的animation属性中的animation-name部分填写一致。

 

**样例如下**:(测试;浏览器为谷歌,因此含-webkit-)

 @-webkit-keyframes nice {
            0%   {top:0px;left:0px;}
            25%  {top:0px;left:500px; width: 100px;background: darksalmon;}
            50%  {top:500px;width:150px;left:500px;background-color: blanchedalmond;}
            75%  {top:500px;width: 150px;left:0px;background: darksalmon;}
            100% {top:0px;width:100px;left:0px;background-color: blanchedalmond;}
        }

 

注意:    通过刚刚介绍的的 @keyframes 规则,我们能够创建动画,再通过在盒子里使用接下来说道的这些动画属性实现动画。

 

2. animation

语法为:animation  : name    duration    timing-function    delay    iteration-count    direction ;

其中,

1)name     规定需要绑定到选择器的 keyframe 名称。

2)duration     规定完成动画所花费的时间,以秒或毫秒计。一定要注意:它的默认值是 0,意味着没有动画效果,所以不能省略不写。

3)timing-function     规定动画的速度曲线,速度曲线定义动画从一套 CSS 样式变为另一套所用的时间,速度曲线可使变化更为平滑。其中可填值如下 :

 

描述
ease 动画以低速开始,然后加快,在结束前变慢(注:是默认值)
linear 动画从头到尾的速度是相同的
 ease-in 动画以低速开始
ease-out 动画以低速结束
ease-in-out 动画以低速开始和结束
cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中填入自己的值(从 0 到 1 )

    为了便于理解,这里配上一幅图

PS:cubic-bezier(n,n,n,n)中是用四个坐标来固定四个点的位置,来帮助绘制贝塞尔曲线(就是一条平滑的曲线啦-(*o*)-)这部分的详细内容请戳下方链接了解一下啦:

                                                            点击打开链接

4)delay     规定在动画开始之前的延迟。值以秒或毫秒计,表示多少秒或毫秒后动画开始播放,注意:负值是可以存在的,例如填入-2s后,-2s 使动画马上开始,但跳过 2 秒进入动画。如果还不太理解,可以戳下方看看负值的妙用吧:

                                                            点击打开链接

5)iteration-count     规定动画应该播放的次数。可填入的值有infinite(无限次循环)和任意数(包括小数,负数的效果和默认相同),注意:其属性的默认值是1,代表动画会从头到位执行1次。

6)direction     规定是否应该轮流反向播放动画。值可以填normal|alternate    normal为默认值,动画将正常播放, alternate会使动画在奇数次数(1、3、5 等等)正常播放,而在偶数次数(2、4、6 等等)向后播放。注意:如果把动画设置为只播放一次,则该属性没有效果。

多种样例如下:  

div {
  animation: changecolor 5s ease-out .2s;
}
div{
animation-name:myfirst;   
animation-duration:5s;   
animation-timing-function:linear;   
animation-delay:1s;   
animation-iteration-count:infinite;   
animation-direction:alternate;   
animation-play-state:running;
}

 

div{
animation:myfirst 5s linear 2s infinite alternate;   
animation-play-state:running;
}

 

 

PS:    以上这六个值也可单独做属性使用------前面加上  animation- 即可,以下便不在赘述这六个属性。

 

 

        另外,animation-iteration-count属性通常和值设置为alternate的animation-direction属性结合使用,这样可以使动画方向交替变换;  例如一个水平运动的小球,小球从起点运动到终点,然后从终点又运动会起点。、

        你可以为animation-iteration-count属性提供多个值,各个值之间使用逗号来分隔。如果你设置了多个值,这些值通常和animation属性相关的其它动画属性值一一对应;  例如,如果你为animation-iteration-count属性提供了2个值,那么第一个值将决定animation-name中第一个动画的运行次数,第二个值将决定animation-name中第二个动画的运行次数。       

3.animation-play-state

语法为: animation-play-state: paused|running;

分别是规定动画已暂停和正在播放

4.animation-fill-mode

语法为:animation-fill-mode : none | forwards | backwards | both;

该属性规定了动画在播放之前或之后,其动画效果是否可见。其中,

none                 指不改变默认行为。
forwards           指当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)。
backwards        指在 animation-delay 所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)。
both                 指向前和向后填充模式都被应用。

inherit              从父元素继承该属性

最后是一个完整样例:


    <!DOCTYPE html>  
    <html lang="en">  
    <head>  
        <meta charset="UTF-8">  
        <title>animation演示</title>  
        <style>    
        div   
        {   
        width:100px;   
        height:100px;   
        background:red;   
        position:relative;   
        animation-name:myfirst;   
        animation-duration:5s;   
        animation-timing-function:linear;   
        animation-delay:1s;   
        animation-iteration-count:infinite;   
        animation-direction:alternate;   
        animation-play-state:running;   
        /* Safari and Chrome: */   
        -webkit-animation-name:myfirst;   
        -webkit-animation-duration:5s;   
        -webkit-animation-timing-function:linear;   
        -webkit-animation-delay:1s;   
        -webkit-animation-iteration-count:infinite;   
        -webkit-animation-direction:alternate;   
        -webkit-animation-play-state:running;   
        }   
      
        @keyframes myfirst /*定义动画名*/   
        {   
        0%   {background:red; left:0px; top:0px;} /*定义起始帧样式,0%相当于from*/   
        25%  {background:yellow; left:200px; top:0px;}   
        50%  {background:blue; left:200px; top:200px;}   
        75%  {background:green; left:0px; top:200px;}   
        100% {background:red; left:0px; top:0px;} /*定义结束帧样式,100%相当于to*/   
        }   
      
        @-webkit-keyframes myfirst /* Safari and Chrome */   
        {   
        0%   {background:red; left:0px; top:0px;}   
        25%  {background:yellow; left:200px; top:0px;}   
        50%  {background:blue; left:200px; top:200px;}   
        75%  {background:green; left:0px; top:200px;}   
        100% {background:red; left:0px; top:0px;}   
        }   
        </style>  
    </head>  
    <body>  
        <p>该实例在 Internet Explorer 9 及更早 IE 版本是无效的。</p>  
        <div></div>  
    </body>  
    </html>  

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS3动画基础学习 的相关文章

  • Bootstrap 3 - 模态背景不会根据模态对话框的高度调整大小?

    我将一个表单放入模式中 并尝试在用户触发单选按钮时显示表单的一些隐藏字段 显示隐藏字段后 模态自动重新缩放的高度 但模态背景的高度不能用作模态对话框 我该如何解决它 div class modal fade div class modal
  • Firefox 和 Chrome 为 offsetTop 提供了不同的值

    我试图相对于输入字段定位一个跨度元素 让我们称之为 工具提示跨度 为此 我将工具提示跨度和输入字段包装在另一个跨度元素中 我们称之为 包装器跨度 该元素具有position relative 然后我设置position absolute在工
  • 没有宽度/高度的 SVG 以自然尺寸渲染

    我有这个 SVG 但没有width or height属性 我有以下 HTML div class block img src https s3 eu vAmfIxVv kiwi svg div 使用以下CSS block display
  • css border-shadow 是否会增加元素的大小[重复]

    这个问题在这里已经有答案了 可能的重复 css box shadow 是元素盒子模型的一部分吗 https stackoverflow com questions 7036498 is css box shadow part of elem
  • HTML5 安卓开发

    我对制作 Android 应用程序很感兴趣 而我的主要爱好是 Web 开发 现在让我困惑的是 人们用 HTML5 CSS3 JavaScript 语言制作应用程序 这些应用程序是在 Android 手机上的网络浏览器上运行还是像 Andro
  • CSS 中的图像路径支持 CDN

    我正在尝试将我们的图像部署到 CDN 目前 CSS 具有我们网站上图像的相对路径 这些路径需要支持 CDN 图像位置 有人对我如何做到这一点有建议吗 或者是否有人有关于部署到 CDN 的好教程 这就是我最终完成此任务的方式 我用SASS h
  • 图像上的文本和背景颜色叠加

    我正在尝试创建一个与图像大小完全匹配的纯色叠加层 并在该叠加层上显示文本 如果可能的话 我想仅使用 HTML 和 CSS 来完成此操作 图像可以是任何大小 并且将调整大小以适合其父容器并居中 像这样的东西 不起作用 HTML div cla
  • 如何使用溢出滚动设置 tbody 高度

    我在设置 tbody 高度宽度溢出滚动时遇到问题 h3 Table B h3 table style border 1px solid red width 300px display block thead tr td Name td td
  • Chrome 将 0 宽度的表格单元格显示为 1px

    在 Firefox 中 我相信是正确的 由于 width 0 看不到红色 div 但在 Chrome 中 它显示为具有 1px 宽度 这似乎是最新版本 Chrome 的问题 这把小提琴 http jsfiddle net bFZf4 显示问
  • 如何在 CSS 中使用 3 位颜色代码而不是 6 位颜色代码?

    我最近检查了我的 CSS 文件 并将所有六位十六进制代码转换为简单的三位数代码 例如 我的 FDFEFF被缩短为 FFF 它呈现的颜色与以前几乎完全相同 在我看来 中间部分相当无用 删除它们在我的 CSS 文件中节省了整整 300 个字节
  • 缩放对象上的弹跳动画

    拥有对象比例 然后在返回到原始比例因子之前以该比例因子执行弹跳动画的最佳方法是什么 我意识到我可以做一些事情 比如将其缩放到 2 2 然后 1 8 然后 2 0 但我正在寻找一种方法 您只需在比例因子上执行弹跳动画 因为我的比例因子会改变
  • 隐藏选择中的第一个选项[重复]

    这个问题在这里已经有答案了 我在下拉列表中有动态生成的选项 我想隐藏第一个选项 因为不需要 有没有跨浏览器兼容的方法来实现这一点 无论使用 jquery 还是 css 任何解决方案都是好的 Ahmar my drop down select
  • 如何设置 jQuery 可拖动的最小/最大左和最小/最大右

    我复制了一份JSbin来练习 JSbin链接在这里 https jsbin com gififikisa edit html css js output 实际站点链接在这里 http 79 170 40 181 emory com Proj
  • 为什么响应式图像需要“高度:自动”?

    是否有必要定义height auto现在 原因是什么 img max width 100 height auto Thanks 在没有明确设置高度尺寸的图像上 它实际上默认为自动高度 所以如果你设置max width 100 高度将由浏览器
  • 用于选择 querySelector 中当前元素的 CSS 伪选择器可用于同级 (+) 或一般同级 (~) 选择器? [复制]

    这个问题在这里已经有答案了 如果我有这个 HTML div class elem div class child div div div class sibling div 和JS let elem document querySelect
  • Django 1.7:如何使用 html/css 文件作为模板发送电子邮件

    从 Django 1 7 开始 可以send email 使用新参数 html message 不幸的是 没有关于如何使用它的全面指南 新手友好 或者至少我找不到它 我需要使发送的电子邮件变得漂亮 因此 我试图弄清楚如何将我的消息包含到 h
  • 当元素具有多个类时如何在 switch 语句中检查 className

    在下面的示例中 我只想单击该选项以在警报中显示 我正在尝试使用 switch 语句来确定单击了哪个类 如果我的 div 不包含多个类 则我的示例将有效 我尝试使用classList contains在我的 switch 语句中无济于事 有没
  • 如何在CSS中选择多个id?

    如何在 CSS 中选择多个 ID 例如 test id div div div div Use an 属性选择器 https developer mozilla org en docs Web CSS Attribute selectors
  • 如何将外部 div 的高度设置为始终等于特定内部 div 的高度?

    我有一个外部 div 其中包含三个内部 div 我希望最左边的内部 div 始终确定外部 div 的高度 如果其他内部 div 的内容 比最左边的 div 少 它们将有空白空间 如果他们有更多的内容 比最左边的div 他们将得到一个滚动条
  • 如何在 Bootstrap 4 轮播中堆叠多个图像

    我不知道如何使用 Bootstrap 4 以及如何在一张幻灯片中显示多个小图像 例如缩略图 而不是让图像填充轮播的宽度 我已经使用下面的代码尝试了一些操作 但仍然无法堆叠很多图像 div class container h2 class t

随机推荐

  • 升压电路(BOOST)与降压电路(BUCK)

    一 电路中产生电流的条件是 1 电路里必须有电源供电 2 电路必须形成闭合回路 降压元器件 升降压电路构成的核心元器件 1 电感 储存能量 电感是无法突变的 工作状态是线性的 2 二极管 3 mos管 首先先分清楚mos是N mos还是P
  • Qt全局宏和变量

    1 Qt 全局宏定义 Qt版本号 QT VERSION major lt lt 16 minor lt lt 8 patch 检测版本号 QT VERSION CHECK major minor patch major lt lt 16 m
  • virtio代码分析(一)-qemu部分

    virtio内容众多 代码分布于qemu linux dpdk等中 而且分为frontend和backend 可以运行于userspace也可以运行于kernelspace 极其难以理解 不看代码只看原理性文档往往流于表面 只有真正看懂了代
  • 大数据准备——安装JDK

    1 解压Linux版本的JDK压缩包 命令行敲入 mkdir home software cd home software rz 上传jdk tar包 这里添加自己tar包的名字 如果rz命令不能使用 先执行yum install lrzs
  • C语言关键字解析

    在C语言中有32个关键字 如下表所示 释 1 声明 1 告诉编译器 这个名字已经匹配到一块内存上 2 告诉编译器 这个名字已经预定了 其他地方再也不能用它来作为变量名或对象名 2 定义 编译器创建一个对象 为这个对象分配一块内存空间 并给它
  • 前端 配色网站 自用 免费 颜色很全

    1 中国色彩 http zhongguose com 3 ColorHex https www colorhexa com 4 优色网配色专区 https color uisdc com 4 ColorDrop https www colo
  • cuda学习

    GPU中有多个流处理器SM 当一个线程块被指定给一个SM后 里面的线程会被划分成线程束 32个线程 在SM上交替运行 也就是说SM上一个时刻只有一个线程束在运行 函数修饰符 global 表示该函数只能在GPU上运行 但是可以从CPU或者G
  • qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method

    最近在做一个网络音乐播放器时 由于出现qt network ssl QSslSocket cannot call unresolved function SSLv23 client method 而不能播放网络歌曲 上网搜了半天 都说要在电
  • Jmeter(二十七) - 从入门到精通 - Jmeter Http协议录制脚本(详解教程)

    1 简介 LoadRunner的录制功能让性能测试脚本编写对于不懂代码的人变成了一件容易上手的事 但是由于LoadRunner收费高昂 庞大 一般企业很少用 除非必须使用 Jmeter作为性能测试中的王者也少不了提供录制功能 Jmeter的
  • 靠!我被项目经理和同事嘲笑了,因为不会远程debug调试...

    大家好 我是曹尼玛 刚从培训机构毕业 去一家单位上班一周了 这一周项目经理让我熟悉了项目业务 架构和设计 不算难 凭借我培训机构第一名的成绩 还是很顺溜 今天项目经理把同事们叫到一起 说线上438x6项目出现奇葩问题 但是开发环境初步测试没
  • SSM框架练习—主从表的业务模型

    需要实现的整体功能 系统的登录并进行用户名的校验 团购信息的列表展示 团购信息的添加 团购信息的检索 1 数据库创建 CREATE DATABASE mydb USE mydb drop table if exists vaccunit C
  • MySQL数据库关于表的一系列操作

    MySQL中的数据类型 varchar 动态字符串类型 最长255位 可以根据实际长度来动态分配空间 例如 varchar 100 char 定长字符串 最长255位 存储空间是固定的 例如 char 10 int 整数型 最长11位 lo
  • 【数据结构 c语言版 】线性表的链式表示和实现

    目录 一 单链表的表示和实现 1 单链表的存储结构 1 1 头指针 头结点与首元结点 1 2 带头结点单链表和不带头结点单链表的比较 2 单链表的初始化 3 单链表的长度 4 单链表的插入 5 单链表的删除 6 单链表的查看 7 单链表的撤
  • auto-gpt部署:openai key, google api key,google engine id

    获取OpenAI API Key 1 打开platform openai com 输入你的OpenAI帐号和密码 2 点击左上角personal gt view api keys gt api keys gt create new scre
  • 不花钱,让"情圣"ChatGPT教你怎么追马斯克

    大家好 我是播妞 你知道吗 如今爆火的ChatGPT 曾经和马斯克还有一段七年的 纠葛 最近 OpenAI发布了史上最强聊天机器人ChatGPT 这个诞生于GPT 3基础上的AI很快走红网络 要说这家伙 天南海北无所不知 可能是夸张了点 但
  • Window XP驱动开发(二) 环境搭建(VS2008+WDK+DDKWzard)及示例源码分析

    郁闷 做了WCE嵌入式驱动这么久还没热身够 又被调到做window xp下的驱动开发 没办法 只能受令了 现在就开始自己的学习之旅吧 转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家提出意见
  • 正则匹配html标签和内容,正则匹配HTML标签(不保留内容和保留内容、过滤标签的的属性)...

    1 匹配双标签 包括内容 过滤标签 不保留内容 var reg1 gt n gi var str1 我是被删除的123123 console log str1 replace reg1 2 匹配标签 不包括内容 过滤标签 保留内容 var
  • Python爬虫之正则表达式

    正则表达式 正则表达式就是规则表达式 在接触爬虫前 正则表达式就是用来过滤的 接触爬虫后发现真的就是过滤用的hhh 正则表达式在爬虫中的作用就是过滤出想要的字符 然后获取 如果不用正则表达式 那么就会将网页中大量信息全部爬出 造成大量内存浪
  • 数字图象处理之二维码图像提取算法(五)

    在预处理之后 接下来就要进行码字提取 在码字提取部分 我们采用的就是霍夫 Hough transform 变换 通过霍夫变换我们可以知道整个二维码倾斜的角度 然后我们就可以进行二维码的矫正 霍夫变换具体如下 采用分级的Hough变换方法 不
  • CSS3动画基础学习

    放在前面的 浏览器支持问题 Internet Explorer 10 Firefox 以及 Opera 支持 keyframes 规则和 animation 属性 而Chrome 和 Safari 需要前缀 webkit CSS3中动画是什