CSS3:Transition属性详解

分类:HTML5、CSS3 发表时间:2011年04月20日 字体大小:12号14号

因博客服务器瘫痪,上周的所有数据丢失。该文为恢复后补发。

暂时不做HTML5读书笔记的更新,下一篇再继续。临时性地插入CSS3新属性的详细介绍,以便可以和HTML5的知识结合起来合理应用,这样达到两者配合。

Transition属性主要是用来对某个CSS属性的变化过程进行控制,官方的介绍是”CSS Transitions allow property changes in CSS values to occur smoothly over a specified duration.“。而我个人则简单地理解为”在某个时间段内,平滑地改变某个CSS属性。“。

Transition又包含了四个子属性,分别为property、duration、timing-function、delay。下面来一一介绍,在最后会给出一个简单的实例和使用方法说明。

1. transition-property:

property针对了当前选择器的某个css属性进行设置。比如我要过渡一个背景色时,则设置property值为background。

2. transition-duration:

duration针对了过渡效果的持续时间。

3. transition-timing-function:

timing-function算是Transition属性中最为复杂的一个了。它针对了过渡效果的特效,有多种特效展示。这里得涉及到一个学术性的话题:貝茲曲線。说实话,我也没搞的太明白,但W3C给出了一张曲线图,一看就明白了(后附图)。

介绍下预留的几个特效:
ease: cubic-bezier(0.25, 0.1, 0.25, 1.0)
linear: cubic-bezier(0.0, 0.0, 1.0, 1.0)
ease-in: cubic-bezier(0.42, 0, 1.0, 1.0)
ease-out: cubic-bezier(0, 0, 0.58, 1.0)
ease-in-out: cubic-bezier(0.42, 0, 0.58, 1.0)
cubic-bezier(x1, y1, x2, y2) 为自定义,x1,x2,y1,y2的值范围在[0, 1]
其中的cubic-bezier即为貝茲曲線中的绘制方法。先来看图:图上有四点,P0-3,其中P0、P3是默认的点,对应了[0,0], [1,1]。而剩下的P1、P2两点则是我们通过cubic-bezier()自定义的。

参考阅读:
W3C: http://www.w3.org/TR/css3-transitions/#transition-timing-function_tag
貝茲曲線:http://zh.wikipedia.org/wiki/%E8%B2%9D%E8%8C%B2%E6%9B%B2%E7%B7%9A

4. transition-delay:

duration针对了过渡效果的延迟执行时间。

5. 代码演示:

1). 过渡单个属性:
1
2
3
4
transition-property:opacity;
transition-duration:2s;
transition-timing-function:ease-in;
transition-delay:0;
2). 过渡多个属性:
[1]. 上下一一对应型:
1
2
3
4
transition-property:opacity left;
transition-duration:2s, 4s;
transition-timing-function:ease-in;
transition-delay:0;

此时:opacity过渡时间为2s,left过渡时间为4s。

[2]. 循环对应型:
1
2
3
4
transition-property:opacity left width height;
transition-duration:2s, 4s;
transition-timing-function:ease-in;
transition-delay:0;

此时:opacity和width过渡时间为2s,left和height过渡时间为4s。

3). transition简写模式:
顺序为:transition-property transition-duration transition-timing-function transition-delay

1
2
3
4
/*单个属性:*/
-moz-transition:background 0.5s ease-out 0s;
/*多个属性:*/
-moz-transition:background, 0.5s ease-out 0s, color 0.4 ease-out 0s;

6. 实例展示:

请用火狐打开,暂没添加其他浏览器支持。有兴趣的可以到Demo页面,下了源代码自行添加后测试。也可以查看我的头部导航,也用到了Transition的效果。

Demo

HTML代码:

1
<a href="http://www.ihiro.org/" target="_blank">ihiro.org</a>
CSS代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<a href="http://www.ihiro.org/" target="_blank">ihiro.org</a>
a { display:block; width:160px; height:30px; line-height:30px; text-align:center; padding:10px; background:#33589f; color:#fff; text-decoration:none; text-transform:uppercase;
    /*只有当鼠标移出后才处理*/
    -moz-transition:background 0.2s linear 0s;
}
 
a:hover { background:#263c7b; color:#f60;
    text-shadow:2px 2px 10px #f00;
    /* 只有当鼠标移入时才处理
       注:若a:hover中不写transition,则会继承a中的transition */
    /*
    1. 单个属性
        -moz-transition:background 0.5s ease-out 0s;
    2. 多个属性:
       -moz-transition:background, 0.5s ease-out 0s, color 0.4 ease-out 0s;
    */
    -moz-transition:background 0.5s ease-out, color 0.4s ease-out, text-shadow 0.3s linear;
}

更多的Transition相关请阅读:http://www.w3.org/TR/css3-transitions/

不错不错,已经有 个评论!
  1. 貌似抢到了沙发······哈哈!谢谢楼主!我会刻苦学习的!

  2. 给力

    • 这是一篇数据丢失后恢复的文章,可惜了之前的近20条评论。

  3. 说的很好 学习了

  4. 楼主真是好,若是丢失了的东西,一般人不会那么好心再发过的·····呵呵!

  5. 很给力 继续加油

  6. 原创就是心血,服务器瘫痪又能怎么样?

    • 没了再发出来嘛,订阅里有记录的。

  7. 呵呵!温州团购说的是,要坚持原创!

  8. 加油

  9. 学习了,加油。不过还是建议博主做好定期备份,

    • 每周都有备份的,所以服务器一瘫痪的话,就会少了该周的记录,只能用上周的。

  10. DH

    开来博主是每周定期备份。我用了个插件,是定时发备份到邮箱。。。 以后不能用ie了,看不到效果

    • 我也是用的插件备份的,但只是备份了数据库,服务器上的文件是没有备份的。

    • DH

      文件丢失了怎么办?特别是图片?

  11. 来啦 依然是支持原创的

  12. css3属性貌似有点复杂啊

  13. 看不懂Css但来了帮你顶一下哈哈

  14. 说的很好 学习了

  15. 说的很好 学习了

  16. 看看代码在说哈

  17. 来看看 了 呵呵

  18. 看的不是很懂,只是学习了

  19. 一定是牛人

  20. 看不懂哦,来看看的

  21. 博客做起真的是不怎么容易

    希望能与博主建立讲好的关系,以后多多交流!!!

    对了,你的博客做的很好。

  22. 很详细,很实用!

  23. 加油
    博主

  24. 不错啊··牛啊

  25. 说的精辟,谢谢博主分享,辛苦了……

  26. 支持你啊楼主

  27. 我的爱好之一就是看博客,每天基本上要看100篇博客,一般是不怎么回复的,可是看到博主的文章我不得不回,我只想说一句话:“博主你的文章是我见过写的最好的了!

  28. 很全面 很详细额.!博主你辛苦了.!感谢分享.,!受教了

  29. 进来看看,感受一下再走

  30. 进来瞅瞅,顶一个

  31. 很好很专业

  32. 等待新的文章

  33. 来坐坐,随便顶一个呵呵

  34. 路过,顶一个

  35. 备份很重要啊!!!

    • 有备份,但只能是前一周的

  36. 博客很给力

  37. 说的很好,学习了,谢谢博主分享!

  38. 看的不是很懂 但一定有用·~~

  39. 想向博主咨询一下关于前端方面的东西.
    发现我对网页这些东西很感兴趣,于是我有一种想要 向这方面发展的冲动.
    想了几天了,仍然想不出一个 不要这个干的理由,
    自我感觉对 代码比较敏感 也喜欢对一些东西尝试着修修改改 看效果
    虽然不是精通,但是喜欢,
    现在已经大二结束了.不知道我现在想开始学习这方面的东西会不会迟了.?
    对最一般的html标签,最初级的css等等都知道点,都是平常胡乱鼓捣学到的.
    js嘛,原生的不是很懂,jquery了解了点,看了一本 锋利的jquery
    学过C和C++ 但是只限于教材.
    所以请博主指点一下.
    如果想要做这方面的工作,该怎么办? 合适不合适?
    我感觉我的恒心和毅力 还是过得去的.兴趣之内的东西.应该能够长久的坚持

    • 多看,多写,多折腾!!

  40. 博客的技术文章写得真不错。 在页面中没有找到联系方式,在这里冒昧申请友情链接: CSS9.NET. http://css9.net。 你的链接我已经加上。

    • 你的链接已经添加,谢谢关注。多多交流!!

  41. 看来又是一个悲剧了

  42. 希望能 全部恢复呢,真悲剧

  43. 楼主杯具了,应该及时做好备份,说到这里我的也应该去备份一下

  44. 好东西~给力啊!

  45. 嘿嘿,发现你首页的图片特效很不错

  46. 哎呀 看不懂 哈哈

  47. CSS还有这种效果?真是越来越强了

  48. jack

    博客辛苦了,很欣赏能够坚持写博客的人,把自己的知识与别人分享,我已经把贵站收藏了。希望贵站越来越好,

  49. 谢谢楼主!我会刻苦学习的!

  50. 问下博主,首页文章图片转动是怎么弄的呢?

    • CSS3的transform样式属性…

  51. 留言是种美德,写点什么

  52. logo呢

  53. 踩踩,支持支持~

  54. 厉害,受教了!

  55. 每一篇用心血灌溉出的博文,都需要受到每一位博友的关注。请关注:http://www.nbbaijie.com 家电控制板

  56. 来转转地 留脚印http://www.nblipin.net/

  57. 我是第一次来哦

  58. SEO

    恩 支持博主

  59. CSS3接触得还不多,学习了,谢谢博主的教程,很详细,阅读体验也很不错。

  60. 慢慢学习,没基础,有点看不懂

  61. 新手来学习,请多多指教。

  62. CSS3是很强大,我也接触了一些,但是国内兼容CSS3的浏览器实在是。。。
    希望web标准化能早日实现。

  63. 好久没来了,前段时间一直在忙,今天终于有时间来看下,顺祝国庆快乐,呵呵!

  64. 新手来学习一下,顶一个

  65. css3现在ie支持还是不好啊,不知道国内啥时候能普及

  66. 不错 至此已个

  67. 人人都在说css3,人人都在说html5,

  68. 好给力呀, 这篇文章。

  69. 真给力啊 学习了

  70. 你也是很久没有更新咯

  71. 挺好的学习啦

  72. 学习了,好久没有拿起CSS了。

我要评论

  • * *