JavaScript 图片3D展示空间(3DRoom)

一般的平面效果,通过改变水平和垂直坐标就能实现,再加上深度,就能在视觉上的产生3D(三维)的效果。
程序就是模拟这样一个三维空间,里面的图片会根据三维坐标显示在这个空间。
很久以前就看过一个3DRoom效果,是用复杂的计算实现的。
在上一篇图片变换研究过css3的transform之后,就想到一个更简单的方法来实现。
兼容:ie6/7/8, firefox 3.6.8, opera 10.6, safari 5.0.1, chrome 5.0
中秋将至,预祝各位中秋快乐,团团圆圆! 


效果预览



3DRoom


程序说明

【实现原理】

3D效果的关键,是深度的实现。
把3D容器看成一个由多个不同深度的层组成的空间,这些层的尺寸默认跟容器一样。
层里面放了该深度的图片,并且各个层会根据深度的变化做缩放变换,从视觉上产生深度差。
缩放变换的比例按照最近点为1,最远点为0,逐渐变化。
关键的地方是层里面图片的尺寸和坐标必须跟着层同时变换,这个通过css3的transform很简单就能实现。
这样图片只需设置好尺寸再相对层定好位就行了,避免了随深度变化要不断调整图片尺寸和定位的麻烦。


【图片加载】

在程序初始化之后,就可以调用add方法来添加图片。
add方法有两个参数:图片地址和参数对象,还会返回一个图片操作对象。
操作对象包含以下属性和方法,方便对图片进行操作:
img: 图片元素
src: 图片地址
options: 参数对象
show: 显示图片方法
remove: 移除图片方法
其中options可以设置如下属性:
属性:    默认值//说明
x:  0,//水平位移
y:  0,//垂直位移
z:  0,//深度
width: 0,//宽度
height: 0,//高度
scaleW: 1,//宽度缩放比例
scaleH: 1//高度缩放比例
其中x、y分别是水平和垂直坐标的位移参数,坐标原点在容器底部中间,水平坐标向右,纵坐标向上,单位是px。
而z是深度,用于比例的计算,方向由近点到原点。
坐标系如下图:


图片加载成功后,就会执行_load图片加载程序。
首先根据参数设置图片样式:

代码
img.style.cssText = "position:absolute;border:0;padding:0;margin:0;-ms-interpolation-mode:nearest-neighbor;"
    
+ "z-index:" + (99999 - z) + ";width:" + width + "px;height:" + height + "px;"
    
+ "left:" + (((clientWidth - width) / 2 + opt.x) / clientWidth * 100).toFixed(5+ "%;"
    
+ "top:" + ((clientHeight - height - opt.y) / clientHeight * 100).toFixed(5+ "%;";

绝对定位是必须的,宽度和高度根据参数设置就行。
left和top根据坐标参数计算,这里需要用百分比的形式表示,后面再详细说明。
还要给图片增加一个_z属性记录深度,方便调用。
最后插入对应z的层,并重新显示该层。


【层变换】

图片加载后,会用_insertLayer程序把图片插入到对应的层中。
_insertLayer有两个参数:图片元素和z深度。
程序用_layers对象,以z为关键字记录对应的层元素。
如果在该深度还没有创建层,会自动创建一个:

代码
layer = document.createElement("div");
layer.style.cssText 
= "position:absolute;border:0;padding:0;margin:0;left:0;top:0;visibility:hidden;background:transparent;width:" + this._clientWidth + "px;height:" + this._clientHeight + "px;";

层的坐标和尺寸要跟容器一致,因为插入图片的坐标是相对容器来定义的,这样使用起来比较方便。
还会添加一个_count属性,记录层包含的图片数,最后插入到容器并记录到_layers对象中。
获取层对象后,就把图片插入层中,并把_count计数加1。

接着就可以通过_showLayer程序根据深度显示对应的层。
程序包含三个坐标属性:_x、_y、_z,表示容器的三维坐标的偏移量。
首先通过_getScale获取比例方法得到z深度的缩放比例scale。
比例大于1,说明图片在视觉深度的后面,理论上应该看不到,所以隐藏;小于0,就是小到看不到了也隐藏。

而_x和_y偏移量也需要根据深度来重新计算,程序有两种偏移方式:远点固定和近点固定。
远点固定的意思是平面位移偏移量随着深度逐渐变小,产生以最远点为固定点移动方向的效果,近点固定就刚好相反。
要实现这个效果,只要位移偏移量也跟着比例变化就行了,即远点固定时偏移量跟比例成正比,远点固定时是反比:

var moveScale = this.fixedFar ? scale : (1 - scale);


然后把这些参数交给_show程序来处理,并显示效果。

为了最大限度地利用层元素,程序会在_remove图片移除程序中,把没有图片的层放到_invalid废弃层集合中,在需要插入层时,优先从_invalid中获取。


【缩放比例】

上面已经说了,缩放比例应该按照最近点为1,最远点为0,逐渐变化。
程序默认是通过下面的公式计算:

function(z){ return 1 - z / 1000; }

但用这个公式实现3DRoom效果的时候,会发现比例变化太急速,并不像这个3DRoom那样平稳。

研究代码后发现,原来它用的公式是这样的:

this.r = FL / (FL + (z * Z));

其中FL和Z是一个常量来的,即公式可表示成:

function(z){ return 1/(1+z/常量); }

那按照这个公式,深度为0时比例为1,深度为常量时比例为0.5,深度为无穷大时比例为0。

变化效果可以参考下面程序:

公式:


可以看出,缩放比例在默认公式是均匀变化的,而3DRoom公式是先快后慢,而且是逐渐变慢,所以有那种平稳的感觉。
那按照实际,还可以自己设计适合的公式,只要符合在1到0之间变化就行。


【css3模式】

程序中有三种缩放变换方式:css3、zoom和base,模式的程序结构跟上一篇类似。
缩放变换的目的是根据传递过来的比例和位置偏移量,把缩放效果显示出来,实现最终的3D效果。

css3模式使用的是css3的transform,在上一篇已经介绍过用transform的matrix做缩放和旋转,这次还需要后面两个参数做位置变换。
后面两个参数要注意单位的设置,在MDC的-moz-transform有说明:
Gecko (Firefox) accepts a <length> value for tx and ty.
Safari (WebKit) and Opera currently support a unitless <number> for tx and ty.
意思是位移参数tx和ty,在Firefox需要带单位,而WebKit和Opera只需要数字(不带单位,默认px)。
程序会根据浏览器设置单位。

使用css3模式,还可以通过修改_r弧度属性进行旋转。
最后设置matrix实现变换:

代码
layer.style[ css3Transform ] = "matrix("
    
+ ( Cos * scale).toFixed(5+ "," + (Sin * scale).toFixed(5+ ","
    
+ (-Sin * scale).toFixed(5+ "," + (Cos * scale).toFixed(5+ ""
    
+ Math.round(x) + unit + "" + Math.round(y) + unit + ")";


这里还要注意一个问题,计算得到的比例可能是一个很长的小数,在拼字符时会出问题。
例如执行:alert(0.0000001),会得到“1e-7”,js会用这个结果来拼字符,得到错误的结果。
所以在做数字和字符的拼接时,能用整数的应该先转成整数,小数的话也要用toFixed转换一下。


【zoom模式】

ie还不支持transform,但有一个zoom样式能实现类似的效果。
由于zoom后,尺寸会发生变化,所以需要修正left和top移动到正确的位置。

除了ie,webkit(chrome/safari)也支持zoom,不过ie6/7、ie8和webkit的实现并不完全相同。
测试以下代码:

代码
<style>
.inner
{ width:100px; height:100px; position:absolute; background:#0CF; zoom:0.5; top:50px; left:50px;}
.inner div
{ width:50px; height:50px;position:absolute; left:25px;background:#CCC;}
</style>
<div style="width:150px;height:150px; border:1px solid #000; position:relative;">
<div class="inner" id="t"><div>test</div></div>
</div>

在ie6/7实现了想要的效果,但在webkit显示的位置错了。
原因是使用zoom后,元素的left和top也会随着缩放,那只要按比例重新计算就行。
像上面的例子,只要把left和top改成50/0.5,即100就正确了。

ie8就更麻烦,里面的内容是按zoom缩放了,但left和top还是原来的大小。
被这个问题困扰了很久,最后发现通过用百分比定位就可以解决,在图片加载时left和top要用百分比就是这个原因。
例如在例子中,修正left和top,并把最里面的div的left改成25%就可以了。
在ie8还看到一个问题,在zoom后,内容是缩小了,容器和内部元素的尺寸却没有变化,还好这不会影响到图片的显示,定位也要用left和top,免得麻烦。
还有,如果zoom的元素的尺寸用百分比设置,那元素的尺寸就不会根据zoom缩放了。

在计算时还要注意一个问题,上面提到在webkit和ie8,left和top都需要除以scale来修正,当scale接近0到一定程度,结果会变成Infinity(无穷大)。
用Infinity进行运算会出错,需要修正这个问题:

left = Math.min(MAX, Math.max( -MAX, left )) | 0;
top 
= Math.min(MAX, Math.max( -MAX, top )) | 0;

其中MAX是Number.MAX_VALUE(js能表达的最大数)。


【base模式】

还有兼容全部浏览器的base模式,用的是传统的方法,即根据缩放比例,计算并设置每个图片的尺寸和位置。
每次显示时,历遍层里面的图片,再逐个计算设置。
计算需要图片的原始位置和尺寸,在第一次计算时会把数据保存在_original属性中:

var original = img._original = img._original || {
    width: img.offsetWidth,    height: img.offsetHeight,
    left: img.offsetLeft,     top: img.offsetTop
};

尺寸只要根据比例缩放就行,位置除了计算相对层的缩放还要加上相对容器的位移,这个跟zoom模式的计算是一样的。
理解了层变换的方式后,再理解这个就不难了。


【zIndex】

深度除了要缩放和定位,还需要合理的前后遮盖。
前后遮盖需要用zIndex来实现,可以在图片或层上设置。
首先最简单的方法是在层上设置:

代码
<style>
div,img{width:200px;height:200px;position:absolute;left:
0;top:0;}
img{width:150px;height:150px;}
</style>
<div style="z-index:300;">
    
<img style="background:#0C9;" alt="300" onclick="alert(300)">
</div>
<div style="z-index:100;">
    
<img style="background:#396;left:50px;top:50px;" alt="100" onclick="alert(100)">
</div>

实现一般的3D效果可以这样设置。
但点击测试,在ff和webkit前面的能触发后面的不能触发,而ie和opera就前后都可以触发。
ps:如果img换成div,那么ie和opera后面的元素也不能触发,原因还不清楚。
这样要想像3DRoom那样触发图片事件的话就不能在层设置zIndex。

还可以在图片上设置:

代码
<style>
div,img{width:200px;height:200px;position:absolute;left:
0;top:0;}
img{width:150px;height:150px;}
</style>
<div>
    
<img style="background:#0C9;z-index:300;" alt="300" onclick="alert(300)">
</div>
<div>
    
<img style="background:#396;left:50px;top:50px;z-index:100;" alt="100" onclick="alert(100)">
</div>

这样图片在所有浏览器都能正常触发,但在ie6/7层叠的效果失效了,看来在ie6/7只能在层用zIndex。
还有一个问题,如果给div加上变换效果:

div{-moz-transform:scale(1);-webkit-transform:scale(1);-o-transform:scale(1);}

那图片上的zIndex就会失效,那css3模式就只能在层设置zIndex了。

总结一下:
在css3模式肯定要在层设置zIndex,但图片也不能触发事件。
在zoom和base模式,应该在图片设置zIndex,但在ie6/7就要在层设置。
这样至少在base模式层叠和图片触发事件都是正常的。


【msInterpolationMode】

开始做的时候,效果在ie8下会很卡,但这个3DRoom却不会卡,最后发现是使用了-ms-interpolation-mode。
这个东西在aoao的文章中看过,但没想到可以用在这里。

在MSDN有msInterpolationMode的介绍:
Gets or sets the interpolation (resampling) method used to stretch images.
即获取或设置用于拉伸图像的插值(重采样)方法。
它有两个值:
nearest-neighbor:使用近邻插值模式。
bicubic:使用高品质的双三次插值模式。
这些名词比较专业,我们只要知道使用nearest-neighbor效率高但效果差,而bicubic效果好效率低就够了。
程序把它设为nearest-neighbor提高效率,这样在ie8中也不会卡了。


【拖动方向变换/滚轮深度变换】

程序扩展了拖动视觉变换和滚轮深度变换。
拖动和滚动的做法跟上一个的做法差不多,这里拖动是实现方向的变换,滚轮是实现深度的变换。
移动是通过修改_x和_y属性来实现,缩放是通过修改_z来实现。
修改属性之后再调用show方法显示效果。


使用技巧

【3DRoom】

在3DRoom效果中,因为要实现图片的触发事件,所以不能用css3模式,原因是上面提到的层叠问题。
上面也提到在ie8被zoom的元素尺寸不会改变,导致触发范围错误,所以也不用zoom模式。
使用base模式就不会有问题了。

在点击图片时,视觉会移动到图片上面,这个通过点击图片后根据本身的三维参数修改_x/_y/_z来实现:

img.onclick = function(){
    i3D._z 
= -options.z | 0;
    i3D._x 
= -options.x | 0;
    i3D._y 
= options.y | 0;
    i3D.show();
}


图片在mouseover时会显示一个边框,为了让图片加边框后不发生位移,加了一个"-1px"的margin,mouseout时再去掉。
这里3DRoom跟参考的效果还是有差距,本文主要还是对3D效果的实现和研究。

【模式选择】

css3模式稳定,大部分浏览器都支持,除了ie。
zoom模式兼容性不好,但ie支持。
base最慢,但兼容性好,而且没有bug。
一般情况下应优先使用css3模式,然后是zoom,最后base,但像3DRoom那样的情况就要按实际选择了。
设计的时候,ie是打算用Matrix滤镜的,但开发中发现一些问题,效率又太低,就不考虑了。


使用说明

实例化时,必须有容器作为参数:

var i3D = new Image3D( container, options );

然后调用i3D方法添加图片:

i3D.add( src, options );


可选参数用来设置系统的默认属性,包括:
属性:     默认值//说明
mode:  "css3|zoom|base",//模式
x:   0,//水平偏移值
y:   0,//垂直偏移值
z:   0,//深度偏移值
r:   0,//旋转角度(css3支持)
fixedFar: false,//是否远点固定
getScale: function(z){ return 1 - z / 1000; },//获取比例方法
onError: function(err){}//出错时执行

add方法的可选参数在图片加载中已经说明。

还提供了以下方法:
add:添加图片;
show:显示效果;
reset:重置默认状态;
dispose:销毁程序。

加入拖动方向变换或滚轮深度变换扩展后,可通过设置相关参数定义变换范围。


完整实例下载

 

转载请注明出处:http://www.cnblogs.com/cloudgamer/

如有任何建议或疑问,欢迎留言讨论。

如果觉得文章不错的话,欢迎点一下右下角的推荐。

程序中包含的js工具库CJL.0.1.min.js,原文在这里

posted @ 2010-09-20 08:48 cloudgamer 阅读(37548) 评论(130) 编辑 收藏

评论共2页: 上一页 1 2 
 回复 引用 查看   
#31楼 2010-09-20 11:25 HiLoveS      
很好很强大,鼠标滚轮也可以用。
 回复 引用 查看   
#32楼 2010-09-20 11:29 zhangle      
专门来膜拜的,学习
 回复 引用 查看   
#33楼 2010-09-20 11:33 starwar3      
牛人,以前也看到过JS 的3D图
 回复 引用 查看   
#34楼 2010-09-20 11:42 《小YY》      
房间 放大 电视机里亮了。。。。哈哈
 回复 引用 查看   
#35楼[楼主] 2010-09-20 11:47 cloudgamer      
@《小YY》
@starwar3
@zhangle
@HiLoveS
谢谢支持

 回复 引用 查看   
#36楼 2010-09-20 11:50 LiecoLin      
好厉害
 回复 引用 查看   
#37楼 2010-09-20 12:03 湖南人      
太强了,可是不知道这种复杂的效果用Javascript 来实现效率和速度怎样?不知道楼主会不会Flash,如果会的话用Flash来做效果可能会更好。不知道楼主在哪工作?俺关照你很久了,来我们公司吧,呵呵。
 回复 引用 查看   
#38楼 2010-09-20 12:15 Yao,Mane      
很好,很强大
 回复 引用 查看   
#39楼 2010-09-20 13:38 空明流转      
IBR?
 回复 引用 查看   
#40楼 2010-09-20 13:56 永恒之☆      
强大,鉴定完毕
 回复 引用   
#41楼 2010-09-20 14:27 stubborn0504[未注册用户]
suprise

 回复 引用 查看   
#42楼[楼主] 2010-09-20 14:30 cloudgamer      
@空明流转
@stubborn0504
@永恒之☆
@Yao,Mane
@LiecoLin
谢谢支持

 回复 引用 查看   
#43楼 2010-09-20 14:30 Alan@Net      
强悍的网页3D哥
 回复 引用 查看   
#44楼[楼主] 2010-09-20 14:31 cloudgamer      
@湖南人
效率还是看浏览器吧
ie不优化的话肯定比较慢了
flash来做肯定更好了不过我不懂

 回复 引用 查看   
#45楼[楼主] 2010-09-20 14:32 cloudgamer      
@Alan@Net
顶多是伪3D
呵呵

 回复 引用 查看   
#46楼 2010-09-20 15:11 alex hu      
楼主是做什么工作的?
 回复 引用 查看   
#47楼 2010-09-20 15:14 〖六六S〗      
I服了U,楼主太强了。
 回复 引用 查看   
#48楼 2010-09-20 16:48 囧月      
又帅又强大~
 回复 引用 查看   
#49楼[楼主] 2010-09-20 17:10 cloudgamer      
@〖六六S〗
@囧月
谢谢支持

 回复 引用 查看   
#50楼[楼主] 2010-09-20 17:10 cloudgamer      
@alex hu
做网站的

 回复 引用   
#51楼 2010-09-20 17:13 ghost--gift[未注册用户]
我觉得很一般, 任何懂标准3D流水线的人都能做出这个效果
 回复 引用 查看   
#52楼[楼主] 2010-09-20 17:18 cloudgamer      
@ghost--gift
标准3D流水线 是啥

 回复 引用 查看   
#53楼 2010-09-20 17:27 染色      
富有想象力啊,厉害赞个
冲这么好的东东,得帮助点广告,哈哈



 回复 引用 查看   
#54楼 2010-09-20 17:50 czjone      
我只想说,你太强了。我一定会看完,很有启发的东西
 回复 引用 查看   
#55楼 2010-09-20 21:28 huawu      
留名留名哈...
 回复 引用 查看   
#56楼 2010-09-20 22:00 ☆大森林☆      
神奇的...WEB吧, 神奇的人!
 回复 引用 查看   
#57楼[楼主] 2010-09-20 22:28 cloudgamer      
@☆大森林☆
@huawu
@czjone
@染色
谢谢支持

 回复 引用   
#58楼 2010-09-20 23:40 染色体[未注册用户]
震惊!太厉害了
 回复 引用 查看   
#59楼 2010-09-21 09:14 版主      
非常强悍啊,技术牛人,每次看你的都看不懂,不知您在哪儿工作?
 回复 引用   
#60楼 2010-09-21 11:59 web前端寒风[未注册用户]
太强了,好好研究一下,呵呵。多谢分享
 回复 引用 查看   
#61楼 2010-09-21 13:00 三桂      
有用楼主的实例到实际项目中,向楼主学习...
 回复 引用 查看   
#62楼[楼主] 2010-09-21 13:48 cloudgamer      
@染色体
@web前端寒风
@三桂
谢谢支持

 回复 引用 查看   
#63楼[楼主] 2010-09-21 13:48 cloudgamer      
@版主
在顺德呢

 回复 引用 查看   
#64楼 2010-09-21 14:13 xoo      
楼主 ..太牛X了...要是能出个视频教程就好了..
 回复 引用 查看   
#65楼 2010-09-21 15:50 Gil      
@cloudgamer
在顺德哪家公司工作?我也是顺德人~

 回复 引用 查看   
#66楼 2010-09-21 16:32 王洪剑      
太厉害了!!!
Orz

 回复 引用   
#67楼 2010-09-21 16:42 ccyingfu[未注册用户]
真是神一样人物啊.太强大了.牛!
 回复 引用 查看   
#68楼 2010-09-21 17:26 tq0855n      
特来膜拜牛人,感谢楼主无私的奉献。
最近把楼主的
A“JavaScript 图片上传预览效果” + B“图片切割系统”
合成后做了一个图片上传裁剪的东东,感觉很酷很实用(没有旋转和翻转功能)。
但是能力所限,无法把
C“图片(旋转/缩放/翻转)变换效果(ccs3/滤镜/canvas)”也合成。
楼主能否把这三个功能整合一下啊, 这样的话,在图片上传处理上面,就完全可以和flash媲美了。

 回复 引用 查看   
#69楼[楼主] 2010-09-21 17:31 cloudgamer      
@xoo
视频就不用了吧

 回复 引用 查看   
#70楼[楼主] 2010-09-21 17:31 cloudgamer      
@Gil
不出名的
说也不知道
你在哪工作呢

 回复 引用 查看   
#71楼[楼主] 2010-09-21 17:32 cloudgamer      
@ccyingfu
@王洪剑
谢谢支持

 回复 引用 查看   
#72楼[楼主] 2010-09-21 17:33 cloudgamer      
@tq0855n
理论上是可以
不过做起来估计比较复杂
有空可以试试

 回复 引用 查看   
#73楼 2010-09-21 17:40 tq0855n      
没想到楼主这么快就回复了,呵呵,楼主真大好人啊
看到楼主的作品,感觉自己好卑微
中秋节马上到了,祝福楼主及家人身体健康,万事如意!

 回复 引用 查看   
#74楼[楼主] 2010-09-21 17:45 cloudgamer      
@tq0855n
呵呵
谢谢
互相学习

 回复 引用 查看   
#75楼 2010-09-25 09:37 Gil      
不出名我也可能知道啊,哈哈
我以前也在顺德工作过,现在在珠海

 回复 引用 查看   
#76楼[楼主] 2010-09-25 10:59 cloudgamer      
@Gil

珠海不错呢

 回复 引用   
#77楼 2010-09-25 14:41 刘乐大哥[未注册用户]
高手啊!
 回复 引用 查看   
#78楼 2010-09-25 15:08 jelle      
很久没见你更新文章。我记得节前还来你博客了。没见到新文章。
今天逛博客园,偶然看到推荐文章有JS 就点进来了。开始没注意是谁的博客。看了一会,博客园有如此牛人JS,看下名字呵呵原来是你的大作。向你学习。

 回复 引用   
#79楼 2010-09-26 16:58 VB精品教程[未注册用户]
太强大了!
 回复 引用 查看   
#80楼[楼主] 2010-09-26 17:55 cloudgamer      
@刘乐大哥
@jelle
@VB精品教程
谢谢支持
这篇貌似节前就发了
呵呵

 回复 引用   
#81楼 2010-09-26 22:23 长沙团购网[未注册用户]
这个技术还可以,得好好学习下.
 回复 引用   
#82楼 2010-09-26 22:34 追随者[未注册用户]
前来膜拜
 回复 引用 查看   
#83楼 2010-09-27 08:36 阿宝QQ      
绝对的高手呀
 回复 引用 查看   
#84楼[楼主] 2010-09-27 09:03 cloudgamer      
@阿宝QQ
@追随者
@长沙团购网
谢谢支持

 回复 引用 查看   
#85楼 2010-09-27 11:05 大肚小男人      
太强大了!
 回复 引用   
#86楼 2010-09-27 18:24 youke34567[未注册用户]
nba
 回复 引用 查看   
#87楼 2010-09-28 11:18 冷冷的風      
挺实用的效果。
楼主是那位在顺德的蓝色理想的那位版主吧?

 回复 引用 查看   
#88楼[楼主] 2010-09-28 11:59 cloudgamer      
@youke34567
@大肚小男人
谢谢支持

 回复 引用 查看   
#89楼[楼主] 2010-09-28 11:59 cloudgamer      
@冷冷的風
是的

 回复 引用   
#90楼 2010-10-02 01:10 pengpengpeng[未注册用户]
lz很牛啊

刚才帮你测试了下,在ie9下面的效果不是很好,明显不如谷歌浏览器。。。

其他具体的,明天再说吧,有空具体测试完了,再回来膜拜lz大神的。

我只用这两个浏览器,火狐被我抛弃了,所以只能测试两个咯~

 回复 引用 查看   
#91楼[楼主] 2010-10-02 13:29 cloudgamer      
@pengpengpeng
ie9还没测试过

 回复 引用   
#92楼 2010-10-02 18:24 冷Z[未注册用户]
膜拜
JS能做出这种效果

 回复 引用   
#93楼 2010-10-04 01:19 jebe7282[未注册用户]
牛啊。。。。
 回复 引用 查看   
#94楼 2010-10-05 15:24 s似水流年      
好强大啊。。。
 回复 引用 查看   
#95楼[楼主] 2010-10-07 21:50 cloudgamer      
@s似水流年
@jebe7282
@冷Z
谢谢支持

 回复 引用   
#96楼 2010-10-09 14:37 adengliuqing[未注册用户]
好强大!
 回复 引用 查看   
#97楼 2010-10-11 14:01 aixuexi      
膜拜 很好很强大
 回复 引用 查看   
#98楼 2010-10-21 23:28 D.Ulong      
强大,强大,好强大
 回复 引用 查看   
#99楼[楼主] 2010-10-22 01:10 cloudgamer      
@adengliuqing
@aixuexi
@D.Ulong
谢谢支持

 回复 引用   
#100楼 2010-10-27 10:28 vai[未注册用户]
呵呵 这个在html5-css3那个抄袭站看过类似的效果
才做JS半年,也仅仅弄明白了JS的面相对象,勉强能封装一些JQUERY插件
水平还是赶不上LZ啊,有空可能要打搅LZ了

 回复 引用 查看   
#101楼[楼主] 2010-10-27 11:17 cloudgamer      
@vai
欢迎技术讨论

 回复 引用   
#102楼 2010-11-05 10:03 风羽[未注册用户]
有意思,不错!!!
 回复 引用   
#103楼 2010-11-12 19:56 zbjuke[未注册用户]
佩服啊
 回复 引用 查看   
#104楼 2010-11-13 11:58 孑然      
膜拜LZ,顶....
 回复 引用 查看   
#105楼[楼主] 2010-11-18 15:56 cloudgamer      
@孑然
@zbjuke
@风羽
谢谢支持

 回复 引用   
#106楼 2010-12-31 14:43 sjolzy[未注册用户]
一如既往的精彩!
 回复 引用 查看   
#107楼 2011-01-06 02:09 饭桶来了      
我特意注册了号来膜拜下呵呵 好强大
 回复 引用   
#108楼 2011-02-21 12:37 杨坚[未注册用户]
我想拜师。加个Q:454389701
 回复 引用 查看   
#109楼[楼主] 2011-02-21 14:38 cloudgamer      
@sjolzy
@饭桶来了
@杨坚
谢谢支持

 回复 引用 查看   
#110楼 2011-03-05 02:09 愚公-      
楼主对于css3的transform理解的真透彻
 回复 引用 查看   
#111楼[楼主] 2011-03-05 10:02 cloudgamer      
@愚公-
我那时也是刚接触 边学边用而已

 回复 引用   
#112楼 2011-03-29 16:24 anda[未注册用户]
好强悍啊
 回复 引用 查看   
#113楼 2011-03-30 10:49 blueturtle      
先膜拜下楼主,楼主的精神让人尊敬。
有个小小的问题请教楼主。
第一个3D效果在firefox4中的效果不太理想。
我是最近才发现地。特地注册个号告诉您^_^

 回复 引用 查看   
#114楼[楼主] 2011-03-30 11:20 cloudgamer      
@anda
谢谢支持

 回复 引用 查看   
#115楼[楼主] 2011-03-30 11:20 cloudgamer      
@blueturtle
ff4我还没用上

 回复 引用   
#116楼 2011-04-27 18:19 xuzhouweb[未注册用户]
做3D编程有前途。
 回复 引用 查看   
#117楼 2011-05-05 11:12 彩色code      
牛的乱七八糟的! 崩溃中……
 回复 引用 查看   
#118楼 2011-05-06 11:14 飞帆      
真厉害!顶了
 回复 引用 查看   
#119楼 2011-05-08 21:34 ouis王浩      
专门注册了个号来顶楼主、、、、严重崇拜楼主
 回复 引用 查看   
#120楼[楼主] 2011-05-09 16:56 cloudgamer      
@ouis王浩
@飞帆
@彩色code
@xuzhouweb
谢谢支持

 回复 引用 查看   
#121楼 2011-06-02 11:26 Gross      
牛!!!
 回复 引用 查看   
#122楼 2011-06-17 23:32 方渊      
牛!!!!
 回复 引用   
#123楼 2011-07-09 21:51 olives[未注册用户]
偶像...
 回复 引用 查看   
#124楼 2011-08-19 14:44 毛豆皮      
太牛了!偶像啊!
 回复 引用 查看   
#125楼 2011-08-23 16:12 尤华夏      
楼主在微软(中国)工作吧!
......

 回复 引用 查看   
#126楼 2011-10-31 22:28 eagle031gold      
好厉害!
 回复 引用 查看   
#127楼 2011-11-15 13:48 杨永鹏      
大师
 回复 引用 查看   
#128楼 2011-12-13 13:37 成长中      
现在每天必做的事情就是来楼主这看看 希望楼主能坚持给
我们这些菜鸟们学习途径 支持!

 回复 引用   
#129楼 2012-01-04 13:54 xur[未注册用户]
太强了。。。。
 回复 引用 查看   
#130楼 2012-02-01 09:22 czjone      
标题党,这也能算3d?就是一个简单的比例移动就能实现了~还3d?不过web的编程能力还是很强的~
评论共2页: 上一页 1 2 
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1831460 qIjPK4Gz63c=