css3中变形与动画片,translate傻傻分不清

CSS动画:animation、transition、transform、translate傻傻分不清

2018/06/19 · CSS ·
Animation,
transform,
transition,
translate,
动画

原版的书文出处: Vince   

css3中变形与动画片(三),css3变形动画

transform能够兑现矩阵变换,transition完毕属性的平缓对接,animation意思是动画片,动漫,这些特性才和确实含义的一帧一帧的卡通相关。本文就介绍animation属性。

animation属性通过有个别要害帧兰秋素属性的更改来促成动画效果。当然也足以操纵动画持续时间,动画迭代次数等。

css3中变形与动画(二),css3变形动画

css3制作动画的多少个属性:变形(transform),过渡(transition)和动画片(animation)。

transform介绍过了。接下来介绍过渡transition。

css3 transition animation nick,css3transition

时光转眼即逝,又到周四了,今日写点某部分人瞧不起的css玩玩!

前言

在常常费用进程中,由于都以和谐捣鼓玩的连串,并不曾UI设计给自个儿的安排性图,更未曾什么样特效供给,导致对css动画一贯都不是很熟悉,不过作为即将进入实习单位的萌新程序员,要时刻准备着设计师供给的各个卡通,于是有了这一篇小说。

一、例子

在介绍transition时开篇有一个事例就是贯彻鼠标放上去,div宽度从100px缓慢增大到200px。

用transition完毕格局如下

div:hover{
    width: 200px;
    transition:width 5s ease-in;
}

用animation也能兑现类似作用,如下:

<style type="text/css">
div {
    width: 100px;
    height: 100px;
    background-color: red;
}
@keyframes enlarge {
    0% {
        width: 100px;
    }
    50% {
        width: 150px;
    }
    100% {
        width: 200px;
    }
}
div:hover {
    /*width: 200px;    */   
    /*transition:width 5s ease-in;*/
    animation: 5s enlarge;
}
}
</style>
<div></div>

鼠标悬停,动画持续5s,在时刻到四分之二时div的宽窄要从100px达到150px,5s时div宽度达到200px,动画截止。

可是transition和animation效果依旧有异样的,鼠标hover上去,transition动画执行完后width保持200px;animation动画执行完后width回到100px。

澳门葡京 1

理所当然那只是默许效果,这几个动画落成时的效益也是能够修改的。

修改上面代码中animation为

animation: 5s enlarge forwards;

就足以让动画执行完后停在最终一帧。那么些forwards是animation-fill-mode的值,前面会详细讲。

透过这么些事例只是想说,能够知晓为transition是animation的简化版,animation能够做更加多的操纵,也更强有力。上边正式启幕介绍。

一、例子

css3中变形与动画片,translate傻傻分不清。先经过一个事例感性认识一下transition的动画片效果。

鼠标放上去,div宽度从100px增大到200px。

<style type="text/css">
    div{
        width: 100px;
        height: 100px;
        background-color: red;
    }
    div:hover{
        width: 200px;
    }
</style>
<div></div>

那意义实在也算是动画,可是丰富变化相当慢,不平易。

就算想让鼠标放上去后div宽度在5s内平滑对接到200px。只须求加一行代码;

div:hover{
    width: 200px;
    transition:width 5s ease-in;
}

此地运用的便是transition属性,它正是用来落到实处属性值平滑过渡,视觉上产生动画效果。

上边用的transition是缩写,蕴含多个属性:transition-property,transition-duration,transition-timing-function,transition-delay,上边会相继介绍。 

转换

不难混淆的几个css属性

css属性很多,并且有点无论是字母的拼写如故字面上的意趣,都简单模糊,比如本身列出来的多少个天性,是否也搅乱过您~

属性 含义
animation(动画) 用于设置动画属性,他是一个简写的属性,包含6个属性
transition(过渡) 用于设置元素的样式过度,和animation有着类似的效果,但细节上有很大的不同
transform(变形) 用于元素进行旋转、缩放、移动或倾斜,和设置样式的动画并没有什么关系,就相当于color一样用来设置元素的“外表”
translate(移动) translate只是transform的一个属性值,即移动。

弄明白那多少个难题,大家就足以头脑清醒的气象下去上学css的卡通片

二、keyframes

keyframes意思是“关键帧”,在第三帧会改变元素属性的总计值。

keyframes语法:

keyframes-rule: '@keyframes' IDENT '{' keyframes-blocks '}';
keyframes-blocks: [ keyframe-selectors block ]* ;
keyframe-selectors: [ 'from' | 'to' | PERCENTAGE ] [ ',' [ 'from' | 'to' | PERCENTAGE ] ]*;

综合写法:

 @keyframes IDENT {
     from {
       Properties:Properties value;
     }
     Percentage {
       Properties:Properties value;
     }
     to {
       Properties:Properties value;
     }
   }
   或者全部写成百分比的形式:
   @keyframes IDENT {
      0% {
         Properties:Properties value;
      }
      Percentage {
         Properties:Properties value;
      }
      100% {
         Properties:Properties value;
      }
    }

足见keyframes写法是那样的:由”@keyframes”开端,前边紧跟这么些“动画的名号”加上一对花括号“{}”,括号中是局地不目前间段的体裁规则,规则写法同css样式。

叁个“@keyframes”中的样式规则是由多少个百分比构成的,如”0%”到”百分百”之间,能够在1个规则中开创三个比例,分别在每三个百分比中给急需有动画效果的成分加上不一致的习性,从而让要素达到一种持续变更的效劳,比如说移动、改变成分颜色、地点、大小、形状等。

三个重点字,”from”和”to”表示三个动画从哪早先,到哪甘休,相当于”from”也便是”0%”,而”to”也就是”百分百”。

Note:0%中的%不可能简单,省略则全部keyframes语法错误,整条规则不行,因为keyframes的单位只接受百分比率。

比喻:W3C官网的实例,上面介绍animation时会用到那段代码。

 @-webkit-keyframes 'wobble' {
     0% {
        margin-left: 100px;
        background: green;
     }
     40% {
        margin-left: 150px;
        background: orange;
     }
     60% {
        margin-left: 75px;
        background: blue;
     }
     100% {
        margin-left: 100px;
        background: red;
     }
  }

keyframes定义每一帧的动画,但只写keyframes是没用的,供给调用才能见效。那什么样调用就用到animation了。

二、transition

css3新增transition属性,能够在事变触发成分的样式变化时,让职能越来越细腻平滑。

transition用来叙述怎么着让css属性值在一段时间内平滑的从三个值过渡到另二个值。那种连接效果能够在鼠标点击收获宗旨被点击对成分任何改动中触发。

语法:

transition : [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'> [, [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'>]]* 

transition有多个属性值:

transition-property:执行过渡的习性。

transition-duration:钦点完毕对接供给的时光。

transition-timing-function,在继续时间段,过渡变换的速率变化,简单明了便是钦命过渡函数。

transition-delay:过渡延迟时间。

更换属性transform:

浏览器前缀:
-webkit-transform;-o-transform;-moz-transform;-ms-transform;
取值:
none : 暗许值,没有更换操作
transform-function:一组更换函数
transform:函数1() 函数2() ……;

transition

什么样叫过渡?字面意思上来讲,就是因素从这一个脾性(color)的某部值(red)过渡到那一个性格(color)的其余3个值(green),那是三个动静的转变,须要一种标准来触发那种变动,比如大家一直利用的:hoever、:focus、:checked、媒体询问大概JavaScript。

先从一个简短的demo来看看transition的功用

XHTML

<!DOCTYPE html> <html lang=”en”> <head>
<title>transition</title> <style> #box { height:
100px; width: 100px; background: green; transition: transform 1s ease-in
1s; } #box:hover { transform: rotate(180deg) scale(.5, .5); }
</style> </head> <body> <div
id=”box”></div> </body> </html>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html lang="en">
<head>
  <title>transition</title>
  <style>
    #box {
      height: 100px;
      width: 100px;
      background: green;
      transition: transform 1s ease-in 1s;
    }
 
    #box:hover {
      transform: rotate(180deg) scale(.5, .5);
    }
  </style>
</head>
<body>
  <div id="box"></div>
</body>
</html>

效果:

澳门葡京 2

大家来分析这一全部经过,首先transition给元素设置的连接性质是transform,当鼠标移入成分时,成分的transform发生变化,那么那么些时候就接触了transition,发生了动画片,当鼠标移出时,transform又发生变化,那么些时候依然会触发transition,产生动画,所以transition发生动画的原则是transition设置的property爆发变化,那种动画的风味是必要“1个驱引力去接触”,有着以下多少个不足:

  1. 必要事件触发,所以无法在网页加载时自动发出
  2. 是二次性的,不能重新产生,除非一再触发
  3. 只可以定义开端境况和终止状态,不能够定义中间状态,也正是说唯有多个情形
  4. 一条transition规则,只好定义壹性情质的变型,不能够涉及多少个属性。

语法:transition: property duration timing-function delay;

描述
transition-property 规定设置过渡效果的 CSS 属性的名称
transition-duration 规定完成过渡效果需要多少秒或毫秒
transition-timing-function 规定速度效果的速度曲线
transition-delay 定义过渡效果何时开始

三、animation

animation没有事件触发时,在页面加载后显式的乘机时间转移来改变成分css样式,从而发出动画效果。

要素是怎么样调用animation和keyframes的呢?

举例来说:调用上面写好的wobble动画。

 .demo1 {
     width: 50px;
     height: 50px;
     margin-left: 100px;
     background: blue;
     -webkit-animation-name:'wobble';/*动画属性名,也就是我们前面keyframes定义的动画名*/
     -webkit-animation-duration: 10s;/*动画持续时间*/
     -webkit-animation-timing-function: ease-in-out; /*动画频率,和transition-timing-function是一样的*/
     -webkit-animation-delay: 2s;/*动画延迟时间*/
     -webkit-animation-iteration-count: 10;/*定义循环次数,infinite为无限次*/
     -webkit-animation-direction: alternate;/*定义动画方式*/
  }

到此,若是前方看过transition应该早就了然animation也是个复合属性。

animation包括上面属性:
animation-name,animation-duration,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,animation-play-state和animation-fill-mode。上边一一介绍,重点领会加粗的习性。

1、transition-property

transition-property用来指定哪个属性使用过渡动画效果。

语法:

transition-property : none | all | [ <IDENT> ] [ ',' <IDENT> ]*

none:全体属性都不采用接入效果。

all:默认值。当值为all时,成分爆发别的属性值变化时都将实行transition效果。

ident:成分属性名。通过ident钦点具体哪些属性。借使钦命的两脾性格中有有个别属性无法利用接入效果,别的品质依然一蹴而就的。

接通性质唯有具有多少个中式点心值的习性(须要发出动画的性质)才能拥有过渡效果。在w3c中列出了全数能够兑现transition效果的css属性值以及值的品类,点那里查看。

澳门葡京 3Property
Name Type background-color as color background-position as repeatable
list of simple list of length, percentage, or calc border-bottom-color
as color border-bottom-width as length border-left-color as color
border-left-width as length border-right-color as color
border-right-width as length border-spacing as simple list of length
border-top-color as color border-top-width as length bottom as length,
percentage, or calc clip as rectangle color as color font-size as length
font-weight as font weight height as length, percentage, or calc left as
length, percentage, or calc letter-spacing as length line-height as
either number or length margin-bottom as length margin-left as length
margin-right as length margin-top as length max-height as length,
percentage, or calc max-width as length, percentage, or calc min-height
as length, percentage, or calc min-width as length, percentage, or calc
opacity as number outline-color as color outline-width as length
padding-bottom as length padding-left as length padding-right as length
padding-top as length right as length, percentage, or calc text-indent
as length, percentage, or calc text-shadow as shadow list top as length,
percentage, or calc vertical-align as length visibility as visibility
width as length, percentage, or calc word-spacing as length z-index as
integer View Code

Note:并不是怎么着性质改变都会触发transiton动画效果,比如页面包车型地铁自适应宽度,当浏览器改变宽度时,并不会触发transition的效果。但上述表格所示的质量类型变更都会接触1个transition动效。

举例:能够而且给多少个性子设置动画效果,比如给height和line-height同时设置动画效果,达成div变高文字照旧垂直居中。

澳门葡京 4<!DOCTYPE
html> <html> <head> <meta charset=”utf-8″>
<title>变形与动画片</title> <style type=”text/css”> div
{ width: 300px; height: 200px; line-height: 200px; text-align: center;
background-color: orange; margin: 20px auto;
-webkit-transition-property: height line-height; transition-property:
height line-height; -webkit-transition-duration: 1s;
transition-duration: 1s; -webkit-transition-timing-function: ease-out;
transition-timing-function: ease-out; -webkit-transition-delay: .2s;
transition-delay: .2s; } div:hover { height: 100px; line-height: 100px;
} </style> </head> <body>
<div>文字垂直居中</div> </body> </html> View Code

澳门葡京 5

转换的原点transform-origin

在不点名原点前提前,暗中认可原点为成分的中心处
取值:数值/百分比/关键字
叁个值:全部轴地方
两个值:表示x轴和y轴
三个值:表示x轴,y轴,z轴

animation

在官方的牵线上介绍那一个性子是transition属性的扩充,弥补了transition的浩大欠缺,作者领悟为animation是由两个transition的功用叠加,并且可操作性更强,能够做出复杂酷炫的效能(前提是您爱折腾),大家以3个例子来介绍animation的威力:

XHTML

<!DOCTYPE html> <html lang=”en”> <head>
<title>animation</title> <style> .box { height: 100px;
width: 100px; border: 15px solid black; animation: changebox 1s
ease-in-out 1s infinite alternate running forwards; } .box:hover {
animation-play-state: paused; } @keyframes changebox { 10% { background:
red; } 50% { width: 80px; } 70% { border: 15px solid yellow; } 100% {
width: 180px; height: 180px; } } </style> </head>
<body> <div class=”box”></div> </body>
</html>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!DOCTYPE html>
<html lang="en">
 
<head>
  <title>animation</title>
  <style>
    .box {
      height: 100px;
      width: 100px;
      border: 15px solid black;
      animation: changebox 1s ease-in-out 1s infinite alternate running forwards;
    }
 
    .box:hover {
      animation-play-state: paused;
    }
 
    @keyframes changebox {
      10% {
        background: red;
      }
      50% {
        width: 80px;
      }
      70% {
        border: 15px solid yellow;
      }
      100% {
        width: 180px;
        height: 180px;
      }
    }
  </style>
</head>
 
<body>
  <div class="box"></div>
</body>
 
</html>

澳门葡京 6

分析:

大家先来看望keyframes这几个关键点,它定义了二个动画组成叫changebox,里面包车型大巴一成,二分之一,七成,百分之百代表在扭转中分化时间点的属性值,比如这一个动画的总时间是1s,那么10%正是在0-0.1s中的动画,通过这几个大家能够较规范的主宰动画变化中别的一个时间点的天性效果,这大大升高了作者们对动画片的把控,是做复杂动画的底子,大家再回来看animation中漫天多个值,是否多少夸张,还没见过如此长的值,通过控制animation的每种值,控制动画变得分外灵活,大家来具体掌握它的语法以及各类值代表着怎样:

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

描述
name 用来调用@keyframes定义好的动画,与@keyframes定义的动画名称一致
duration 指定元素播放动画所持续的时间
timing-function 规定速度效果的速度曲线,是针对每一个小动画所在时间范围的变换速率
delay 定义在浏览器开始执行动画之前等待的时间,值整个animation执行之前等待的时间
iteration-count 定义动画的播放次数,可选具体次数或者无限(infinite)
direction 设置动画播放方向,两个值:normal(按时间轴顺序),alternate(轮流,即来回往复进行)
play-state 控制元素动画的播放状态,通过此来控制动画的暂停和继续,两个值:running(继续),paused(暂停)
fill-mode 控制动画结束后,元素的样式,有四个值:none(回到动画没开始时的状态),forwards(动画结束后动画停留在结束状态),backwords(动画回到第一帧的状态),both(根据animation-direction轮流应用forwards和backwards规则),注意与iteration-count不要冲突(动画执行无限次)

animation与transition
分裂的是,keyframes提供更加多的主宰,尤其是岁月轴的控制,那点让css
animation越发有力,使得flash的片段动画片效果能够由css直接控制到位,而这一切,仅仅只要求几行代码,也为此诞生了多量基于css的卡通片库,用来取代flash的动画片部分。在本身的花色中貌似用 Animate.css 来设置有个别动画片,期待在工作中能够用animation完美兑现UI设计师给的筹划图~

1、animation-name

animation-name是最主要的了,表示应用哪个帧动画。

语法:

animation-name: none | IDENT[,none | IDENT]*;

暗许值:none,即私下认可情形并未动画效果。

animation-name属性调用@keyframes定义好的动画,必须和”@keyframes”定义的卡通片名称完全一致(区分轻重缓急写)。

比方:animation合营矩阵变换中的平移做3个幽默的小动画。

澳门葡京 7<!DOCTYPE
html> <html> <head> <meta charset=”utf-8″>
<title>变形与动画</title> <style type=”text/css”>
@keyframes around{ 0% { transform: translateX(0); } 四分之一{ transform:
translateX(180px); } 八分之四{ transform: translate(180px, 180px); } 75%{
transform:translate(0,180px); } 百分百{ transform: translateY(0); } } div
{ width: 200px; height: 200px; border: 1px solid red; margin: 20px auto;
} div span { display: inline-block; width: 20px; height: 20px;
background: orange; border-radius: 百分百; animation-name:around;
animation-duration: 10s; animation-timing-function: ease;
animation-delay: 1s; animation-iteration-count:infinite; }
</style> </head> <body> <div>
<span></span> </div> </body> </html> View Code

澳门葡京 8

2、transition-duration

transition-duration用来设置从旧属性过渡到新属性必要的日子,即持续时间。

2D转换

总结

写这篇小说的目标是唤醒自个儿毫无将那多特个性混淆,顺便详细讲解CSS制作动画的点子,简单一回性的动画中引进使用transition,比较逻辑清晰,可维护性较好。要是境遇相比较复杂的动画片,那个时候便足以拿出animation初阶你的表演,其实不仅用css能落到实处动画,用js同样能够操控成分的体制达成动画,那几个时候你脑公里是还是不是发泄出set提姆eout,setInterval来支配样式完毕动画,当然能够,可是比较新出的requestAnimationFrame,它能够更高质量地执行动画,那里引玉之砖,小伙伴们得以品尝去谷歌(Google)以下,前面小编也会就以此新出的函数写一篇详细的指南。

1 赞 1 收藏
评论

澳门葡京

澳门葡京 9

2、animation-duration

语法:

animation-duration: <time>[,<time>]*

暗中认可值为0,意味着动画时间长度0,即没有动画效果(借使值为负值被视为0)。

animation-duration定义播放动画持续的日子,也正是形成从0%到百分之百三次动画所急需的年华。单位s。

3、transition-timing-function

语法:

<single-transition-timing-function> = ease | linear | ease-in | ease-out | ease-in-out | step-start | step-end | steps(<integer>[, [ start | end ] ]?) | cubic-bezier(<number>, <number>, <number>, <number>)

transition-timing-function属性指的是联网的“缓动函数”。通过那么些函数会建立一条加快度曲线,因此在全部transition变化历程中,变化速度能够穿梭变动。首要不外乎以下两种函数。

  • ease:暗中认可值,成分样式从起初状态过渡到终止景况速度由快到慢,慢慢变慢。
  • linear:意思是线性过渡,即过渡进度恒速。
  • ease-in:速度越来越快,展现加速状态,平日称为“渐显成效”。
  • ease-out:速度更是慢,展现减速状态,日常号称“渐隐效果”。
  • ease-in-out速度先加快后减速,称为“渐显渐隐效果”。

举例来说:鼠标经过问号,帮忙音信渐显渐隐。

澳门葡京 10<!doctype
html> <html> <head> <meta charset=”utf-8″>
<title>transition-demo by starof</title> <style>
#help{ width:20px; height:20px; border-radius:10px; color:#fff;
background:#000; text-align:center; position:relative; margin:50px
20px; cursor:pointer; } #help .tips{ position:absolute; width:300px;
height:100px; background:#000; top:-30px; left:35px;
border-radius:10px; opacity:0; /*渐隐效果*/ transition: opacity .8s
ease-in-out; -moz-transition: opacity .8s ease-in-out;
-webkit-transition: opacity .8s ease-in-out; } .tips:before{ content:””;
border-width:10px; border-style:solid; border-color:transparent #000
transparent transparent; position:absolute; left:-20px; top:30px; }
#help:hover .tips{ opacity:0.5; /*渐显功用*/ transition: opacity .8s
ease-in-out; -moz-transition: opacity .8s ease-in-out;
-webkit-transition: opacity .8s ease-in-out; } </style>
</head> <body> <div id=”help”> ? <div
class=”tips”>帮助音讯</div> </div> </body>
</html> View Code

澳门葡京 11

 

2D位移

函数:translate()
取值:
translate(x) : 只做x轴(横向)移动
translate(x,y) : 做x轴和y轴的位移
方向:看符号

+ 向右、向下

  • 向左、向上

    注意:

取值能够为数值或比重、负数
单向位移函数:
translateX(x) : 只做x轴移动
translateY(y) : 只做y轴移动

3、animation-timing-function

语法:

animation-timing-function:ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(<number>, <number>, <number>, <number>) [, ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(<number>, <number>, <number>, <number>)]*

animation-timing-function属性用来安装动画播放格局。详情可参看css3中变形与动画片(二)中的介绍。

4、transition-delay

transition-delay设置改变属性值后多久早先执行动画。

缩放

变更成分的尺寸
函数:scale()
取值:
3个值:表示第三个值和第三个值是相等的
2个值:第一个 x 第二个 y
单向缩放函数:
scaleX(x),scaleY(y)
取值:
默认值 为1
减弱:0-1以内的小数
放大:大于1的数值

4、animation-delay

语法:

animation-delay:<time>[,<time>]*

animation-delay定义事件触发到动画初步推行的年华,即延时。

五 、属性简写

在变更八个css属性的transition效果时,把多少个transition表明用逗号隔开分离,然后种种属性就都有独家的连片时间和机能。

Note:第多少个小时是时间长度,第3个是延时。

a{ transition: background 0.8s ease-in 0.3,color 0.6s ease-out 0.3;}

 旋转

函数:rotate()
取值:rotate(ndeg)
n : 具体角度值
n为正, 则顺时针旋转
n为负, 则逆时针转动

5、animation-iteration-count

语法:

animation-iteration-count: infinite | <number> [, infinite | <number>]*

animation-iteration-count属性用来定义动画的播报次数。

暗中认可值为1,即动画从初阶到截至只播放2次。

值为infinite,动画将会无限次播放。

③ 、贝塞尔曲线和transition 

transition的数学模型就是贝塞尔曲线,上面介绍。

曲线其实正是两点之间插值的效果,贝塞尔曲线是一种插值算法,比线性插值复杂一点。

贝塞尔曲线:起先点,终止点(也称锚点),控制点。通过调整控制点,贝塞尔曲线的样子发生变化。

k阶贝塞尔插值算法须要k+3个控制点。

一阶贝塞尔曲线(线段):意思就是从P0到P1的接连点,用来讲述一段线段。贰次贝塞尔插值正是线性插值。

澳门葡京 12

澳门葡京 13 

 二阶贝塞尔曲线(抛物线):P0-P1是曲线在P0处的切线。

澳门葡京 14

澳门葡京 15

 三阶贝塞尔曲线:

澳门葡京 16

澳门葡京 17

transition用到的便是三阶贝塞尔插值算法,如下图。

日子在0,1间距,待变换属性也认为是0,1区间。P0和P3的坐标向来是(0,0)和(1,1)。transition-timing-function属性用来鲜明P1和P2的坐标。

澳门葡京 18

ease [0, 0] [0.25, 0.1] [0.25, 1.0] [1.0,1.0]

linear [0, 0] [0.0, 0.0] [1.0, 1.0] [1.0,1.0]

ease-in [0, 0] [0.42, 0] [1.0, 1.0] [1.0,1.0]

ease-out [0, 0] [0, 0] [0.58, 1.0] [1.0,1.0]

ease-in-out [0, 0] [0.42, 0] [0.58, 1.0] [1.0,1.0]

step-start steps(1,start)

step-end steps(1,end)

cubic-bezier(x1,y1,x2,y2) [0, 0] [x1, y1] [x2, y2] [1.0,1.0]

四 、其余连锁资料

canvas画贝塞尔曲线:查看来源

澳门葡京 19<!DOCTYPE
html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“; <html
xmlns=”; <head> <meta
http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
<title>bezier demo</title> </head> <body>
<div style=”width:800px;height:600px;background-color:#fac0c0;”>
<canvas id=”cvs” width=”800″
height=”600″>骚瑞,您的浏览器不帮助canvas</canvas> </div>
<script type=”text/javascript”> var
cvs=document.getElementById(“cvs”), context=cvs.getContext(“2d”),
points=[]; function getXY(node){ var x=0, y=0; if (node.offsetParent)
{ while (node.offsetParent) { x += node.offsetLeft; y += node.offsetTop;
node = node.offsetParent; } } else { node.x && (x += node.x); node.y &&
(y += node.y); } return [x,y]; } function drawPoint(x,y,c,b) { !b &&
(b=2); context.fillStyle=c || “red”; context.fillRect(x,y,b,b); }
function bezier(points,t){ var i, n=points.length-1, x=0, y=0; function
fn(p,n,i,t){ return
arrangement(n,i)*p*Math.pow(1-t,n-i)*Math.pow(t,i); }
for(i=0;i<n+1;i++){ x+=fn(points[i][0],n,i,t);
y+=fn(points[i][1],n,i,t); } return [x,y]; } function
factorial(n){ if(isNaN(n) || n<=0 || Math.floor(n)!==n){ return 1; }
var s=1; while(n){ s*=n–; } return s; } function arrangement(n,r){
return factorial(n)/(factorial(r)*factorial(n-r)); }
cvs.addEventListener(“click”,function(event){ var i, point=getXY(this),
x=event.clientX-point[0]+(document.documentElement.scrollLeft ||
document.body.scrollLeft),
y=event.clientY-point[1]+(document.documentElement.scrollTop ||
document.body.scrollTop); points.push([x,y]);
context.clearRect(0,0,screen.width,screen.height); context.beginPath();
//points for(i=0;i<points.length;i++){
drawPoint(points[i][0],points[i][1],”blue”,4); } //bezier for (i
= 0; i < 1; i += 0.001) { drawPoint.apply(this, bezier(points,i)); }
//line if(points.length==1){
context.moveTo(points[0][0],points[0][1]); }else if
(points.length>1){ for(i=0;i<points.length;i++){
context.lineTo(points[i][0],points[i][1]); }
context.lineWidth=0.2; context.stroke(); context.closePath(); } },true);
</script> </body> </html> View Code

澳门葡京 20 

支出中可选择上边工具:

缓动函数速查表

图形工具

参考:

cubic-bezier curve.

transition-timing-function

timing-function

上面那篇文章没有规律,但足以让我们从设计师的角度去打听贝塞尔曲线。 

干货!设计师必须控制的贝塞尔曲线的潜在

 

正文我starof,因知识本身在转移,笔者也在相连学习成才,文章内容也不安时更新,为幸免误导读者,方便追根溯源,请各位转发表明出处:

css3制作动画的多少个属性:变形(transform),过渡(transition)和动画(animation)。
transform介绍过了。接下来介…

 倾斜

函数:skew()
skewx() –x轴倾斜
skewy() –y轴倾斜

6、animation-direction

语法:

animation-direction:normal | alternate [, normal | alternate]*

animation-direction设置动画播放方向。

属性:

normal:暗中认可值,若是值为normal时,动画每便循环都在此之前进播放。

alternate:奇数十次播放动画是按顺序播放各帧动画,偶数十二遍广播动画是按逆序播放各帧动画。

本条alternate依旧很有用的,笔者写了三个例证,能够感受一下alternate功力。

事例:div尺寸由小到大,然后由大到小。

澳门葡京 21<style
type=”text/css”> @-webkit-keyframes ‘testAnimationDirection’ { 0% {
width: 50px; } 20% { width: 100px; } 40% { width: 150px; } 60% { width:
200px; } 80% { width: 250px; } 100% { width: 300px; } } div{ width:
50px; height: 50px; border:1px solid red;
-webkit-animation-name:’testAnimationDirection’;
-webkit-animation-duration: 10s; -webkit-animation-timing-function:
ease-in-out; -webkit-animation-delay: 0s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
-webkit-animation-fill-mode:backwards; } </style>
<div></div> View
Code

 

过渡 

7、animation-play-state

animation-play-state用来控制成分动画的播报状态。

参数:

running:running是其暗中同意值,成效是相近于音乐播放器一样,能够由此paused将正在播放的动画片停下来,也足以通过running将中止的卡通重新播放。

Note:

那里的再次播放不自然是从成分动画的早先播放,而是从中断的尤其地点上马广播。

假如暂停了动画的播放,成分的体裁将赶回最原始设置情状。

paused:暂停止播放放。

本条很有用,让动画在鼠标悬停时暂停,离开时继续播放。

事例:还是地方的事例,加下面代码即可。

  div:hover{
      animation-play-state:paused;
  }

连接性质

作用:钦赐成分在哪些css属性上的变更会发生过渡的效益(必须的)
属性:transition-property
取值:none | all | property
eg:transition-property:background;
eg:transition-property:background,width,height;

8、animation-fill-mode

animation-fill-mode规定当动画不播放时(当动画完了时,或当动画有2个推迟未开播时),要利用的体制。

有多少个属性值:

none:默认值,动画执行前后不转移成分的其余样式。正是说动画在首先个关键帧播放以前不影响因素,最终三个重点帧播放完后终止影响因素。

forwards:动画完结后呆在最后一帧,正是保证甘休时的气象。那里的末段一帧取决于animation-direction和animation-iteration-count:

澳门葡京 22

backwards:在animation-delay时期动用第③帧。保持animation-delay,第2帧取法如下:

澳门葡京 23

both:根据animation-direction轮换使用forwards和backwards规则。

Note:forwards和backwards关键字都是有s的。

接通时间

作用:点名过渡效果在多久内形成。
注意:能够以 s | ms 为单位.该属性不可能不难,一旦省略则从未接通效果
属性:transition-duration
取值:s|ms
eg:transition-duration:5s;
eg:transition-duration:5s,1s,1s;

backwards和none的区别

要么地点的例证,只是扩张了animation-fill-mode属性。

<style type="text/css">
 @-webkit-keyframes 'wobble' {
     0% {
        margin-left: 100px;
        background: green;
     }
     40% {
        margin-left: 150px;
        background: orange;
     }
     60% {
        margin-left: 75px;
        background: blue;
     }
     100% {
        margin-left: 100px;
        background: red;
     }
  }
    div{
   width: 50px;
     height: 50px;
     margin-left: 100px;
     background: blue;
     -webkit-animation-name:'wobble';
     -webkit-animation-duration: 10s;
     -webkit-animation-timing-function: ease-in-out; 
     -webkit-animation-delay: 10s;
     -webkit-animation-iteration-count: 10;
     -webkit-animation-direction: alternate;
    /* -webkit-animation-fill-mode:none; /*动画开始为蓝色*/
     -webkit-animation-fill-mode:backwards; /*动画开始为绿色*/
  }
</style>
<div></div>

animation-fill-mode为none,则动画初始延时代间div为莲灰,backwards则动画起首延时中间div为威尼斯红。

接通时间进程曲线函数

作用:概念整个过渡效果的速率。比如 先快后慢,还是先慢后快,也许照旧匀速
属性:transition-timing-function
取值:约定义值或贝塞尔曲线
ease : 暗中同意值,慢速初始,快速变快,以慢速截至
linear:匀速
ease-in:慢速起先,加快效果
ease-out:慢速甘休(快捷早先),减速效果
ease-in-out:慢速开首和完工,中间先加后减
eg:transition-timing-function:linear;

四 、相关财富

看网上资料说做动画,尽量选拔相对化定位,从而防止重绘重排难点:

动画十四原则: 

动画片十二尺码:

css3 animation动画库,有广大基础动画

hover animation动画

css3 animation在线调节工具:

    
基于chrome的插件,能够快捷调节页面上的动画

     
腾讯isux一款尤其有力的卡通工具

   
财付通的帧动画调节工具

参考财富链接:

css3 animation动画技术

跳动心脏

w3c css3-animations

MDN animation-fill-mode

 

正文笔者starof,因知识自己在转移,小编也在相连学习成才,小说内容也不安时更新,为制止误导读者,方便追根溯源,请各位转发评释出处:

 

transform能够实现矩阵变换,transition完毕属性的平缓对接,animation意思是卡通,动漫,那几个性情才和真…

对接延迟

作用:鼓舞过渡操作后,等待多长期后才初阶进行过渡效果
属性:transition-delay
取值:以 s | ms为单位的年华
eg:transition-delay:5s;

简写过渡性质  transition

属性:transition
取值:以空格分开的值列表
property duration timing-function delay;
eg:transition:background 1s linear 0s;
transition:background 1s;
多少个连片效果:
transition : background 1s linear 0s,
color 2s linear 0s,
border-radius 3s linear 1s;

动画

卡通的详细参数去看w3c吧!

此间就提下注意的地点:

@keyframes语法:(单独写,在选择器外,style内)
@keyframes name{
from {css样式;}
percent{css样式;}
to {css样式;}
}

animation语法:(写在选择器内)
animation:name duration timing-function delay iteration-count direction;

animation-fill-mode

(ie10+)属性规定动画在播音以前或以往,其动画效果是或不是可知。

none –不改动暗中同意行为。

forwards
当动画完了后,保持最终3个属性值(在结尾4位命关天帧中定义)。

backwards –在 animation-delay
所钦赐的一段时间内,在动画显示在此之前,应用起来属性值 (在率先个重点帧中定义)。

both –向前和向后填充格局都被应用。

 说的也大抵了,直接上代码!

澳门葡京 24<!DOCTYPE
html> <html> <head> <title>css3 transition
animation nick </title> <meta charset=”utf-8″ />
<style> body{background-color:#b2b2b2;} /*2d*/ #d2{
width:500px; margin:auto; }
div[id^=’img’]{width:300px;height:300px;background-color:yellow;}
#nav{margin:10px auto;} #nav a{ padding:3px 10px; background:#666;
color:#fff; font-weight:bold; border-radius:5px; } #showImg{
width:400px; height:350px; border:1px solid #333; text-align:center;
margin-top:20px; /*争辩固定*/ position:relative; } #showImg div{
display:none; } #showImg div:target{ display:block; } #showImg
#img1:target{ display:block; /*纯属定位*/ position:absolute; top:0px;
-webkit-animation:sliderLeft 3s linear; } /*概念动画*/
@-webkit-keyframes sliderLeft{ from{ left:-350px; } to{ left:0px; } }
#showImg #img2:target{ -webkit-animation:sliderBottom 3s linear;
animation-fill-mode:forwards ; } @-webkit-keyframes sliderBottom{ from{
transform:skew(0deg,0deg); } to{ transform:skew(45deg,30deg); } }
#showImg #img3:target{ -webkit-animation:scaleIn 3s linear 0s; }
@-webkit-keyframes scaleIn { from{ transform:scale(0); } to{
transform:scale(1); } } #showImg #img4:target{
-webkit-animation:rotateScale 3s linear; } @-webkit-keyframes
rotateScale{ from{ transform:scale(0) rotate(0deg); } to{
transform:scale(1) rotate(360deg); } } /*3d*/ p{text-align:center}
#stage{ width:800px; height:500px; border-radius:50%; margin:0 auto;
border:1px solid blue; position:relative; -webkit-perspective:1200px;
/*被嵌套成分的来得格局*/ transform-style:preserve-3d;
transform:perspective(1200px) rotatex(0deg) rotatey(0deg);
background-color: #4cd964; } #stage div{ width:100px; height:100px;
line-height:100px; border-radius:50%; background:red; position:absolute;
left:350px; top:270px; text-align:center; font-size:26px;
color:yellowgreen; } #stage div:nth-child(1){ transform:rotatey(0deg)
translatez(200px); } #stage div:nth-child(2){ transform:rotatey(60deg)
translatez(200px); } #stage div:nth-child(3){ transform:rotatey(120deg)
translatez(200px); } #stage div:nth-child(4){ transform:rotatey(180deg)
translatez(200px); } #stage div:nth-child(5){ transform:rotatey(240deg)
translatez(200px); } #stage div:nth-child(6){ transform:rotatey(300deg)
translatez(200px); } @keyframes rotate3d { from{
transform:perspective(1000px) rotatex(0deg) rotatey(0deg) rotatez(0deg);
} to{ transform:perspective(1000px) rotatex(-180deg) rotatey(-180deg)
rotatez(180deg); } } #stage:hover{ animation:rotate3d 5s linear
infinite; /*animation-fill-mode:forwards ;*/ } </style>
</head> <body> <!–2d–> <div id=”d2″> <div
id=”showImg”> <div id=”img1″></div> <div
id=”img2″></div> <div id=”img3″></div> <div
id=”img4″></div> </div> <div id=”nav”> <a
href=”#img1″>2D位移动画</a> <a
href=”#img2″>2D倾斜动画</a> <a
href=”#img3″>2D缩放动画</a> <a
href=”#img4″>2D缩放旋转动画</a> </div> </div>
<!–3d–> <p>鼠标悬停预览3d效果</p> <div
id=”stage”> <div>WEB</div> <div>NICK</div>
<div>WEB</div> <div>NICK</div>
<div>WEB</div> <div>NICK</div> </div>
</body> </html> View
Code

说到底呈现下效果!

 

transition animation nick,css3transition
时光转眼即逝,又到周五了,今日写点某部分人瞧不起的css玩玩! 转换
转换属性 transform: 浏览器前缀…

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website