基于css的3d和动画


demo地址:http://www.adanghome.com/js_demo/42/

======================================================


不得不再次感叹下css3的强大!动画、3d居然全都用描述性语言css给描述出来了。。。一行js也不用写。


一些3d相关的概念,之前在看css3的3d api设计时,看不太明白。这几天试玩了下three.js,了解了3d图形学的一些基本概念,然后就豁然开朗了。


另外,再感叹下css3的动画处理,无论逐帧动画,还是补间动画,顺序播放、逆序播放、交叉播放,播放次数,播放延迟,还是播放加速度,什么都可以简单地通过描述给描述出来。想起flash的ide、想起js写的动画组件。。。


再次膜拜下css的属性设计者们,你们真的是天才。


需要注意的是:


1)css的语法其实底层是矩阵变化,不同的元素可以设置不同的景深!这和threejs那种全局只能设置一个摄像头完全不同。也就是说,如果需要的话,每个元素的3d效果都可以单独设置,并不需要全局共用同一个影深。而css的这些语法不过是让使用者们更容易理想,相当于为开发者们封了一个3d矩阵变化的css语法糖。


2)默认情况下,影深的观察点是元素的中心位置,如果元素没有设置固定宽高,那么动态为父容器添加一个子元素,为让父容器的宽高产生变化,也就影响了之前元素的3d效果。所以可以为父元素设置一个固定宽高,或者将观察点设为左、上。


3)父容器设置了景深,子元素也设置了景深,两者会效果叠加,而不是覆盖。


posted on 2014-04-04 13:45  真阿当  阅读(123)  评论(0编辑  收藏  举报