CSS动画和JavaScript动画,大扫盲,有代码示例。

news2024/9/27 12:16:50

小伙伴们都知道,css和JavaScript都可以做动画,但是大都不知道二者的区分,该如何选择,贝格前端工场借助本文为大家分享一下。

一、css动画和JavaScript动画的区分

CSS动画和JavaScript动画都可以用于在网页上创建动态效果,它们各有优缺点,具体如下:

CSS动画:

- 优点:

  • - 简单易用:可以通过CSS属性来控制动画效果,不需要编写复杂的JavaScript代码。
  • - 性能较好:使用硬件加速,可以实现流畅的动画效果。
  • - 兼容性好:大部分现代浏览器都支持CSS动画。

- 缺点:

  • - 功能受限:只能控制一些简单的属性动画,不能进行复杂的逻辑控制。
  • - 缺乏交互性:CSS动画通常只能在元素加载时播放一次,不能根据用户行为进行交互。

JavaScript动画:

- 优点:

  • - 功能强大:可以通过编写JavaScript代码实现复杂的动画效果,可以控制元素的位置、大小、颜色等属性。
  • - 可交互性:可以根据用户行为进行交互,例如点击、拖拽等。

- 缺点:

  • - 编写复杂:需要编写一定的JavaScript代码,可能需要使用第三方库来简化操作。
  • - 性能较差:如果动画效果过于复杂,可能会影响网页的性能,导致卡顿或闪烁。

CSS动画适合实现一些简单的动画效果,例如过渡、旋转、缩放等;而JavaScript动画适合实现复杂的动画效果,例如路径动画、物理动画等。在选择使用CSS动画还是JavaScript动画时,需要根据具体需求和场景来进行权衡。


二、css动画和JavaScript动画的实现原理

CSS动画和JavaScript动画的原理和不同点如下所示:

CSS动画原理:

  • - CSS动画是通过在CSS中定义动画关键帧(keyframes)和动画属性(如transition、animation)来实现的。
  • - 当触发动画的条件满足时(例如鼠标悬停、状态变化等),浏览器会根据CSS中定义的动画属性来自动执行动画效果。
  • - 浏览器通过硬件加速来优化CSS动画的性能,使得动画效果更加流畅。

JavaScript动画原理:

  • - JavaScript动画是通过JavaScript代码来控制元素的属性值,从而实现动画效果。
  • - 开发者可以使用JavaScript来操作元素的位置、大小、颜色等属性,从而创建各种复杂的动画效果。
  • - JavaScript动画可以实现更灵活和复杂的动画效果,因为开发者可以根据需求编写逻辑控制动画的行为。

不同点:

  • 1. 实现原理:CSS动画是通过CSS属性和关键帧来实现的,而JavaScript动画是通过JavaScript代码来操作元素属性值来实现的。
  • 2. 功能灵活性:JavaScript动画可以实现更灵活和复杂的动画效果,可以根据用户交互来动态控制动画的行为,而CSS动画相对功能受限。
  • 3. 性能优化:CSS动画通常使用硬件加速来优化性能,因此在一些情况下,CSS动画的性能可能会更好。JavaScript动画的性能受到JavaScript引擎的影响,可能会出现性能瓶颈。

CSS动画和JavaScript动画在实现原理、功能灵活性和性能优化等方面有着不同的特点,开发者可以根据具体需求来选择使用哪种动画方式。


三、常见的css动画实例

css动画都是比较简单的,分享一下常见的动画,原来你以为用js实现的,其实是css实现的。

当使用CSS来实现动画效果时,可以通过一些属性和关键帧动画来实现各种各样的动画效果。以下是一些常见的CSS动画效果示例:

  1. 过渡(Transition):实现元素在状态改变时平滑过渡的效果,例如颜色、大小、位置等的过渡动画。
/* 鼠标悬停时文字颜色过渡 */
a {
  color: black;
  transition: color 0.3s ease;
}
a:hover {
  color: red;
}
  1. 旋转(Rotation):实现元素的旋转效果,可以让元素以指定角度进行旋转。
/* 图片旋转动画 */
img {
  transition: transform 0.5s ease;
}
img:hover {
  transform: rotate(180deg);
}
  1. 缩放(Scale):实现元素的缩放效果,可以让元素在鼠标悬停时放大或缩小。
/* 图片缩放动画 */
img {
  transition: transform 0.5s ease;
}
img:hover {
  transform: scale(1.2);
}
  1. 淡入淡出(Fade In/Out):实现元素的渐显和渐隐效果,让元素以渐变的方式出现或消失。
/* 淡入淡出动画 */
.element {
  opacity: 0;
  transition: opacity 0.5s ease;
}
.element:hover {
  opacity: 1;
}

5.滚动动画(Scrolling Animation):通过CSS实现页面滚动时元素的动画效果,例如在页面滚动到特定位置时元素的渐显或移动效果。

/* 页面滚动时元素的渐显动画 */
.element {
  opacity: 0;
  transition: opacity 0.5s ease;
}
@keyframes fadeIn {
  0% { opacity: 0; }
  100% { opacity: 1; }
}

6.边框动画(Border Animation):通过CSS实现元素边框的动画效果,例如边框颜色、宽度的变化等。

/* 边框颜色变化动画 */
.element {
  border: 2px solid black;
  transition: border-color 0.5s ease;
}
.element:hover {
  border-color: red;
}

7.文字动画(Text Animation):通过CSS实现文字的动画效果,例如文字的颜色、大小、字体等的变化。

/* 文字颜色变化动画 */
h1 {
  transition: color 0.5s ease;
}
h1:hover {
  color: red;
}

8.阴影动画(Box Shadow Animation):通过CSS实现元素阴影的动画效果,例如阴影的颜色、大小的变化。

/* 阴影大小变化动画 */
.element {
  box-shadow: 0 0 10px black;
  transition: box-shadow 0.5s ease;
}
.element:hover {
  box-shadow: 0 0 20px black;
}

这些是CSS可以实现的一些动画效果示例,通过合理地使用CSS属性和关键帧动画,可以实现更多丰富的动画效果。

Hi,我是贝格前端工场,10年前端和UI老司机了,持续为大家分享有价值、有见地的观点、作品、干货,欢迎评论、关注、点赞、有事请私信。


 

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

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

相关文章

微信小程序style动态绑定Object不生效处理方法

渲染的时候style变成了[Object Object] 解决方法: 给Object外面加一个[] <image :style"[imgStyle]" :src"url"></image>

人工智能建立在对象存储上的真正原因

tl;dr: 在这篇文章中&#xff0c;我们将探讨 AI 工作负载依赖高性能对象存储的四个技术原因。 1. 对非结构化数据没有限制 在当前的机器学习范式中&#xff0c;性能和能力与计算成比例&#xff0c;计算实际上是数据集大小和模型大小的代理&#xff08;神经语言模型的缩放定律&a…

嘎嘎详细的三维变换详细讲解,包括视图变换、投影变换等,超级通俗易懂!

前置二维空间的各种变换笔记&#xff1a;二维变换 三维空间中的齐次坐标 从二维变换开始引申&#xff0c;可得到三维中的一个点的表达方式为 ( x , y , z , 1 ) ⊤ (\mathbf{x}, \mathbf{y}, \mathbf{z}, 1)^{\top} (x,y,z,1)⊤&#xff0c;也就是w1&#xff0c;而三维的向量…

插入排序算法(C语言版)

直接插入排序 插入排序&#xff08;insert sort&#xff09;是一种简单的排序算法&#xff0c;它的工作原理与手动整理一副牌的过程非常相似。 具体来说&#xff0c;我们在未排序区间选择一个基准元素&#xff0c;将该元素与其左侧已排序区间的元素逐一比较大小&#xff0c;并…

了解劳动准备差距:人力资源专业人员的战略

劳动准备差距是一个紧迫的问题&#xff0c;在全球人事部门回应&#xff0c;谈论未开发的潜力和错过的机会。想象一下&#xff0c;人才和需求之间的悬崖之间有一座桥&#xff0c;这促使雇主思考&#xff1a;我们是否为员工提供了足够的设备来应对未来的考验&#xff1f; 这种不…

认识R155法规(UN Regulation No. 155)-MUNIK

背景 Background 随着汽车新四化&#xff08;电动化、智能化、网联化、共享化&#xff09;政策的提出&#xff0c;大数据和人工智能等技术的发展&#xff0c;以及软件驱动汽车、舱驾一体、行泊一体等新型架构概念的提出&#xff0c;车内外智能传感器采集的大量数据&#xff08…

桌面悬浮备忘录哪个好?能在桌面悬浮使用的备忘app

备忘录是我们日常工作和生活中的常用工具&#xff0c;它帮助我们记录重要信息&#xff0c;提醒我们完成各项任务。而将备忘录悬浮在桌面上使用&#xff0c;无疑能进一步提高我们的工作效率。想象一下&#xff0c;在处理复杂的工作任务时&#xff0c;你能够随时在桌面上查看提醒…

求函数最小值-torch版

目标&#xff1a;torch实现下面链接中的梯度下降法 先计算 的导函数 &#xff0c;然后计算导函数 在处的梯度 (导数) 让 沿着 梯度的负方向移动&#xff0c; 自变量 的更新过程如下 torch代码实现如下 import torchx torch.tensor([7.5],requires_gradTrue) # print(x.gr…

【xinference】(15):在compshare上,使用docker-compose运行xinference和chatgpt-web项目,配置成功!!!

视频演示 【xinference】&#xff08;15&#xff09;&#xff1a;在compshare上&#xff0c;使用docker-compose运行xinference和chatgpt-web项目&#xff0c;配置成功&#xff01;&#xff01;&#xff01; 1&#xff0c;安装docker方法&#xff1a; #!/bin/shdistribution$(…

【SVN-CornerStone客户端使用SVN-多人开发-解决冲突 Objective-C语言】

一、接下来,我们来说第三方的图形化界面啊, 1.Corner Stone:图形化界面,使用SVN, Corner Stone的界面,大概就是这样的, 1)左下角:是我们远程的一个仓库, 2)右上角:是我们本地的一些东西, 首先,在我的服务器上,再开一个仓库,叫做wechat, 我在这个里边,新建…

红队常用命令速查大全(非常详细)零基础入门到精通,收藏这一篇就够了

这里我整合并且整理成了一份【282G】的网络安全/红客技术从零基础入门到进阶资料包&#xff0c;需要的小伙伴文末免费领取哦&#xff0c;无偿分享&#xff01;&#xff01;&#xff01; 对于从来没有接触过网络安全的同学&#xff0c;我们帮你准备了详细的学习成长路线图。可以…

开放式耳机什么品牌好?四款音质好的开放式耳机推荐

长时间佩戴耳机&#xff0c;舒适度成为了不可忽视的因素。开放式耳机通常采用轻量化材料和透气耳垫&#xff0c;减轻耳朵的负担&#xff0c;即使长时间聆听&#xff0c;也能保持耳朵的舒适与干爽。 然而&#xff0c;众多品牌的开放式耳机琳琅满目&#xff0c;究竟哪个品牌的开…

从重庆元宇宙国风秀看未来元宇宙发展趋势

2024年2月24日&#xff0c;为纪念梅兰芳先生诞辰130周年&#xff0c;以“新国风东方美”为主题的【承华灵境】元宇宙国风秀在重庆市人民大礼堂发布。这场活动将中国经典艺术与数字化技术融合&#xff0c;呈现了一场新国风东方美学的跨越时空人文科技之旅&#xff0c;其中的重点…

【Linux】数据流重定向

数据流重定向&#xff08;redirect&#xff09;由字面上的意思来看&#xff0c;好像就是将【数据给它定向到其他地方去】的样子&#xff1f; 没错&#xff0c;数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据&#xff0c;给它传输到其他的地方&#xff0c;例如文件或…

前端发布项目后,解决缓存的老版本文件问题

最近碰到如题目所说的问题&#xff0c;用了思路一的解决方法&#xff0c;结束之后又上网看技术大牛们的解决方法&#xff0c;总结得出下面的文章。 方式一&#xff1a;纯前端 每次打包发版时都使用webpack构建一个version.json文件&#xff0c;文件里的内容是一个随机的字符串…

递归(五)—— 初识暴力递归之“如何利用递归实现栈逆序”

题目&#xff1a;要求不使用额外的数据结构&#xff0c;仅利用递归函数实现栈的逆序。 题目分析&#xff1a; 利用实例来理解题意&#xff0c;栈内元素从栈底到栈顶一次是3&#xff0c;2&#xff0c;1 &#xff0c;要求经过处理后&#xff0c;栈底到栈顶依次是1&#xff0c;2…

FastAPI 学习之路(三十五)项目结构优化

之前我们创建的文件都是在一个目录中&#xff0c;但是在我们的实际开发中&#xff0c;肯定不能这样设计&#xff0c;那么我们去创建一个目录&#xff0c;叫models&#xff0c;大致如下。 主要目录是&#xff1a; __init__.py 是一个空文件&#xff0c;说明models是一个package…

前端面试39(关于git)

针对前端开发者的Git面试题可以覆盖Git的基础概念、常用命令、工作流程、团队协作、以及解决冲突等方面。以下是一些具体的Git面试 Git基础知识 什么是Git&#xff1f; Git是一个分布式版本控制系统&#xff0c;用于跟踪计算机文件的更改&#xff0c;并协调多个人共同在一个项…

最简单详细的jwt用户登录校验教程(新手必看)

首先简单建张用户表。 DROP TABLE IF EXISTS user; CREATE TABLE user (id bigint NOT NULL AUTO_INCREMENT,name varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,username varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL…

C++ 编译体系入门指北

前言 之从入坑C之后&#xff0c;项目中的编译构建就经常跟CMake打交道&#xff0c;但对它缺乏系统的了解&#xff0c;遇到问题又陷入盲人摸象。对C的编译体系是如何发展的&#xff0c;为什么要用CMake&#xff0c;它的运作原理是如何的比较感兴趣&#xff0c;所以就想系统学习…