`

动画相关属性transform、transition 和 animation及其区别

    博客分类:
  • CSS
CSS 
阅读更多

【引文】

项目经常遇到动画属性,transition过渡,animation动画和transform变换等css3属性经常被用到实际项目当中,想想把它整理出来。如下:

 

【概论】

CSS3的animation类似于transition属性,他们都是随着时间改变元素的属性值

主要区别:

①transition需要触发一 个事件(hover事件或click事件等)才会随时间改变其css属性

②animation在不需要触发任何事件的情况下也可以显式的随着时间变化来 改变元素css的属性值,从而达到一种动画的效果

   这样我们就可以直接在一个元素中调用animation的动画属性,基于这一点,css3的 animation就需要明确的动画属性值,这也就是回到我们上面所说的,我们需要keyframes来定义不同时间的css属性值,达到元素在不同时间 段变化的效果

 

【内容】

(1)先介绍transition过渡属性

在做项目中经常会遇见这样的情景,比如一个按钮,当鼠标移入进去的时候改变按钮背景颜色以及字体颜色,此时我们一般会这么做:

 

.btn{width: 100px;height: 100px;border: 1px solid #333;border-radius: 0px;}
.btn:hover{border-radius: 50%;}

 缺点:边角是瞬间改变的,显得特别生硬

 

 此时transition就登场了,见代码:

 ①加入到触发事件里

.btn{width: 100px;height: 100px;border: 1px solid #333;border-radius: 0px;}
.btn:hover{border-radius: 50%;transition:border-radius 5s;}

 ②加入到触发元素里

.btn{width: 100px;height: 100px;border: 1px solid #333;border-radius: 0px;transition:5s;}
.btn:hover{border-radius: 50%;}

仔细对比下,鼠标滑过时效果一样。但是,当鼠标移出时差异就出来了,如果写到事件里,那么事件执行完毕后,会迅速且生硬地恢复到之前状态。而加到元素里则会过渡性地恢复,所以建议加到元素里。当然,具体应用场景还要看需求

 ③限制:transition虽然简单好用,但是我们会发现它受到各种限制,比如

1:transition需要一个事件来触发,比如hover,所以没法在网页加载时自动发生

2: transition是一次性的,不能重复发生,除非一再触发。

3: transition只能定义开始状态和结束状态,不能定义中间状态,也就是说只有两个状态

4:一条transition规则,只能定义一个属性的变化,不能涉及多个属性

  为了突破这些限制,animation出来了

 

(2)animation动画

先不详细解释animation的各项属性了,我们直接来showing代码吧

.btn{width: 100px;height: 100px;border: 1px solid #333;
     border-radius: 0px;}
.btn:hover{animation: change 5s infinite;}
@-webkit-keyframes change {
            0%{border-radius: 0px;width: 100px;}
            100%{border-radius: 50%;width: 200px}
        }

我们可以这样理解,此时,你需要做一个animation动画只需要3点

1. 需要一个承载动画的元素,如p

2. 当前的元素写一个animation的css,其中定义你所需要这个动画产生的效果。(你暂时不需要知道如何编写这个动画内部的css)

3. 编写一个动画进程,以@keyframes关键字来定义,而这个动画的进程有一个名字,如change

你可以把这个进程理解成一个函数,@keyframes对应的就是function,而change对应的就是函数名字,最终等待被调用

百分比:

关于百分比你只要理解它是这个这个动画在多少时间内完成的一系列样式改变的进度。这个进度你可以描绘这个元素你想改变的的样式属性(可以定义多种),当然也可以这样写:

@keyframes change {
            from {border-radius: 0px;width: 100px;}
            50% {border-radius: 25%;width: 150px;}
            to {border-radius: 50%;width: 200px;}
}

 animation浏览器一加载便可以自动触发

 

(3)transform变换

transform变换(包含旋转,缩放,倾斜,移动和矩阵变换)

从字面来看transform 的释义为改变,使...改变,转换,这里我们可以理解为变形,那都能怎么变呢,

①node 表示不进行变化

②rotate     旋转   transform:rotate(20deg) 旋转角度可以为负数。需要先有 transform-origin 定义旋转的基点可为 left top center right bottom或者坐标值(50px 70px) 

③skew      扭曲      transform:skew(30deg,30deg) skew(相对X轴倾斜,相对Y轴倾斜)

④scale      缩放            transform:scale(2,3) 横向放大2倍,纵向放大3倍 【等多放大写一个参数即可】

⑤translate 移动            transform:translate(50px,50px) 位移【类似position 的left 以及 top】

⑥matrix      矩阵变形    transform:matrix(a,b,c,d,tx,ty) ;其中a,b,c,d 是一个二维矩阵

 

 

.

分享到:
评论

相关推荐

    CSS3中动画属性transform、transition和animation属性的区别

    这使得小部分直觉化思维的人(包括我)认为transform属性是动画属性。而恰恰相反,transform属性是静态属性,一旦写到style里面,将会直接显示作用,无任何变化过程。transform的主要用途是用来做元素的特殊变形,...

    CSS进阶:Transform、Transition、Animation及Vertical-align详解

    本文主要介绍了CSS中的Transform属性、Transition过渡动画、关键帧Animation以及Vertical-align属性的功能特性和用法。通过对这几个重要的布局排版相关技术细节展开解析,并提供了多个使用场景的具体示例进行说明,...

    CSS3与动画有关的属性transition、animation、transform对比(史上最全版)

    最近应公司需求,需要用css3做动画,终于把以前一直傻傻分不清楚的三个属性理解了。...Safari 和 Chrome 支持替代的 -webkit-transform 属性(3D 和 2D 转换)。 Opera 只支持 2D 转换。 transform:rotate(7deg); -ms

    CSS3中的Transition过度与Animation动画属性使用要点

    在CSS3中,Transition(过渡)和Animation(动画)是两个强大的特性,它们极大地丰富了网页的视觉表现力。Transition允许元素的CSS属性值在特定事件触发时平滑过渡,而Animation则允许创建复杂的自定义动画序列。 ...

    详解css3 Transition属性(平滑过渡菜单栏案例)

    CSS3的制作动画的三大属性(Transform,Transition,Animation)下面介绍一下 Transition属性。transition属性是一个速记属性有四个属性:transition-property, transition-duration, transition-timing-function, and...

    CSS3 transitions transform animation 特效 html5

    `animation`属性允许我们设置动画的名称、时长、延迟、次数、方向、填充模式和播放状态。 **HTML5的角色** HTML5是HTML的最新版本,引入了许多新元素和API,旨在使网页更加语义化、功能强大且适应现代互联网需求。...

    CSS3的动画 Transitions和Transforms和Animation 示例与快速学习

    不同于Transition只在两个状态间过渡,Animation(动画)能创建复杂的动画序列,通过@keyframes规则定义。你可以指定动画的起始和结束状态,以及在这些状态之间的多个中间步骤。 ```css @keyframes fadeIn { 0% { ...

    纯css3 animation属性制作旋转文字动画切换效果

    在本文中,我们将深入探讨如何使用CSS3的`animation`属性来创建一个旋转的文字动画切换效果。CSS3作为现代网页设计的重要工具,提供了丰富的动画功能,让我们能够无需JavaScript即可实现动态视觉效果。以下是对这个...

    纯CSS3 transition属性鼠标经过酷炫按钮动画特效

    在本文中,我们将深入探讨如何使用CSS3的`transition`属性来创建鼠标经过时的酷炫按钮动画特效。`transition`是CSS3中一个强大的工具,它允许元素在不同状态间平滑过渡,为用户界面增添动态效果,提高用户体验。 ...

    CSS3基础知识教程transition属性过渡动画效果等

    **CSS3基础知识教程:Transition属性与过渡动画效果详解** 在网页设计中,CSS3的引入为开发者提供了更多增强用户体验的工具。Transition(过渡)属性是其中的一个重要特性,它允许元素从一种样式平滑地过渡到另一种...

    css3 transition属性鼠标悬停图标按钮动画提示框效果

    在本案例中,“css3 transition属性鼠标悬停图标按钮动画提示框效果”指的是利用CSS3的`transition`属性,当鼠标悬停在图标按钮上时,实现平滑的动画效果,并显示提示框信息。 1. **CSS3 Transition基础** - `...

    21种css3 transition属性鼠标悬停导航条动画效果

    除了基本的transition属性,还可以结合其他CSS3属性如`transform`和`animation`,创建更复杂的动画效果。例如,`transform`可以用来进行2D或3D变换,如旋转、缩放、移动等;`animation`则可以定义一个完整的动画序列...

    使用CSS transition和animation改变渐变状态的实现方法

    尽管如此,自定义属性在transition中仍然有用,比如在transform属性中,可以利用自定义属性var(--f)来控制元素的位置和缩放,实现元素平滑移动和变形的效果。 当复选框被选中时,可以改变自定义属性--f的值,进而...

    纯css3 transform动画属性鼠标滑过搜索框动画展开文本

    总的来说,CSS3的`transform`属性为网页设计提供了强大的动态效果工具,结合其他CSS3特性如`transition`和`animation`,可以创造出各种炫酷的交互体验。在实际应用中,应根据项目需求灵活运用这些属性,以提升网站的...

    css动画属性使用及实例代码(transition/transform/animation)

    css用对少的代码,来给用户最佳的体验感,下面我总结了一些css动画属性的使用方法及用例代码供大家参考,在不对的地方,希望大佬直接拍砖评论。 1 transition(过渡)  使用语法: transition: property duration ...

    css3 transform属性制作鼠标点击3D图片叠加动画效果

    在网页设计领域,CSS3(层叠样式表第三版)为开发者提供了许多强大的特性,其中transform属性是一个不可或缺的工具,它允许我们对元素进行二维或三维的变换操作,如旋转、缩放、移动和倾斜。本教程将深入探讨如何...

    CSS3中Transform动画属性用法详解

    css3在原来的基础上增加了变形和动画相关的属性,动画三兄弟:transform、transition和animation,通过使用这三个属性可以达到很炫酷的效果。需要注意的是这三个属性都是css3新增的属性,各大浏览器支持方面还不是...

    css3 animation transform鱼游动动画特效.zip

    <head lang="en"> <meta charset="UTF-8"> <title>... 这是一款基于css3 animation transform属性制作的鱼游动动画特效,用background-position属性实现两条游动追逐的鱼。

Global site tag (gtag.js) - Google Analytics