transform ,transition, @keyframe animantion 对比

本文深入探讨了CSS中的transform变换、transition过渡效果以及@keyframes动画的关键概念和用法,详细介绍了平移、翻转、缩放、倾斜/透视等变换效果,以及如何设置transition属性来实现流畅的样式变化,最后通过@keyframes定义动画实现动态视觉效果,同时强调了兼容性考虑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.transform:对元素自身的改变。包括:

  平移:translate(X/Y)

  翻转:rotate(20deg)

  缩放:scale(X/Y)

  倾斜/透视:skew(..)

2.transiton:对元素css样式的改变(width,height,opacity。。。。),有动效, 包含起始和终止两个状态。

  transition有四个属性,transition-property  transition-duration  transition-timing-function  transition-delay

  transition: width 2s  linear 1s

3.@keyframe annimation  顾名思义,类似于flash动画,定义了一组关键帧,也就是几个状态。每个状态可以包含多个css样式

  如:  @keyframes mymove{

0%   {top:0px; left:0px; background:red;}
25%  {top:0px; left:100px; background:blue;}
50%  {top:100px; left:100px; background:yellow;}
75%  {top:100px; left:0px; background:green;}
100% {top:0px; left:0px; background:red;}
}

以上均为css3样式,所以实际使用时注意兼容性。


转载于:https://www.cnblogs.com/hfhsummer/p/4587805.html

IE11 对 CSS 动画的支持确实存在很多限制,尤其是对 `@keyframes` 的部分特性支持不佳。为了确保动画能在 IE11 中正常工作,你可以考虑以下几个替代方案: ### 1. 使用 JavaScript 实现动画效果 如果你需要兼容 IE11,并且希望有更复杂的动画效果,可以考虑通过 JavaScript 或者 jQuery 来实现类似的功能。 ```javascript // 示例:使用JavaScript实现淡入效果 var element = document.getElementById('animatedElement'); element.style.opacity = 0; function fadeIn() { var currentOpacity = parseFloat(element.style.opacity); if (currentOpacity < 1) { currentOpacity += 0.05; element.style.opacity = currentOpacity.toString(); requestAnimationFrame(fadeIn); // 兼容性更好的定时器 } } fadeIn(); ``` **优点**: 精确控制每个属性的变化;不受浏览器CSS解析能力的影响; **缺点**: 可能导致性能下降,尤其是在处理大量元素时; ### 2. 利用第三方库(如 Anime.js) Anime.js 这样的轻量级 JavaScript 动画库能够很好地弥补旧版浏览器对于现代CSS动画特性的不足之处,并提供强大的功能选项。 ```html <!-- 引入库 --> <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js"></script> <div id="box" style="width:100px;height:100px;background:red;"></div> <button onclick="startAnimation()">Start Animation</button> <script> function startAnimation(){ anime({ targets: '#box', translateX: 250, rotate: '1turn' }); } </script> ``` **优点**: 提供了丰富而优雅的API接口,易于上手;良好的跨平台及老旧版本浏览器适配度高; **缺点**: 需要额外引入外部资源文件增加页面加载时间; ### 3. 回退到基础样式转换(Transitions) 虽然不能完全代替完整的 keyframes 功能,但在某些场景下可以用简单的 transition 属性来近似模拟一些基本动画过渡效果: ```css /* 基础状态 */ .box { width:100px; height:100px; background-color:#f46b7c } /* 悬停状态下触发颜色变化并添加旋转效果 */ .box:hover{ transform:rotateY(360deg); -ms-transform:rotateY(360deg); /* for IE9+*/ background-color:greenyellow; transition:.5s ease-in-out all; -webkit-transition:.5s ease-in-out all; /* Safari 和 Chrome */ -moz-transition:.5s ease-in-out all; /* Firefox */ -o-transition:.5s ease-in-out all; /* Opera */ } ``` **优点**: 方便快捷,不需要额外代码逻辑; **缺点**: 表达力有限,仅适用于简单的效果;无法创建复杂的时间轴动画序列; 综上所述,在面对像 IE11 这样对现代 Web 标准支持较差的老式浏览器时,选择适当的解决方案取决于具体的项目需求和技术栈情况。如果只是想让网页看起来更好一点,则建议采用第三种办法—利用现有的 transitions 特性完成必要的视觉反馈设计;若追求更加精细可控以及丰富的互动体验的话,则应优先考察基于 JS 的动态渲染机制或是借助成熟的第三方插件库的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值