聊聊CSS3中的transition

W3C标准中对CSS3的transition是这样描述的:

CSS的transition允许CSS的属性值在一定的时间区间内平滑地过渡。这种效果可以在鼠标单击,获得焦点,被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值。简洁点说就是当元素从一种样式变换为另一种样式时为元素添加效果。

transition主要有***四个属性***,那这四个属性怎么记呢?变换的话总得有变换的属性名吧,知道是要哪个属性变,还得有变换的持续时间吧,持续时间里还得有变换速率吧,是先快后慢呢还是先慢后快呢;最后呢,一般动画都会有个延迟选项吧;所以就是**属性**,**时间**,**速率**,**延迟**

这四个属性中又分别有各自的属性值。

来看第一个,属性,它有三个属性值:<br />
分别是none(没有属 性改 变);all(所有属性改变)这个是默认值;indent(元素属性名);当其值为none时,transition停止执行,当指定为all 时,则元素产生all属性值在变化时都将执行transition效果,ident是可以指定元素的某一个属性值。这里ident指定的属性值有一点需要注意的是,不是所有的属性改变都会触发transition动作效果,具体有哪些CSS属性类型可以实现transition这样的持续在某一段时间内进行动画变换,W3C官方给出有列表,[这里](http://www.w3.org/TR/css3-transitions/#properties-from-css-)。

第二个时间就很好理解了,表示转换过程持续的一段时间。

第三个速率是最有意思的一个属性值了:<br />它表示在这段时间内随着时间推进属性值改变时的的变换速率。而这个属性呢有7个属性,分别是ease(逐渐变慢);linear(匀速);ease-in(加速);ease-out(减速);ease-in-out(加速然后减速);cubic-bezier(自定义时间曲线);前面6个值其实就是选取的自定义时间曲线的某一个点。CSS3中这条曲线是按照[贝塞尔曲线](http://baike.baidu.com/link?url=TPrH0xPK4dERFnDo6vGUJ9Rj2zW_yHyUoXvXb50maxU0-sb7nugcFnqUq3LKYPze7HxoHtPgvIsbW_eO69cStK)进行计算的,从百科中我们可以看到关于这条曲线的各种计算公式啊,以及通过它牵扯出来的一门学科,叫计算机矢量图形学。但在这里我们更关心的是它的意义:无论是直线或曲线都能在**数学**上予以描述。也就是我们只需要知道cubic-bezier这个属性有(x1,y1,x2,y2)这四个点,通过这四个点可以画出一条曲线,这条曲线呢,表现的就是属性值的一个变化速率,至于这条曲线背后的数学知识就不要纠结啦。说到这里,就不得不提一下chrome浏览器的在调试CSS动画时的方便了,如下图:我们可以通过上方的那个小球就能即时看到动画效果,并且拖动中间两个点来自定义速率:

最后一个延迟也很好理解,就是指延迟多少时间后再进行属性值改变

当我们想要同时改变几个属性值的时候,我们可以用all,比如

```transition: all 0.6s ease-in-out;```

可是这样的话,所有属性值的改变时间,速率,延迟都是一样的,如果想要这几个不同的属性改变时的时间,速率,延迟不一样,也可以分别指定,如:
```transition: width 0.6s ease-in-out 1s,height 0.6s ease-in-out;```

那么更关键的在于实际应用中能有什么新的体验呢?

来看网上一个火箭起飞的代码

<style type="text/css">
/* 这是初始状态 */
#outerspace {
  position: relative;
  height: 400px;
  background: #0c0440 url(/images/outerspace.jpg);
} 

div.rocket {
  position: absolute;
  bottom: 10px;
  left: 20px;
  -webkit-transition: all 3s ease-in;
  transition: all 3s ease-in;
}
div.rocket img {
  -webkit-transition: all 2s ease-in-out;
  transition: all 2s ease-in-out;
}
/* 最后状态 */
#outerspace:hover{
    backgrouond-position: -50% bottom;
}
#outerspace:hover div.rocket {
  -webkit-transform: translate(540px,-200px);
  transform: translate(540px,-200px);
}
#outerspace:hover div.rocket img {
  -webkit-transform: rotate(70deg);
  transform: rotate(70deg);
}
</style>

通过代码能看的比较清楚的描述transition的作用:过渡。通过定义初始值和最终值,如果有transition属性那么就会在到最终状态的过程中有过渡动画。这里通过定义hover时太空往左走和火箭往右走产生“飞”的感觉。

而这里transform只是定义状态而已,过渡动画是靠transition完成的,不过貌似现在animation用的比较多些。

这里```background-position:50% 50%;```可以用来定义背景图片居中,左上角是0,0;右下角是100,100;想要说的是这里的百分比定位的点是容器和容器内元素的百分比的点重合的位置,不是左上角。可看官网上的解释[background-position](http://www.w3.org/TR/css3-background/#the-background-position)

时间: 2024-10-20 20:00:46

聊聊CSS3中的transition的相关文章

css3中的transition渐变过渡属性的认识.

css3新增的属性transition可以让元素产生动画效果: 用法(兼容代码): -webkit-transition:property(属性样式) duration(过渡时间) timing-function过渡模式(5种过渡模式效果) -moz-transition:property(属性样式) duration(过渡时间) timing-function过渡模式(5种过渡模式效果) -o-transition:property(属性样式) duration(过渡时间) timing-fu

css3 中的transition和transform

我以前始终都把他搞反,或者是混淆.现在可以稍微小结下. Transition:CSS3中处理动画的一个样式:只涉及动画起始和终止两个状态.如果涉及到一个动画的各个时间或者状态,那就必须要用到的另外一个样式: Animate. Transition有四个过渡属性: transition-property /*指定动画执行的样式变化*/ transition-duration /*动画需要执行的时间*/ transition-timing-function /*平滑过渡的函数:*/ transiti

CSS3中的transition

W3C标准中对CSS3的transition是这样描述的: CSS的transition允许CSS的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击,获得焦点,被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值.简洁点说就是当元素从一种样式变换为另一种样式时为元素添加效果. transition主要有***四个属性***,那这四个属性怎么记呢?变换的话总得有变换的属性名吧,知道是要哪个属性变,还得有变换的持续时间吧,持续时间里还得有变换速率吧,是先快后慢呢还是先慢后快呢

CSS3中的Transition属性详解(贝赛尔曲线)

transition语法: 1 transition : [<'transition-property'> || <'transition-duration'> || 2 <'transition-timing-function'> || <'transition-delay'> [, [<'transition-property'> || 3 <'transition-duration'> || <'transition-ti

CSS3中的transition属性详解

一.语法 transition: property duration timing-function delay transition属性是个复合属性,她包括以下几个子属性: transition-property :规定设置过渡效果的css属性名称 transition-duration :规定完成过渡效果需要多少秒或毫秒 transition-timing-function :指定过渡函数,规定速度效果的速度曲线 transition-delay :指定开始出现的延迟时间 默认值分别为:al

CSS3 中的 transition,transform,translate 区别和作用

transform 和 translate transform指变换.变形,是css3的一个属性,和其他width,height属性一样 translate 是transform的属性值,是指元素进行2D变换,2D变换就是指,元素以当前位置(0,0)按照x轴的方向移动多少,按照y轴的方向移动多少 例如: transform:translate(0,100%) 表示从元素的当前位置延y轴方向,向下移动整个元素高度的距离 transform:translate(-20px,0) 表示从元素的当前位置

CSS3中transform,transition和animation的简介和用法示例

transform是一个属性,本质跟width,height是一样的,加上transform也就是为类增加一个变换属性. transition是一个属性,它是用来控制过渡效果的,因为用transform可以增加变换效果,而那个变换是瞬间突变,如果想让这个变化是平滑的.过渡型的,则要用transition来控制,设定要控制的属性和过渡的时间即可. animation是动画效果,要先用@keyframes定义一个动画过程,然后在类中用animation的各个参数制定想要添加的动画名称,运行时间,运行

css3中关于伪类的使用

目标: css中after伪类,last-child伪类的使用.以及部分css3的属性. 过程: 在制作导航时,经常会遇到在每一个li后面添加一个分割符号,到最后一个元素的时候,分割符就会去掉的一种效果. 如图 那么制作这样的一个效果,怎么用纯css很简单的完成了.这里用到了css的伪类. html部分 <body> <ul class="nav"> <li><a href="">Home</a></

CSS3中动画属性transform、transition和animation

Transform:变形 在网页设计中,CSS被习惯性的理解为擅长表现静态样式,动态的元素必须借助于javascript才可以实现,而CSS3的出现改变了这一思维方式.CSS3除了增加革命性的创新功能外,还提供了对动画的支持,可以用来实现旋转.缩放.平移.扭曲和过渡效果等等,这些功能再一次证明了CSS3功能的强大和无限潜能. CSS3实现元素变形的基础来源于新增的transform属性,该属性可用于实现元素的旋转.缩放.平移.扭曲等效果.目前webkit内核支持-webkit-transform