css—动画

一、背景

        本文章是用于解释上一篇文章中的问题,如果会动画的小伙伴就不用再次来看了,本文主要讲解一下动画的设定规则,以及如何在元素中添加动画,本文会大篇幅的讲解一下,动画属性。注意,这是css3的内容,默认认为已经了解了css的知识。

二、如何配置动画规则

        关于如何定制动画规则,想必看过我的轮播图那篇文章的小伙伴们已经不陌生了,接下来我就简单的说一下如何去定制动画规则。

1、首先动画规则是通过@keyframes 动画名【注意动画名称任意,但是建议见名知意】。

2、在动画名称之后使用花括号来定义相关的规则,例如让盒子的宽高变化,或者是移动元素。

3、定制的阶段可以分为简单的写法,但是有缺点,只能设置开始和结束的状态。

4、另一种就是相对复杂的百分比写法,相对复杂,但是更灵活,建议使用百分比定制,但是还是要根据实际情况选择,这里不做限制。

1、简单写法

@keyframes animation {
    from{
        元素开始的状态
    }
    to{
        元素目标状态
    }
}

2、百分比 

@keyframes animation {
    0%{
        状态一【开始状态】
    }
    25%{
        状态二
    }
    50%{
        状态三
    }
    75%{
        状态四
    }
    100%{
        状态五【目标状态】
    }
}

 注意:当使用百分比写法的时候阶段是可以自由拆分的,同样也是根据具体情况具体定制。

三、相关属性介绍

        关于属性方面我们先来说一下基本的一些属性,大家肯定有一个疑惑,动画规则有了,但是如何添加到元素上呢,那么接下来就来聊一聊如何去为元素添加动画规则。

1、基本属性使用

1、首先添加动画规则,需要使用animation-name来声明动画的名称,也就是动画规则中的名称。

2、那么动画一定是有时间的,所以接下来了就需要设定时间,时间是通过animation-duration来设定的,值的单位是秒【s】或者毫秒【ms】。

以上就是动画的基本使用,如果你只是想回忆一下自己学过的动画知识,那么想必看到这里已经想起来不少了,如果你是小白,那么继续阅读下去,相信会给你带来不菲的价值。

2、其他属性的使用

        刚刚介绍完两个基本的属性,有了以上的两个属性,再加上动画规则,就可以做到一个简单的动画,但是我们的目的也一定不是简简单单的让元素动一下,那和过渡属性又有什么区别呢,那么接下来就一起来看一下,动画的其他有趣的属性。

1、animation-delay

        这是一个延时属性,就像是他的字面意思,这个属性会让动画在开始的时候延长一段时间之后,再开始动画的播放,接下来演示一下。

 <body>
    <div class="box"></div>
  </body>
 <style>
      .box {
        width: 100px;
        height: 100px;
        background: orange;
        animation-name: moveR;
        animation-duration: 2s;
        animation-delay: 2s;
      }
      @keyframes moveR {
        0% {
          transform: translateX(0);
        }
        20% {
          transform: rotate(360deg);
          background: pink;
        }
        50% {
          background: blue;
          border-radius: 50%;
        }
        to {
          transform: translateX(1000px);
          background: red;
        }
      }
    </style>

效果展示:

 延迟属性就说到这里。

2、animation-timing-function

        这个属性是用来定义过渡形式的,用来固定元素的动画节奏。

选择器 {

animation-timing-function:

ease(慢快慢,默认值)

linear(匀速)

ease-in(先慢后快)

ease-out(先快后慢)

ease-in-out(慢快慢,相对于ease更慢一点)

step-start(不考虑过渡时间直接就是终点)

step-end(过渡时间到直接到终点)

steps(数值)(步长,一段一段的过渡)

cubic-bezier(.88,.54,.35,1.79)贝塞尔曲线

这个属性就不做演示喽,把这个机会留给大家,这个属性和transition中的过度形式是一样的。

3、animation-interation-count

        这个属性是用来定义动画播放次数的,可以是1次,或者是多次,也有一些固定的属性,例如:infinite,这个属性值的意思就是动画会一直运动。具体使用可以看css—轮播图实现-CSDN博客文章浏览阅读636次,点赞6次,收藏18次。CSS样式来实现图片的切换效果。它不依赖于JavaScript,运行速度较快,并且具有较好的兼容性。https://blog.csdn.net/m0_64387122/article/details/144049330?spm=1001.2014.3001.5502这篇文章就使用到了这个属性,大家可以去看一下,也是可以学习到一些知识的。

4、 animation-direction

        这个属性是用来定义动画的运动方向的

        animation-direction: normal(左到右,默认值)/reverse(反向)/alternate(来回滚动)/alternate-reverse(反向来回滚动)

 从左到右,和反向,也就是从右到左,就不进行演示了,还是比较好理解的,接下来就来演示一下来回滚动。

接下来我们来看一下代码:

<body>
    <div class="box"></div>
  </body>
<style>
      .box {
        width: 100px;
        height: 100px;
        background: orange;
        animation-name: moveR;
        animation-duration: 2s;
        animation-iteration-count: 3;
        animation-direction: alternate;
      }
      @keyframes moveR {
        0% {
          transform: translateX(0);
        }
        20% {
          transform: rotate(360deg);
          background: pink;
        }
        50% {
          background: blue;
          border-radius: 50%;
        }
        to {
          transform: translateX(1000px);
          background: red;
        }
      }
    </style>

其中的animation-direction: alternate;属性就是控制元素来回滚动的重要环节。

5、 animation-fill-mode

        这个属性是用来定义动画以外的状态,也就是动画最后会停在那里?

结构:

animation-fill-mode: forwards(停止在最后一帧)/backforwards(停止在第一帧)

这里就不延时停在第一帧了,这是默认的。接下来我就来演示一下停止在最后一帧。效果如下:

 

<body>
    <div class="box"></div>
  </body>
<style>
      .box {
        width: 100px;
        height: 100px;
        background: orange;
        animation-name: moveR;
        animation-duration: 2s;
        animation-fill-mode: forwards;
      }
      @keyframes moveR {
        0% {
          transform: translateX(0);
        }
        20% {
          transform: rotate(360deg);
          background: pink;
        }
        50% {
          background: blue;
          border-radius: 50%;
        }
        to {
          transform: translateX(1000px);
          background: red;
        }
      }
    </style>

6、animation-play-state

        这个属性是用来定义动画播放状态的。

结构:

animation-play-state: paused(暂停)/running(运行,默认值)

默认值是运行状态的,所以同样不做演示,只演示暂停的使用,搭配hover伪类可以实现交互的效果。效果如下:

 

<style>
      .box {
        width: 100px;
        height: 100px;
        background: orange;
        animation-name: moveR;
        animation-duration: 2s;
        animation-iteration-count: infinite;
        animation-direction: alternate;
        animation-fill-mode: forwards;
      }
      @keyframes moveR {
        0% {
          transform: translateX(0);
        }
        20% {
          transform: rotate(360deg);
          background: pink;
        }
        50% {
          background: blue;
          border-radius: 50%;
        }
        to {
          transform: translateX(1000px);
          background: red;
        }
      }
      .box:hover {
        animation-play-state: paused;
      }
    </style>

 从效果中可以清楚的看到,当鼠标放在元素上时会静止元素的运动。

四、属性的符合写法

animation: moveR 2s 0.5s linear infinite alternate-reverse;

符合写法就是将之前介绍的属性进行合并使用,也是比较推荐的写法。这个就比较简单了,就不再重复解释了。 

五、结语

        感谢大家的耐心阅读,希望这篇文章能给您带来一些启发和帮助。如果您有任何疑问或建议,请随时在评论区留言,我会尽快回复,今天的分享就到这里了,如果您觉得这篇文章还不错,请点赞、分享给更多的朋友吧!同时,也欢迎关注我的博客,获取更多精彩内容。

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

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

相关文章

MATLAB下的RSSI定位程序,二维平面上的定位,基站数量可自适应

文章目录 引言程序概述程序代码运行结果待定位点、锚点、计算结果显示待定位点和计算结果坐标 引言 随着无线通信技术的发展&#xff0c;基于 R S S I RSSI RSSI&#xff08;接收信号强度指示&#xff09;的方法在定位系统中变得越来越流行。 R S S I RSSI RSSI定位技术特别适…

排序算法之选择排序堆排序

算法时间复杂度辅助空间复杂度稳定性选择排序O(N^2)O(1)不稳定堆排序O(NlogN)O(1)不稳定 1.选择排序 这应该算是最简单的排序算法了&#xff0c;每次在右边无序区里选最小值&#xff0c;没有无序区时&#xff0c;就宣告排序完毕 比如有一个数组&#xff1a;[2,3,2,6,5,1,4]排…

电视网络机顶盒恢复出厂超级密码大全汇总

部分电视机顶盒在按遥控器设置键打开设置时&#xff0c;会弹出设置密码弹窗&#xff0c;需输入密码才能操作其中内容。 如下图所示&#xff1a; 部分电视机顶盒在选择恢复出厂设置时&#xff0c;会出现设置密码弹窗&#xff0c;只有输入操作密码后才能进行恢复出厂设置的操作。…

继续完善wsl相关内容:基础指令

文章目录 前言一、我们需要安装wsl,这也是安装docker desktop的前提,因此我们在这篇文章里做了介绍:二、虽然我们在以安装docker desktop为目的时,不需要安装wsl的分发(distribution),但是装一个分发也是有诸多好处的:三、在使用wsl时,不建议把东西直接放到系统里,因…

基于STM32的智能风扇控制系统

基于STM32的智能风扇控制系统 持续更新&#xff0c;欢迎关注!!! ** 基于STM32的智能风扇控制系统 ** 近几年&#xff0c;我国电风扇市场发展迅速&#xff0c;产品产出持续扩张&#xff0c;国家产业政策鼓励电风扇产业向高技术产品方向发展&#xff0c;国内企业新增投资项目投…

Zero to JupyterHub with Kubernetes中篇 - Kubernetes 常规使用记录

前言&#xff1a;纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 参考&…

docker-compose搭建xxl-job、mysql

docker-compose搭建xxl-job、mysql 1、搭建docker以及docker-compose2、下载xxl-job需要数据库脚本3、创建文件夹以及docker-compose文件4、坑来了5、正确配置6、验证-运行成功 1、搭建docker以及docker-compose 略 2、下载xxl-job需要数据库脚本 下载地址&#xff1a;https…

HTTP有哪些风险?是怎么解决的?

一、风险 HTTP是通过明文传输的&#xff0c;存在窃听风险、篡改风险以及冒充风险。 二、如何解决 HTTPS在HTTP的下层加了一个SSL/TLS层&#xff0c;保证了安全&#xff0c;通过混合加密解决窃听风险、数字签名解决篡改风险、数字证书解决冒充风险。 &#xff08;1&#xff0…

《Django 5 By Example》阅读笔记:p339-p358

《Django 5 By Example》学习第13天&#xff0c;p359-p382总结&#xff0c;总计24页。 一、技术总结 1.session (1)session 存储方式 Database sessions File-based sessions Cached sessions Cached database sessions Cookie-based sessions (2)设置 CART_SESSION_I…

Python数据分析(OpenCV)

第一步通过pip安装依赖包&#xff0c;执行一下命令 pip install opencv-python 如果是Anaconda请在工具中自行下载 下载好咋们就可以在环境中使用了。 人脸识别的特征数据可以到 github上面下载&#xff0c;直接搜索OpenCV 然后我们在源码中通过cv2的级联分类器引入人脸的特征…

(免费送源码)计算机毕业设计原创定制:Java+ssm+JSP+Ajax SSM棕榈校园论坛的开发

摘要 随着计算机科学技术的高速发展,计算机成了人们日常生活的必需品&#xff0c;从而也带动了一系列与此相关产业&#xff0c;是人们的生活发生了翻天覆地的变化&#xff0c;而网络化的出现也在改变着人们传统的生活方式&#xff0c;包括工作&#xff0c;学习&#xff0c;社交…

工业AI质检 AI质检智能系统 尤劲恩(上海)信息科技有限公司

来的现代化工厂&#xff0c;将逐步被无人化车间取代&#xff0c;无人工厂除了产线自动化&#xff0c;其无人质检将是绕不开的话题。尤劲恩致力于帮助工业制造领域上下游工厂减员增效、提高品质效率&#xff0c;真正实现无人质检IQC/IPQC/OQC的在线质检系统。分析生产环节真实品…

C 语言数组与函数:核心要点深度剖析与高效编程秘籍

我的个人主页 我的专栏&#xff1a;C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞❤ 收藏❤ 目录 引言数组基础 2.1 数组的定义与初始化 2.2 一维数组的基本操作 2.3 二维数组及其应用 2.4 数组与指针的关系函数基础 3.1 函数的定义与调用 3.2…

XML JSON

XML 与 JSON 结构 XML&#xff08;eXtensible Markup Language&#xff09; 1. 定义 XML 是一种标记语言&#xff0c;用于描述数据的结构和内容。主要用于数据存储与交换。 2. 特点 可扩展性&#xff1a;用户可以自定义标签。层次化结构&#xff1a;数据以树形结构组织&…

蓝桥杯备赛笔记(一)

这里的笔记是关于蓝桥杯关键知识点的记录&#xff0c;有别于基础语法&#xff0c;很多内容只要求会用就行&#xff0c;无需深入掌握。 文章目录 前言一、编程基础1.1 C基础格式和版本选择1.2 输入输出cin和cout&#xff1a; 1.3 string以下是字符串的一些简介&#xff1a;字符串…

[代码随想录Day24打卡] 93.复原IP地址 78.子集 90.子集II

93.复原IP地址 一个合法的IP地址是什么样的&#xff1a; 有3个’.分割得到4个数&#xff0c;每个数第一个数不能是0&#xff0c;不能含有非法字符&#xff0c;不能大于255。 这个是否属于合法IP相当于一个分割问题&#xff0c;把一串字符串分割成4部分&#xff0c;分别判断每…

v-for产生 You may have an infinite update loop in a component render function

参考文章&#xff1a; 报错解析 [Vue warn]: You may have an infinite update loop in a component render function. 另外一个解决方法 例如: MyList 是一个数组&#xff0c;我希望将排序后的结果返回进行for循环&#xff0c;因此设计了一个myMethon函数 <div v-for"…

中国前首富胡志标亮相创客匠人盛会,点燃创始人 IP 新思维火花

创客匠人正式官宣&#xff01;原爱多VCD创始人、中国前首富胡志标受邀出席创客匠人5000人“全球创始人IP领袖高峰论坛”&#xff0c;将与我们携手共赴这场商业巅峰盛宴。 由创客匠人打造的“全球创始人IP领袖高峰论坛”将在2024年12月26日-28日在厦门市国际博览会议中心如期举…

qsort函数详解+代码展示

文章目录 概要系列文章目录前言(1) 定义(2) 使用&#xff08;举例子 上代码&#xff09;1、定义数组&#xff1a;2、定义比较函数&#xff1a;3、调用 qsort&#xff1a;4、输出结果&#xff1a; (3) 注意事项 小结 概要 本篇博客将详细地介绍qsort排序函数&#xff0c;&#x…

CSS之3D转换

三维坐标系 三维坐标系其实就是指立体空间&#xff0c;立体空间是由3个轴共同组成的。 x轴:水平向右注意:x右边是正值&#xff0c;左边是负值 y轴:垂直向下注意:y下面是正值&#xff0c;上面是负值 z轴:垂直屏幕注意:往外面是正值&#xff0c;往里面是负值 3D移动 translat…