>

CSS动画除外sbf282.com,transition的作用在于

- 编辑:澳门博发娱乐官网 -

CSS动画除外sbf282.com,transition的作用在于

Twitter的”fave”动画

2015/05/12 · HTML5 · Twitter, 动画

本文由 伯乐在线 - 刘健超-J.c 翻译,胡屹 校稿。未经许可,禁止转发!
乌克兰语出处:cssanimation.rocks。应接加入翻译组。

变形--旋转 rotate()

旋转rotate()函数通过点名的角度参数使元素相对原点进行旋转。它根本在二维空间内张开操作,设置贰个角度值,用来内定旋转的增长幅度。借使那个值为正值,成分相对原点中央顺时针旋转;假诺这些值为负值,成分相对原点大旨逆时针旋转。如下图所示:

sbf282.com 1

HTML代码:

<div class="wrapper">
  <div></div>
</div>

CSS代码:

.wrapper {
  width: 200px;
  height: 200px;
  border: 1px dotted red;
  margin: 100px auto;
}
.wrapper div {
  width: 200px;
  height: 200px;
  background: orange;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

演示结果

sbf282.com 2

 

本课程分为以下三步:

连通和卡通

transition(过渡)
在CSS3引进transition从前css没不时间轴,全部的动静变化都是须臾间到位
div{ height:15px; width:15px;}div:hover{ height: 450px; width: 450px;}

transition的功力在于,钦点状态变化所需求的时刻
transition: 1s;

点名属性
咱们还是能够内定transition适用的习性,比方只适用于height
transition: 1s height;

那样一来,独有height的转移须求1秒完结,别的变化(首若是width)还是瞬间兑现,在同一行transition语句中,能够独家钦命四个个性
transition: 1s height, 1s width;

delay(延时)
大家还是能够钦定变化的延时开头,比方这一个地点大家期待让height先爆发变化,等收尾现在,再让width发生变化, 大家只要求为width钦命二个delay参数
transition: 1s height, 1s 1s width;

下边代码钦命,width在1秒未来,再起来变化,也便是延迟(delay)1秒
delay的着实含义在于,它内定了动画片产生的逐条,使得七个差异的transition能够连在一齐,造成复杂效果
transition-timing-function
transition的意况变化速度(又称timing function),暗中认可不是匀速的,而是逐步放缓,那叫做ease 除了ease以外,别的情势还富含
linear:匀速
ease-in:加速
ease-out:减速
cubic-bezier函数(贝塞尔函数)

贝塞尔函数工具
语法
transition: 1s 1s height ease;

这件事实上是三个简写格局,能够独自定义成各类属性
transition-property: height;transition-duration: 1s;transition-delay: 1s;transition-timing-function: ease;

注意事项
脚下,各大浏览器(包蕴IE 10)都早就支撑无前缀的transition,所以transition已经能够很安全地不加浏览器前缀
transition须要料定知晓,开端情状和了结状态的切实数值,才具揣摸出中间状态,什么none到block之类的是可怜的
transition是三次性的,不能够再度爆发,除非每每触发

事件
transitionend
transitionend 事件会在 CSS transition 甘休后触发.
当transition完毕前移除transition时,举个例子移除css的transition-property 属性,事件将不会被触发.如在transition完毕前安设 display: none,事件同样不会被触发.
多少个属性产生了扭转就接触两回,比方 ``` div{ transition: height 1s, width 1s; } div:hover{ width: 100px; height: 100px; }

一回hover会触发三遍transitionend事件

  • 留意不一致浏览器中的前缀 + webkitTransitionEnd + mozkitTransitionEnd

作者: 阮一峰

Twitter的“fave” 动画

近几来 推文(Tweet)通过引进一段新的动画重新规划了“fave”按键(也叫“fav”)。这段动画并不借助于 CSS transition,而是由一多级图片组成的。上面显示怎样用 CSS 的 animation-timing-function 属性中的 steps 时序函数(timing function)重新创设这段动画。

变形--扭曲 skew()

扭曲skew()函数能够让要素倾斜展现。它能够将叁个对象以在那之中央地点围绕着X轴Y轴依照一定的角度倾斜。那与rotate()函数的团团转不相同,rotate()函数只是旋转,而不会改动成分的样子。skew()函数不会旋转,而只会转移成分的形态。

Skew()具备三种情景:

1、skew(x,y)使成分在档期的顺序和垂直方向同一时间扭曲(X轴和Y轴同期按一定的角度值举办翻调换形);

sbf282.com 3

率先个参数对应X轴,第一个参数对应Y轴。借使第三个参数未提供,则值为0,相当于Y轴方向上无斜切。

2、skewX(x)仅使成分在档期的顺序方向扭曲变形(X轴扭曲变形);

sbf282.com 4

3、skewY(y)仅使元素在笔直方向扭曲变形(Y轴扭曲变形)

sbf282.com 5

演示演示:

经过skew()函数将正方形形成平行四边形。

HTML代码:

<div class="wrapper">
  <div>我变成平形四边形</div>
</div>

CSS代码:

.wrapper {
  width: 300px;
  height: 100px;
  border: 2px dotted red;
  margin: 30px auto;
}
.wrapper div {
  width: 300px;
  height: 100px;
  line-height: 100px;
  text-align: center;
  color: #fff;
  background: orange;
  -webkit-transform: skew(45deg);
  -moz-transform:skew(45deg) 
  transform:skew(45deg);
}

示范结果

sbf282.com 6

Step1 - Photoshop

animation(动画)

transition 比较轻巧,animation能够帮我们贯彻复杂的动画

前几日,小编比比较少写介绍CSS的篇章,因为感到网址开辟的重大照旧在劳务器端。

运动发生的错觉

这段动画的功力类似于观望古老的西洋镜,该装置突显的是一文山会海接二连三的环绕着圆筒的插画。在底下的身体力行中,大家不选拔圆筒,而是在有个别成分内部显示一多级图片。

变形--缩放 scale()

缩放 scale()函数 让要素根据中央原点对指标进行缩放。

缩放 scale 具备二种景况:

1、 scale(X,Y)使成分水平方向和垂直方向相同的时间缩放(也便是X轴和Y轴相同的时候缩放)

sbf282.com 7

例如:

div:hover {
  -webkit-transform: scale(1.5,0.5);
  -moz-transform:scale(1.5,0.5)
  transform: scale(1.5,0.5);
}

瞩目:Y是一个可选参数,若无安装Y值,则象征X,Y多少个样子的缩放倍数是同样的。

2、scaleX(x)成分仅水平方向缩放(X轴缩放)

sbf282.com 8

3、scaleY(y)成分仅垂直方向缩放(Y轴缩放)

sbf282.com 9

HTML代码:

<div class="wrapper">
  <div>我将放大1.5倍</div>
</div>

CSS代码:

.wrapper {
  width: 200px;
  height: 200px;
  border:2px dashed red;
  margin: 100px auto;
}
.wrapper div {
  width: 200px;
  height: 200px;
  line-height: 200px;
  background: orange;
  text-align: center;
  color: #fff;
}
.wrapper div:hover {
  opacity: .5;
  -webkit-transform: scale(1.5);
  -moz-transform:scale(1.5)
  transform: scale(1.5);
}

亲自过问结果

sbf282.com 10

注意: scale()的取值暗中同意的值为1,当班值日设置为0.010.99以内的别样值,效率使三个因素缩短;而任何大于或等于1.01的值,功用是让要素放大。

Step2 - HTML/CSS

主干用法

@keyframes change-color{ 0% { background: red; } 50%{ background: blue; } 100%{ background: orange; }}div{ height: 100px; width: 200px; border: 1px solid #111;}div:hover{ animation-name: change-color; animation-duration: 2s;}

我们应用keyframes(关键帧)来定义一个卡通效果, change-color是大家拿到动画名字,每种百分比后边写的是对应时间点作者重视帧样式, 定义好后,在animation(动画)属性中调用,2s 表示的卡通的持续时间
 钦命播放次数(animation-iteration-count)
私下认可情形下,动画只会播放二遍, 大家能够内定动画具体播放的次数,比方3次:
div:hover { animation-name: change-color; animation-duration: 2s; animation-iteration-count: 3;}

也能够无线循环播放:
div:hover { animation-name: change-color; animation-duration: 2s; animation-iteration-count: infinite;}

心跳demo
延时(animation-delay)
animation-timing-function
动画播放前后的场地(animation-fill-mode)
animation-fill-mode: none | backwards | forwards| both;

none: 动画实践前后不变任何样式
forwards: 动画甘休后的靶子保持动画最终一帧的体裁
backwards: 动画肇始前指标保持动画第一帧的样式(必得同盟延时技能看到功能, 假如设置为backwards, 延时之间的体裁是卡通片第一帧的样式, 不然延时之间是目的暗中认可样式)
both: 同有时候接纳forwards和 backwards

卡通播放的趋向(animation-direction)
卡通延续播发时,每一次都是从截止状态跳回到初阶状态,再起来广播。animation-direction属性,能够改换这种行为
animation-direction能够应用下列值:
normal: 寻常播放, 私下认可值;
reverse: 倒着播放
alternate: 第二次平常播放, 第二倒着播放, .. 那样交替的循环下去
alternate-reverse: 第一遍倒着播放, 第叁遍不奇怪播放, .. 那样交替的轮回下去

下图解释了它的规律(假定动画一而再播发三回)

sbf282.com 11

简单易行说,animation-direction钦点了动画片播放的取向,最常用的值是normal和reverse。浏览器对任何值的支撑意况倒霉,应该慎用
语法
div:hover { animation-name: change-color; animation-duration: 1s; animation-timing-function: linear; animation-delay: 1s; animation-fill-mode:forwards; animation-direction: normal; animation-iteration-count: 3;}

简写
animation: animation-name animation-duration animation-timing-function animation-delay animation-iteration-count animation-direction animation-fill-mode;

例子:
div:hover { animation: 1s 1s change-color linear 3 forwards normal;}

keyframes关键字用来定义动画的次第状态,它的写法格外自由
@keyframes change-color { 0% { background: #c00 } 50% { background: orange } 100% { background: yellowgreen }}

0%能够用from代表,百分百得以用to代表,由此地点的代码等同于上边包车型客车款式
@keyframes change-color { from { background: #c00 } 50% { background: orange } to { background: yellowgreen }}

若果轻便有些状态,浏览器会自行推算中间状态,所以上面都是合法的写法。
@keyframes change-color { 50% { background: orange } to { background: yellowgreen }}@keyframes change-color { to { background: yellowgreen }}

竟然,能够把七个情况写在一行。
div:hover { animation: 1s change-color infinite steps(10);}

另外一些须要注意的是,浏览器从贰个气象向另一个气象过渡,是平整对接。steps函数能够完成分步过渡。
div:hover { animation: 1s change-color infinite steps(10);}

文字输入效果demo
animation-play-state
有时,动画播放进程中,会猛然停下。那时,暗许行为是跳回到动画的启幕情况,假如想让动画片保持顿然止住时的意况,将要选拔animation-play-state属性。
div { animation: spin 1s linear infinite; animation-play-state: paused;}div:hover { animation-play-state: running;}

唯独,CSS动画除此而外,它实际太有用了。

示例

把鼠标悬停在轻易上就可以看出动画效果(请到原文翻看动画效果——译者注)。

在本示例中,大家将从创设一雨后冬笋能结成动画的图纸开始。在此地,大家使用来源 推特 的“fave”Logo动画的有些图片集:

sbf282.com 12

为了能让那些帧动起来,大家供给把它们放置在一排上。在那一个文件中,那一个帧已经排列在一排上了,那表示大家得以经过安装背景地点(background-position)属性使背景从第一帧过渡到最后一帧。

sbf282.com 13

变形--位移 translate()

translate()函数能够将成分向钦定的取向移动,类似于position中的relative。或以轻巧的接头为,使用translate()函数,能够把成分从原位移动,而不影响在X、Y轴上的另外Web组件。

translate我们分为二种意况:

1、translate(x,y)水平方向和垂直方向同不日常候活动(也正是X轴和Y轴同期活动)

sbf282.com 14

2、translateX(x)仅水平方向移动(X轴移动)

sbf282.com 15

3、translateY(Y)仅垂直方向移动(Y轴移动)

sbf282.com 16

实例演示:由此translate()函数将成分向Y轴下方移动50px,X轴右方移动100px。

HTML代码:

<div class="wrapper">
  <div>我向右向下移动</div>
</div>

CSS代码:

.wrapper {
  width: 200px;
  height: 200px;
  border: 2px dotted red;
  margin: 20px auto;
}
.wrapper div {
  width: 200px;
  height: 200px;
  line-height: 200px;
  text-align: center;
  background: orange;
  color: #fff;
  -webkit-transform: translate(50px,100px);
  -moz-transform:translate(50px,100px);
  transform: translate(50px,100px);
}

示范结果

sbf282.com 17

Step3 - JavaScript(jQuery)

sbf282.com 18

Steps() 时序函数

绝大多数的时序函数,举个例子 ease(缓冲)和 cubic-bezier(一回贝塞尔),都能让要素从最初状态平滑地连通到最终状态。steps 时序函数与此区别,它实际不是平整地联网,而是将连接进度分割为自然数量的步子,并且在那么些手续之间极快地运动。

sbf282.com 19

我们先创立如下的 HTML 代码:

XHTML

<section class="fave"></section>

1
<section class="fave"></section>

变形--矩阵 matrix()

matrix() 是三个含多个值的(a,b,c,d,e,f)调换矩阵,用来钦定三个2D转移,也就是直接行使二个[a b c d e f]改动矩阵。便是基于水平方向(X轴)和垂直方向(Y轴)重新定位成分,此属性值使用涉及到数学中的矩阵,作者在此间只是简短的说一下CSS3中的transform有这么多少个属性值,假使需求长远了然,须求对数学矩阵有必然的学识。

亲自去做演示:透过matrix()函数来模拟transform中translate()位移的机能。
HTML代码:

<div class="wrapper">
  <div></div>
</div>

CSS代码:

.wrapper {
  width: 300px;
  height: 200px;
  border: 2px dotted red;
  margin: 40px auto;
}
.wrapper div {
  width:300px;
  height: 200px;
  background: orange;
  -webkit-transform: matrix(1,0,0,1,50,50);
  -moz-transform:matrix(1,0,0,1,50,50);
  transform: matrix(1,0,0,1,50,50);
}

示范结果:

sbf282.com 20

Step4 - CSS修改

 

  最后结出如下:

sbf282.com 21

正文介绍CSS动画的两大组成都部队分:transition和animation。笔者不筹划提交每一条属性的详尽介绍,那样能够写一本书。那篇文章只是三个简单介绍,辅助初学者领会全貌,同不时间又是多个急忙指南,当你想不起某二个用法的时候,能够迅速地找到提醒。

本文由胜博发-前端发布,转载请注明来源:CSS动画除外sbf282.com,transition的作用在于