transform、animation、transition?

news2025/1/5 6:53:23

transform、transition 和 animation 都是 CSS 属性,用于创建视觉效果,但它们的工作方式和用途不同:

1. transform (变换元素):

  • 作用: transform 用于改变元素的旋转、缩放、移动、倾斜等属性,但不改变元素的初始状态和最终状态之间的中间状态。它就像一次性地将元素从一个状态改变到另一个状态,没有动画过程。
  • 常用属性值:
    • rotate(angle): 旋转
    • scale(x, y): 缩放
    • translate(x, y): 平移
    • skew(x-angle, y-angle): 倾斜
    • matrix():矩阵变换,可以组合多种变换效果
  • transform: rotate3d(x,y,z,angle);  3D旋转
    x:是一个0到1之间的数值,主要用来描述元素围绕X轴旋转的矢量值
    y:是一个0到1之间的数值,主要用来描述元素围绕Y轴旋转的矢量值
    z:是一个0到1之间的数值,主要用来描述元素围绕Z轴旋转的矢量值
    angle:一个角度值,指定在3D空间旋转角度。
  • 属性简写: transform:  rotate scale translate skew matrix;
  • transform-origin:旋转元素一般配合着transform-origin属性,transform-origin是用来设置旋转点的
  • 示例: transform: rotate(45deg); 会立即将元素旋转 45 度,没有动画过渡。
  • 关键特点: transform 本身不产生动画,它只是改变元素的视觉呈现。要实现动画效果,需要结合 transition 或 animation 使用。

2. transition (过渡):

  • 作用: transition 提供了一种在两种状态(开始、结束)之间平滑过渡的方式当元素的某些属性发生变化时(例如 :hover:focus 或 JavaScript 修改),transition 会使这些变化以动画的形式展现,而不是突变
  • 常用属性:
    • transition-property: 指定要过渡的属性 (例如 widthheightbackground-colortransform 等)可以设置为none(无过渡效果)、all(所有属性都有过渡效果)。
    • transition-duration: 过渡的持续时间。
    • transition-timing-function: 过渡的速度曲线 (例如 easelinearease-in-out 等)。
      linear:从头到尾的速度相同
      ease(默认):以低速开始,然后加快,在结束前变慢
      ease-in:动画以低速开始,结束前不断变快
      ease-out:快速开始,结束前不断变慢
      ease-in-out:开始和结束时段是慢速,中间部分速度最快
      cubic-bezier(n,n,n,n):动画以低速开始和结束贝塞尔曲线(可以用工具或者网站生成)
    • transition-delay: 过渡的延迟时间。
  • 属性简写: transition: property duration timing-function delay;
  • 示例: transition: width 2s ease-in-out; 当元素的宽度发生变化时,会在 2 秒内以 ease-in-out 的速度曲线进行过渡。
  • 关键特点: transition 需要触发,通常是通过改变元素的属性值来触发。它只能实现简单的、从一个状态到另一个状态的动画

一些常见的可以使用 transition 的属性

  • 背景相关属性
    • background-color:背景颜色
    • background-position:背景图片的位置
    • background-size:背景图片的大小
    • 其他背景相关的属性,如background-image(但需要注意,仅当背景图像是渐变或颜色时,才支持过渡)
  • 边框相关属性
    • border-color:边框颜色
    • border-width:边框宽度
    • border-style:边框样式
  • 尺寸和位置相关属性
    • width:元素宽度
    • height:元素高度
    • margin:元素的外边距
    • padding:元素的内边距
    • top、right、bottom、left:元素的位置
  • 文本相关属性
    • color:文本颜色
    • font-size:字体大小
    • line-height:行高
    • text-shadow:文本阴影
  • 透明度相关属性
    • opacity:透明度
  • 其他属性
    • transform:元素变换,如旋转、缩放等
    • outline:元素的外轮廓
    • box-shadow:元素的盒子阴影
    • clip:元素的裁剪区域
    • visibility:元素的可见性

3. animation (动画):

  • 作用: animation 允许创建更复杂的动画序列,可以定义多个关键帧和更精细的控制。它不需要像 transition 那样依赖于状态的变化来触发。
  • 常用属性:
    • animation-name: 动画的名称,与 @keyframes 规则关联。
    • animation-duration: 动画的持续时间。
    • animation-timing-function: 动画的速度曲线。
    • animation-delay: 动画的延迟时间。
    • animation-iteration-count: 动画的播放次数 (例如 infinite 表示无限循环)。
    • animation-direction: 动画的方向 (例如 normalreversealternate 等)。
    • animation-fill-mode: 设置当动画不播放时(动画播放完或延迟播放时)的状态;
      none: 不改变动画的默认行为
      forwards: 当动画播放完成后,保持动画最后一个关键帧中的样式
      backwards: 在 animation-delay 所指定的时间段内,应用动画第一个关键帧中的样式
      both: 同时遵循 forwards 和 backwards 的规则
    • animation-play-state:paused | running(默认) 规定动画正在运行还是暂停,paused(动画已暂停),running(动画正在播放)

  • 属性简写: animation: name duration timing-function delay iteration-count direction fill-mode play-state;
  • 示例:
@keyframes my-animation {
  0% { transform: translateX(0); }
  50% { transform: translateX(100px); }
  100% { transform: translateX(0); }
}

.element {
  animation: my-animation 2s infinite;
}
  • 关键特点: animation 更加灵活,可以创建复杂的动画效果,并且可以通过 @keyframes 规则精确控制动画的每个阶段。

停止动画的案例:

<!DOCTYPE html>
<html>

<head>
  <style>
    div {
      width: 100px;
      height: 100px;
      background: red;
      position: relative;

      animation: mymove 10s;
      /* Safari and Chrome */
      -webkit-animation: mymove 10s;
    }
    .running{
      animation-play-state: running;
      -webkit-animation-play-state: running;
    }
    .paused{
      animation-play-state: paused;
      -webkit-animation-play-state: paused;
    }

    @keyframes mymove {
      from {
        left: 0px;
      }

      to {
        left: 400px;
      }
    }

    @-webkit-keyframes mymove

    /* Safari and Chrome */
      {
      from {
        left: 0px;
      }

      to {
        left: 400px;
      }
    }
  </style>
</head>

<body>

  <p><strong>注释:</strong>Internet Explorer 9 以及更早的版本不支持 animation-play-state 属性。</p>

  <div class="running"></div>
  <button id="btn">点击停止动画</button>

  <script>
    var btn = document.getElementById("btn");
    var div = document.getElementsByTagName("div")[0];

    btn.onclick = function (event) {
      if (div.classList.contains("running")) {
        div.classList.remove("running");
        div.classList.add("paused");
      }else{
        div.classList.remove("paused");
        div.classList.add("running");
      }
    }
  </script>
</body>

</html>

4.transition (过渡)和animation(动画)的区别

定义:

transition 过渡是一种样式转换到另一种样式时的效果
animation是利用@keyframes关键帧完成(元素从开始过程到结束)不需要js技术就可以完成的动画制作

属性的简写

transition: property duration timing-function delay;

transition:要过度的属性 花费的时间 运动曲线(linear匀速;ease逐渐慢下来;ease-in加速;ease-out减速,ease-in-out先加速后减速)何时开始;

animation: name duration timing-function delay iteration-count direction fill-mode play-state;

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

//1、动画状态不同
	1.transition 过渡只有开始和结束两种状态;
	2.animation 有开始,过程,结束多种状态
//2、动画触发方式不同:
	1. CSS的transition需要借助别的方式来触发, 比如CSS的状态选择器(如:hover)或 借助JavaScript来触发。
	2. animation 不但可以使用上面的方式触发, 更重要的是可以自动触发。
//3、功能点(属性)不同
animation 控制动效上要比 transition 强,因为它具备一些控制动效的属性,比如“播放次数”、“播放方向”、“播放状态”等。

//transform和animation的相同点
1. 从整体来看,animation 和 transition 想做的事情都是一样, 通过控制属性变化的过程也, 实现动画; 都是立足于控制本身 dom 的 css 属性变化过程, 来实现动画的视觉效果。

2. 他们都有“持续时间”、“延迟时间” 和“时间缓动函数”等概念,这些都是用来控制动效的效果。

5.总结

通常情况下,transform 会与 transition 或 animation 结合使用,例如使用 transition 来实现平滑的旋转效果 (transition: transform 2s ease;),或者使用 animation 来创建更复杂的位移动画。 单独使用 transform 只会改变元素的最终状态,而不会产生动画效果。 

 

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

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

相关文章

大数据技术-Hadoop(三)Mapreduce的介绍与使用

目录 一、概念和定义 二、WordCount案例 1、WordCountMapper 2、WordCountReducer 3、WordCountDriver 三、序列化 1、为什么序列化 2、为什么不用Java的序列化 3、Hadoop序列化特点&#xff1a; 4、自定义bean对象实现序列化接口&#xff08;Writable&#xff09; 4…

Echarts+vue电商平台数据可视化——webSocket改造项目

websocket的基本使用&#xff0c;用于测试前端能否正常获取到后台数据 后台代码编写&#xff1a; const path require("path"); const fileUtils require("../utils/file_utils"); const WebSocket require("ws"); // 创建WebSocket服务端的…

神经网络-Inception

Inception网络是由Google开发的一种深度卷积神经网络架构&#xff0c;旨在解决计算机视觉领域中的图像分类和物体识别任务。 Inception网络最初在2014年被提出&#xff0c;并在ImageNet图像分类挑战赛上取得了很好的结果。其设计灵感来自于模块化的思想&#xff0c;将不同尺度…

js给dom分页

减少js操作dom js引擎与渲染引擎相互独立, js操作dom过程开销大操作到了dom层面会触发渲染树的变化,触发回流与重绘开销大 让js给dom分压 js处理完操作后,最后给dom 缓存变量 let container document.getElementById(container) let content for(let count0;count<…

深度学习——神经网络中前向传播、反向传播与梯度计算原理

一、前向传播 1.1 概念 神经网络的前向传播&#xff08;Forward Propagation&#xff09;就像是一个数据处理的流水线。从输入层开始&#xff0c;按照网络的层次结构&#xff0c;每一层的神经元接收上一层神经元的输出作为自己的输入&#xff0c;经过线性变换&#xff08;加权…

秒鲨后端之MyBatis【2】默认的类型别名、MyBatis的增删改查、idea中设置文件的配置模板、MyBatis获取参数值的两种方式、特殊SQL的执行

别忘了请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01;! ! ! 下篇更新&#xff1a; 秒鲨后端之MyBatis【3】自定义映射resultMap、动态SQL、MyBatis的缓存、MyBatis的逆向工程、分页插件。 默认的类型别名 MyBatis的增删改查 添加 <!--int insertUs…

瑞芯微全新芯片平台RK3506优势详解,高集成低功耗,为工业而生 触觉智能测评

RK3506是瑞芯微Rockchip在2024年第四季度全新推出的Arm嵌入式芯片平台&#xff0c;三核Cortex-A7单核Cortex-M0多核异构设计&#xff0c;CPU频率达1.5Ghz, M0 MCU为200Mhz。 而RK3506芯片平台下的工业级芯片型号RK3506J&#xff0c;具备-40-85℃的工业宽温性能、发热量小&#…

AIOps平台的功能对比:如何选择适合的解决方案?

定义与概念 AIOps&#xff0c;即人工智能运维&#xff08;Artificial Intelligence for IT Operations&#xff09;&#xff0c;是将人工智能技术应用于 IT 运维领域&#xff0c;以实现自动化、智能化的运维管理。它通过整合大数据、机器学习等先进技术&#xff0c;对海量运维数…

Python + 深度学习从 0 到 1(03 / 99)

希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【深度学习从 0 到 1】谢谢你的支持&#xff01; ⭐ 神经网络的数据表示 – 张量 你可能对矩阵很熟悉&a…

Lumos学习王佩丰Excel第二十三讲:饼图美化与PPT图表

一、双坐标柱形图的补充知识 1、主次坐标设置 2、主次坐标柱形避让&#xff08;通过增加两个系列&#xff0c;挤压使得两个柱形挨在一起&#xff09; 增加两个系列 将一个系列设置成主坐标轴&#xff0c;另一个设成次坐标轴 调整系列位置 二、饼图美化 1、饼图美化常见设置 …

基于Vue+SSM+SpringCloudAlibaba书籍管理系统

功能要求 一、登录功能&#xff08;http://localhost:8080/#/login&#xff09; 输入账号和密码(admin/admin)进行登录&#xff1a; 如果密码错误&#xff0c;给出提示信息 如果密码正确&#xff0c;跳转到主页 账号或密码错误&#xff1a; 账号密码正确&#xff1a;跳转到…

【优先算法】滑动窗口 --(结合例题讲解解题思路)(C++)

目录 ​编辑 1.什么是滑动窗口&#xff1f; 2. 滑动窗口例题 2.1 例题1&#xff1a;长度最小的子数组 2.1.1 解题思路 2.1.2 方法一&#xff1a;暴力枚举出所有的子数组的和 2.1.3 方法二&#xff1a;使用 “同向双指针” 也就是滑动窗口来进行优化 2.2 例题2&#xff1a;无重…

VS Code 从命令行启动

在 VS Code 中&#xff0c;code 命令允许你在命令行中快速打开文件、文件夹或新窗口。 安装 原本地址&#xff1a;https://code.visualstudio.com/docs/setup/mac 使用 使用 code 命令 打开文件&#xff1a;你可以通过在命令行输入 code 文件名 来直接打开一个文件。 打开文…

微服务-配置管理

文章目录 1.什么是配置管理2.配置共享添加共享配置拉取共享配置 3.配置热更新添加配置到Nacos配置热更新 4.动态路由监听Nacos配置变更 1.什么是配置管理 到目前为止我们已经解决了微服务相关的几个问题&#xff1a; 微服务远程调用微服务注册、发现微服务请求路由、负载均衡…

ArrayList 和LinkedList的区别比较

前言 ‌ArrayList和LinkedList的主要区别在于它们的底层数据结构、性能特点以及适用场景。‌ArrayList和LinkedList从名字分析&#xff0c;他们一个是Array&#xff08;动态数组&#xff09;的数据结构&#xff0c;一个是Linked&#xff08;链表&#xff09;的数据结构&#x…

MySQL--》如何在SQL中巧妙运用函数与约束,优化数据处理与验证?

目录 函数使用 字符串函数 数值函数 日期函数 流程函数 约束 外键约束 约束规则 函数使用 函数是指一段可以直接被另一段程序调用的程序或代码&#xff0c;在mysql当中有许多常见的内置函数&#xff0c;接下来开始对这些内置函数及其作用进行简单的讲解和使用&#xf…

一文大白话讲清楚CSS盒子模型和块级格式化上下文(BFC)

一文大白话讲清楚CSS盒子模型和块级格式化上下文&#xff08;BFC&#xff09; 1.啥是个CSS盒子 鞋盒你家总有吧&#xff0c;方方正正&#xff0c;有长度有高度。css盒子跟这个八九不离十当我们编写html页面时&#xff0c;写了很多的元素&#xff0c;比如"div",&quo…

Docker 快速搭建 GBase 8s数据库服务

1.查看Gbase 8s镜像版本 可以去到docker hub网站搜索&#xff1a;gbase8s liaosnet/gbase8s如果无法访问到该网站&#xff0c;可以通过docker search搜索 docker search gbase8s2.拉取Gbase 8s镜像 以下演示的版本是目前官网最新版本Gbase8sV8.8_3.5.1 docker pull liaosn…

密钥登录服务器

1. 生成 SSH 密钥对 如果您还没有生成密钥对&#xff0c;可以使用以下命令生成&#xff1a; ssh-keygen 在 root 用户的家目录中生成了一个 .ssh 的隐藏目录&#xff0c;内含两个密钥文件&#xff1a;id_rsa 为私钥&#xff0c;id_rsa.pub 为公钥。 在提示时&#xff0c;您可…

王佩丰24节Excel学习笔记——第二十讲:图表基础

【以 Excel2010 系列学习&#xff0c;用 Office LTSC 专业增强版 2021 实践】 【本章技巧】 课件图片有问题&#xff0c;不能随隐藏熟悉各个图表小部件的功能&#xff0c;需要修改都是选中右键进行更改。 一、认识图表中的元素 图表标题&#xff1a;主坐标&#xff08;横坐标&…