首页 > 其他 > 详细

三维立体图片效果

时间:2014-01-21 16:37:06      阅读:398      评论:0      收藏:0      [点我收藏+]

bubuko.com,布布扣<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
bubuko.com,布布扣
<html>
bubuko.com,布布扣
<head>
bubuko.com,布布扣
<title>三维立体-图片相册效果</title>
bubuko.com,布布扣
<style type="text/css">
bubuko.com,布布扣    html
{
bubuko.com,布布扣        overflow
: hidden;
bubuko.com,布布扣   
}

bubuko.com,布布扣    body
{
bubuko.com,布布扣        position
: absolute;
bubuko.com,布布扣        margin
: 0px;
bubuko.com,布布扣        padding
: 0px;
bubuko.com,布布扣        background
: #111;
bubuko.com,布布扣        width
: 100%;
bubuko.com,布布扣        height
: 100%;
bubuko.com,布布扣   
}

bubuko.com,布布扣    #screen
{
bubuko.com,布布扣        position
: absolute;
bubuko.com,布布扣        left
: 10%;
bubuko.com,布布扣        top
: 10%;
bubuko.com,布布扣        width
: 80%;
bubuko.com,布布扣        height
: 80%;
bubuko.com,布布扣        background
: #000;
bubuko.com,布布扣   
}

bubuko.com,布布扣    #screen img
{
bubuko.com,布布扣        position
: absolute;
bubuko.com,布布扣        cursor
: pointer;
bubuko.com,布布扣        visibility
: hidden;
bubuko.com,布布扣        width
: 0px;
bubuko.com,布布扣        height
: 0px;
bubuko.com,布布扣   
}

bubuko.com,布布扣    #screen .tvover
{
bubuko.com,布布扣        border
: solid #876;
bubuko.com,布布扣        opacity
: 1;
bubuko.com,布布扣        filter
: alpha(opacity=100);
bubuko.com,布布扣   
}

bubuko.com,布布扣    #screen .tvout
{
bubuko.com,布布扣        border
: solid #fff;
bubuko.com,布布扣        opacity
: 0.7;
bubuko.com,布布扣   
}

bubuko.com,布布扣    #bankImages
{
bubuko.com,布布扣        display
: none;
bubuko.com,布布扣   
}

bubuko.com,布布扣
</style>
bubuko.com,布布扣
<script type="text/javascript">
bubuko.com,布布扣
var Library ={};
bubuko.com,布布扣Library.ease
=function () {
bubuko.com,布布扣   
this.target =0;
bubuko.com,布布扣   
this.position =0;
bubuko.com,布布扣   
this.move =function (target, speed)
bubuko.com,布布扣   
{
bubuko.com,布布扣       
this.position += (target -this.position) * speed;
bubuko.com,布布扣    }

bubuko.com,布布扣}

bubuko.com,布布扣
var tv ={
bubuko.com,布布扣    O : [],
bubuko.com,布布扣    screen :
{},
bubuko.com,布布扣    grid :
{
bubuko.com,布布扣        size       :
4
bubuko.com,布布扣        borderSize :
6
bubuko.com,布布扣        zoomed     :
false
bubuko.com,布布扣    }
,
bubuko.com,布布扣    angle :
{
bubuko.com,布布扣        x :
new Library.ease(),
bubuko.com,布布扣        y :
new Library.ease()
bubuko.com,布布扣    }
,
bubuko.com,布布扣    camera :
{
bubuko.com,布布扣        x    :
new Library.ease(),
bubuko.com,布布扣        y    :
new Library.ease(),
bubuko.com,布布扣        zoom :
new Library.ease(),
bubuko.com,布布扣        focalLength :
750
bubuko.com,布布扣    }
,
bubuko.com,布布扣    init :
function ()
bubuko.com,布布扣   
{
bubuko.com,布布扣       
this.screen.obj = document.getElementById(screen);
bubuko.com,布布扣       
var img = document.getElementById(bankImages).getElementsByTagName(img);
bubuko.com,布布扣       
this.screen.obj.onselectstart =function () { returnfalse; }
bubuko.com,布布扣       
this.screen.obj.ondrag        =function () { returnfalse; }
bubuko.com,布布扣       
var ni =0;
bubuko.com,布布扣       
var n = (tv.grid.size /2) - .5;
bubuko.com,布布扣       
for (var y =-n; y <= n; y++)
bubuko.com,布布扣       
{
bubuko.com,布布扣           
for (var x =-n; x <= n; x++)
bubuko.com,布布扣           
{
bubuko.com,布布扣               
var o = document.createElement(img);
bubuko.com,布布扣               
var i = img[(ni++) % img.length];
bubuko.com,布布扣                o.className
=tvout;
bubuko.com,布布扣                o.src
= i.src;
bubuko.com,布布扣                tv.screen.obj.appendChild(o);
bubuko.com,布布扣                o.point3D
={
bubuko.com,布布扣                    x  : x,
bubuko.com,布布扣                    y  : y,
bubuko.com,布布扣                    z  :
new Library.ease()
bubuko.com,布布扣                }
;
bubuko.com,布布扣                o.point2D
={};
bubuko.com,布布扣                o.ratioImage
=1;
bubuko.com,布布扣                tv.O.push(o);
bubuko.com,布布扣                o.onmouseover
=function ()
bubuko.com,布布扣               
{
bubuko.com,布布扣                   
if (!tv.grid.zoomed)
bubuko.com,布布扣                   
{
bubuko.com,布布扣                       
if (tv.o)
bubuko.com,布布扣                       
{
bubuko.com,布布扣                            tv.o.point3D.z.target
=0;
bubuko.com,布布扣                            tv.o.className
=tvout;
bubuko.com,布布扣                        }

bubuko.com,布布扣                       
this.className =tvover;
bubuko.com,布布扣                       
this.point3D.z.target =-.5;
bubuko.com,布布扣                        tv.o
=this;
bubuko.com,布布扣                    }

bubuko.com,布布扣                }

bubuko.com,布布扣                o.onclick
=function ()
bubuko.com,布布扣               
{
bubuko.com,布布扣                   
if (!tv.grid.zoomed)
bubuko.com,布布扣                   
{
bubuko.com,布布扣                        tv.camera.x.target
=this.point3D.x;
bubuko.com,布布扣                        tv.camera.y.target
=this.point3D.y;
bubuko.com,布布扣                        tv.camera.zoom.target
= tv.screen.w *1.25;
bubuko.com,布布扣                        tv.grid.zoomed
=this;
bubuko.com,布布扣                    }
else{
bubuko.com,布布扣                       
if (this== tv.grid.zoomed){
bubuko.com,布布扣                            tv.camera.x.target
=0;
bubuko.com,布布扣                            tv.camera.y.target
=0;
bubuko.com,布布扣                            tv.camera.zoom.target
= tv.screen.w / (tv.grid.size + .1);
bubuko.com,布布扣                            tv.grid.zoomed
=false;
bubuko.com,布布扣                        }

bubuko.com,布布扣                    }

bubuko.com,布布扣                }

bubuko.com,布布扣                o.calc
=function ()
bubuko.com,布布扣               
{
bubuko.com,布布扣                   
this.point3D.z.move(this.point3D.z.target, .5);
bubuko.com,布布扣                   
var x = (this.point3D.x - tv.camera.x.position) * tv.camera.zoom.position;
bubuko.com,布布扣                   
var y = (this.point3D.y - tv.camera.y.position) * tv.camera.zoom.position;
bubuko.com,布布扣                   
var z =this.point3D.z.position * tv.camera.zoom.position;
bubuko.com,布布扣                   
var xy = tv.angle.cx *- tv.angle.sx * z;
bubuko.com,布布扣                   
var xz = tv.angle.sx *+ tv.angle.cx * z;
bubuko.com,布布扣                   
var yz = tv.angle.cy * xz - tv.angle.sy * x;
bubuko.com,布布扣                   
var yx = tv.angle.sy * xz + tv.angle.cy * x;
bubuko.com,布布扣                   
this.point2D.scale = tv.camera.focalLength / (tv.camera.focalLength + yz);
bubuko.com,布布扣                   
this.point2D.x = yx *this.point2D.scale;
bubuko.com,布布扣                   
this.point2D.y = xy *this.point2D.scale;
bubuko.com,布布扣                   
this.point2D.w = Math.round(
bubuko.com,布布扣                                       Math.max(
bubuko.com,布布扣                                        
0,
bubuko.com,布布扣                                        
this.point2D.scale * tv.camera.zoom.position * .8
bubuko.com,布布扣                                       )
bubuko.com,布布扣                                     );
bubuko.com,布布扣                   
if (this.ratioImage >1)
bubuko.com,布布扣                       
this.point2D.h = Math.round(this.point2D.w /this.ratioImage);
bubuko.com,布布扣                   
else
bubuko.com,布布扣                   
{
bubuko.com,布布扣                       
this.point2D.h =this.point2D.w;
bubuko.com,布布扣                       
this.point2D.w = Math.round(this.point2D.h *this.ratioImage);
bubuko.com,布布扣                    }

bubuko.com,布布扣                }

bubuko.com,布布扣                o.draw
=function ()
bubuko.com,布布扣               
{
bubuko.com,布布扣                   
if (this.complete)
bubuko.com,布布扣                   
{
bubuko.com,布布扣                       
if (!this.loaded)
bubuko.com,布布扣                       
{
bubuko.com,布布扣                           
if (!this.img)
bubuko.com,布布扣                           
{
bubuko.com,布布扣                               
this.img =new Image();
bubuko.com,布布扣                               
this.img.src =this.src;
bubuko.com,布布扣                            }

bubuko.com,布布扣                           
if (this.img.complete)
bubuko.com,布布扣                           
{
bubuko.com,布布扣                               
this.style.visibility =visible;
bubuko.com,布布扣                               
this.ratioImage =this.img.width /this.img.height;
bubuko.com,布布扣                               
this.loaded =true;
bubuko.com,布布扣                               
this.img =false;
bubuko.com,布布扣                            }

bubuko.com,布布扣                        }

bubuko.com,布布扣                       
this.style.left = Math.round(
bubuko.com,布布扣                                           
this.point2D.x *this.point2D.scale +
bubuko.com,布布扣                                            tv.screen.w
-this.point2D.w * .5
bubuko.com,布布扣                                          )
+px;
bubuko.com,布布扣                       
this.style.top  = Math.round(
bubuko.com,布布扣                                           
this.point2D.y *this.point2D.scale +
bubuko.com,布布扣                                            tv.screen.h
-this.point2D.h * .5
bubuko.com,布布扣                                          )
+px;
bubuko.com,布布扣                       
this.style.width  =this.point2D.w +px;
bubuko.com,布布扣                       
this.style.height =this.point2D.h +px;
bubuko.com,布布扣                       
this.style.borderWidth = Math.round(
bubuko.com,布布扣                                                   Math.max(
bubuko.com,布布扣                                                    
this.point2D.w,
bubuko.com,布布扣                                                    
this.point2D.h
bubuko.com,布布扣                                                   )
* tv.grid.borderSize * .01
bubuko.com,布布扣                                                 )
+px;
bubuko.com,布布扣                       
this.style.zIndex = Math.floor(this.point2D.scale *100);
bubuko.com,布布扣                    }

bubuko.com,布布扣                }

bubuko.com,布布扣            }

bubuko.com,布布扣        }

bubuko.com,布布扣        tv.resize();
bubuko.com,布布扣        mouse.y
= tv.screen.y + tv.screen.h;
bubuko.com,布布扣        mouse.x
= tv.screen.x + tv.screen.w;
bubuko.com,布布扣        tv.run();
bubuko.com,布布扣    }
,
bubuko.com,布布扣    resize :
function ()
bubuko.com,布布扣   
{
bubuko.com,布布扣       
var o = tv.screen.obj;
bubuko.com,布布扣        tv.screen.w
= o.offsetWidth /2;
bubuko.com,布布扣        tv.screen.h
= o.offsetHeight /2;
bubuko.com,布布扣        tv.camera.zoom.target
= tv.screen.w / (tv.grid.size + .1);
bubuko.com,布布扣       
for (tv.screen.x =0, tv.screen.y =0; o !=null; o = o.offsetParent)
bubuko.com,布布扣       
{
bubuko.com,布布扣            tv.screen.x
+= o.offsetLeft;
bubuko.com,布布扣            tv.screen.y
+= o.offsetTop;
bubuko.com,布布扣        }

bubuko.com,布布扣    }
,
bubuko.com,布布扣    run :
function ()
bubuko.com,布布扣   
{
bubuko.com,布布扣        tv.angle.x.move(
-(mouse.y - tv.screen.h - tv.screen.y) * .0025, .1);
bubuko.com,布布扣        tv.angle.y.move( (mouse.x
- tv.screen.w - tv.screen.x) * .0025, .1);
bubuko.com,布布扣        tv.camera.x.move(tv.camera.x.target, tv.grid.zoomed
? .25 : .025);
bubuko.com,布布扣        tv.camera.y.move(tv.camera.y.target, tv.grid.zoomed
? .25 : .025);
bubuko.com,布布扣        tv.camera.zoom.move(tv.camera.zoom.target, .
05);
bubuko.com,布布扣        tv.angle.cx
= Math.cos(tv.angle.x.position);
bubuko.com,布布扣        tv.angle.sx
= Math.sin(tv.angle.x.position);
bubuko.com,布布扣        tv.angle.cy
= Math.cos(tv.angle.y.position);
bubuko.com,布布扣        tv.angle.sy
= Math.sin(tv.angle.y.position);
bubuko.com,布布扣       
for (var i =0, o; o = tv.O[i]; i++)
bubuko.com,布布扣       
{
bubuko.com,布布扣            o.calc();
bubuko.com,布布扣            o.draw();
bubuko.com,布布扣        }

bubuko.com,布布扣        setTimeout(tv.run,
32);
bubuko.com,布布扣    }

bubuko.com,布布扣}

bubuko.com,布布扣
var mouse ={
bubuko.com,布布扣    x :
0,
bubuko.com,布布扣    y :
0
bubuko.com,布布扣}

bubuko.com,布布扣document.onmousemove
=function(e)
bubuko.com,布布扣
{
bubuko.com,布布扣   
if (window.event) e = window.event;
bubuko.com,布布扣    mouse.x
= e.clientX;
bubuko.com,布布扣    mouse.y
= e.clientY;
bubuko.com,布布扣   
returnfalse;
bubuko.com,布布扣}

bubuko.com,布布扣
</script>
bubuko.com,布布扣
</head>
bubuko.com,布布扣
<body>
bubuko.com,布布扣
<div id="screen"></div>
bubuko.com,布布扣
<div id="bankImages">
bubuko.com,布布扣   
<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/WanTianwen/382001/o_14.jpg">
bubuko.com,布布扣   
<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/WanTianwen/382001/o_3.jpg">
bubuko.com,布布扣   
<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/WanTianwen/382001/o_16.png">
bubuko.com,布布扣   
<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/WanTianwen/382001/o_8.jpg">
bubuko.com,布布扣   
<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/WanTianwen/382001/o_1.bmp">
bubuko.com,布布扣   
<img alt="" src="http://cache33.51.com/photo2/e6/78/wantianwen/e202d467c6ba813545582b56f04c2a1d.jpg">
bubuko.com,布布扣   
<img alt="" src="http://cache33.51.com/photo2/e6/78/wantianwen/74c3e07acebb6f854c7e9a221177edd5.jpg">
bubuko.com,布布扣   
<img alt="" src="http://cache33.51.com/photo2/e6/78/wantianwen/4949b3aaef68c61cc8779413e0c0e477.jpg">
bubuko.com,布布扣   
<img alt="" src="http://images10.51.com/b/200610/e6/78/wantianwen/e6170b2c57f87d02692be0e611034813.jpg">
bubuko.com,布布扣   
<img alt="" src="http://cache33.51.com/photo2/e6/78/wantianwen/6a06a243639859776453c64a95f7b686.jpg">
bubuko.com,布布扣   
<img alt="" src="http://cache45.51.com/photo5/e6/78/wantianwen/098ca589bb50843df84318baa649191a.jpg">
bubuko.com,布布扣   
<img alt="" src="http://cache45.51.com/photo5/e6/78/wantianwen/8a935979e6f3d757ed4c5020ed3155aa.jpg">
bubuko.com,布布扣   
<img alt="" src="http://cache45.51.com/photo5/e6/78/wantianwen/006e96a581ccd4f1d52f4cceb803f622.jpg">
bubuko.com,布布扣   
<img alt="" src="http://cache33.51.com/photo2/e6/78/wantianwen/9066f5ceb52a3d9eba534c001c8fc62a.jpg">
bubuko.com,布布扣   
<img alt="" src="http://cache33.51.com/photo2/e6/78/wantianwen/f5ed5b422236332ef28c5fe36e0e61f3.jpg">
bubuko.com,布布扣   
<img alt="" src="http://cache18.51.com/photo/e6/78/wantianwen/1150462594548.jpg">
bubuko.com,布布扣   
<img alt="" src="http://cache18.51.com/photo/e6/78/wantianwen/1150461892572.jpg">
bubuko.com,布布扣
</div>
bubuko.com,布布扣
<script type="text/javascript">
bubuko.com,布布扣    onresize
= tv.resize;
bubuko.com,布布扣    tv.init();
bubuko.com,布布扣
</script>
bubuko.com,布布扣
</body>
bubuko.com,布布扣
</html>

三维立体图片效果

原文:http://www.cnblogs.com/kaiwanlin/p/3527254.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!