`

js代码超酷3D效果

阅读更多
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>js代码超酷3D效果 Wanna tell her - interactive DHTML</title>
<FCK:meta http-equiv="imagetoolbar" content="no" />
<style type="text/css">
html {
overflow: hidden;
}
body {
position: absolute;
margin: 0px;
padding: 0px;
background: #fff;
width: 100%;
height: 100%;
}
#screen {
position: absolute;
left: 10%;
top: 10%;
width: 80%;
height: 80%;
background: #fff;
}
#screen img {
position: absolute;
cursor: pointer;
width: 0px;
height: 0px;
-ms-interpolation-mode:nearest-neighbor;
}
#bankImages {
visibility: hidden;
}
#FPS {
position: absolute;
right: 5px;
bottom: 5px;
font-size: 10px;
color: #666;
font-family: verdana;
}
</style>
<script type="text/javascript"> 
/* ==== Easing function ==== */ 
var Library = {}; 
Library.ease = function () { 
this.target = 0; 
this.position = 0; 
this.move = function (target, speed) { 
this.position += (target - this.position) * speed; 
} 
} 

var tv = { 
/* ==== variables ==== */ 
O : [], 
fps : 0, 
screen : {}, 
angle : { 
x : new Library.ease(), 
y : new Library.ease() 
}, 
camera : { 
x    : new Library.ease(), 
y    : new Library.ease() 
}, 
create3DHTML : function (i, x, y, z, sw, sh) { 
/* ==== create HTML image element ==== */ 
var o = document.createElement('img'); 
o.src = i.src; 
tv.screen.obj.appendChild(o); 
/* ==== 3D coordinates ==== */ 
o.point3D = { 
x  : x, 
y  : y, 
z  : new Library.ease(), 
sw : sw, 
sh : sh, 
w  : i.width, 
h  : i.height 
}; 
o.point3D.z.target = z; 
/* ==== push object ==== */ 
o.point2D = {}; 
tv.O.push(o); 

/* ==== on mouse over event ==== */ 
o.onmouseover = function () { 
if (this != tv.o) { 
this.point3D.z.target = tv.mouseZ; 
tv.camera.x.target = this.point3D.x; 
tv.camera.y.target = this.point3D.y; 
if (tv.o) tv.o.point3D.z.target = 0; 
tv.o = this; 
} 
return false; 
} 

/* ==== on mousedown event ==== */ 
o.onmousedown = function () { 
if (this == tv.o) { 
if (this.point3D.z.target == tv.mouseZ) this.point3D.z.target = 0; 
else { 
tv.o = false; 
this.onmouseover(); 
} 
} 
} 

/* ==== main 3D function ==== */ 
o.animate = function () { 
/* ==== 3D coordinates ==== */ 
var x = this.point3D.x - tv.camera.x.position; 
var y = this.point3D.y - tv.camera.y.position; 
this.point3D.z.move(this.point3D.z.target, this.point3D.z.target ? .15 : .08); 
/* ==== rotations ==== */ 
var xy = tv.angle.cx * y  - tv.angle.sx * this.point3D.z.position; 
var xz = tv.angle.sx * y  + tv.angle.cx * this.point3D.z.position; 
var yz = tv.angle.cy * xz - tv.angle.sy * x; 
var yx = tv.angle.sy * xz + tv.angle.cy * x; 
/* ==== 2D transform ==== */ 
var scale = tv.camera.focalLength / (tv.camera.focalLength + yz); 
x = yx * scale; 
y = xy * scale; 
var w = Math.round(Math.max(0, this.point3D.w * scale * this.point3D.sw)); 
var h = Math.round(Math.max(0, this.point3D.h * scale * this.point3D.sh)); 
/* ==== HTML rendering ==== */ 
var o    = this.style; 
o.left  = Math.round(x + tv.screen.w - w * .5) + 'px'; 
o.top    = Math.round(y + tv.screen.h - h * .5) + 'px'; 
o.width  = w + 'px'; 
o.height = h + 'px'; 
o.zIndex = 10000 + Math.round(scale * 1000); 
} 
}, 

/* ==== init script ==== */ 
init : function (structure, FL, mouseZ, rx, ry) { 
this.screen.obj = document.getElementById('screen'); 
this.screen.obj.onselectstart = function () { return false; } 
this.screen.obj.ondrag        = function () { return false; } 
this.mouseZ = mouseZ; 
this.camera.focalLength = FL; 
this.angle.rx = rx; 
this.angle.ry = ry; 
/* ==== create objects ==== */ 
var i = 0, o; 
while( o = structure[i++] ) 
this.create3DHTML(o.img, o.x, o.y, o.z, o.sw, o.sh); 
/* ==== start script ==== */ 
this.resize(); 
mouse.y = this.screen.y + this.screen.h; 
mouse.x = this.screen.x + this.screen.w; 
/* ==== loop ==== */ 
setInterval(tv.run, 16); 
setInterval(tv.dFPS, 1000); 
}, 

/* ==== resize window ==== */ 
resize : function () { 
var o = tv.screen.obj; 
if (o) { 
tv.screen.w = o.offsetWidth / 2; 
tv.screen.h = o.offsetHeight / 2; 
for (tv.screen.x = 0, tv.screen.y = 0; o != null; o = o.offsetParent) { 
tv.screen.x += o.offsetLeft; 
tv.screen.y += o.offsetTop; 
} 
} 
}, 

/* ==== main loop ==== */ 
run : function () { 
tv.fps++; 
/* ==== motion ease ==== */ 
tv.angle.x.move(-(mouse.y - tv.screen.h - tv.screen.y) * tv.angle.rx, .1); 
tv.angle.y.move( (mouse.x - tv.screen.w - tv.screen.x) * tv.angle.ry, .1); 
tv.camera.x.move(tv.camera.x.target, .025); 
tv.camera.y.move(tv.camera.y.target, .025); 
/* ==== angles sin and cos ==== */ 
tv.angle.cx = Math.cos(tv.angle.x.position); 
tv.angle.sx = Math.sin(tv.angle.x.position); 
tv.angle.cy = Math.cos(tv.angle.y.position); 
tv.angle.sy = Math.sin(tv.angle.y.position); 
/* ==== loop through images ==== */ 
var i = 0, o; 
while( o = tv.O[i++] ) o.animate(); 
}, 

/* ==== trace frames per seconds ==== */ 
dFPS : function () { 
document.getElementById('FPS').innerHTML = tv.fps + ' FPS'; 
tv.fps = 0; 
} 
} 

/* ==== global mouse position ==== */ 
var mouse = { 
x : 0, 
y : 0 
} 
document.onmousemove = function(e) { 
if (window.event) e = window.event; 
mouse.x = e.clientX; 
mouse.y = e.clientY; 
return false; 
} 

/* ==== starting script ==== */ 
onload = function() { 
onresize = tv.resize; 
/* ==== build grid ==== */ 
var img = document.getElementById('bankImages').getElementsByTagName('img'); 
var structure = []; 
for (var i = -300; i <= 300; i += 120) 
for (var j = -300; j <= 300; j += 120) 
structure.push({ img:img[0], x:i, y:j, z:0, sw:.5, sh:.5 }); 
/* ==== let's go ==== */ 
tv.init(structure, 350, -200, .005, .0025); 
} 

</script>
</head>
<body>
<div id="screen"></div>
<div id="bankImages"><img alt="" src="http://www.96kb.com/images/logo.jpg" _fcksavedurl="http://www.96kb.com/images/logo.jpg"></div>
<div id="FPS"></div>
</body>
</html>

 

分享到:
评论

相关推荐

    js特效,超酷3D照片展示效果

    "超酷3D照片展示效果"就是一种利用JS实现的创新性视觉呈现技术,它将普通的2D照片转化为引人入胜的3D视图,带给用户更加立体、生动的浏览体验。这种效果通常应用于相册展示、产品展示或艺术作品展览等场景,让网页...

    js超酷3D照片展示效果.rar

    本资源“js超酷3D照片展示效果.rar”显然包含了一个利用JavaScript实现的3D照片展示特效,这样的效果可以为网站增添互动性和视觉吸引力。在网页设计中,动态的3D展示不仅可以提升用户体验,还能使内容更生动有趣。 ...

    hover3d.js-超酷鼠标滑过图片3D卡片效果jQuery插件

    图片的3D效果可以根据浏览器窗口的大小自动调整,确保在各种设备上都能呈现出良好的视觉效果。 4. **配置选项**:插件允许开发者自定义多种参数,如旋转角度、动画速度、过渡效果等,以适应不同的项目需求。 在...

    JS、CSS超酷3D照片墙

    "JS、CSS超酷3D照片墙"就是一个这样的例子,它结合了JavaScript(JS)和层叠样式表(CSS)的力量,为用户提供了一种立体、动态的图片展示方式,让用户仿佛置身于一个3D空间中浏览照片。 **JS在3D照片墙中的作用** ...

    Bootstrap超酷3D按钮设计效果

    开发者可能将这些资源组织在相应的文件夹中,如`css`文件夹存储CSS样式,`js`文件夹存储JavaScript代码,而HTML文件则引用这些外部资源。 总的来说,"Bootstrap超酷3D按钮设计效果"是一个展示如何利用Bootstrap和...

    超酷3D照片展示效果

    在IT行业中,尤其是在网页设计和开发领域,"超酷3D照片展示效果"是一种吸引用户注意力和提升用户体验的重要技术。这种效果通常是通过JavaScript这一强大的客户端脚本语言实现的,它可以为网页添加动态交互性,让静态...

    query超酷的3D立体照片墙特效代码.zip

    在前端,通常使用CSS3的transform和perspective属性来创建简单的3D效果,但为了实现更复杂的3D变换和交互,通常会用到Three.js或者Pixi.js等JavaScript库。这些库提供了一套丰富的API,简化了3D图形的创建和管理,...

    纯js超酷3D旋转木马特效插件

    【纯js超酷3D旋转木马特效插件】是一种基于JavaScript实现的视觉效果插件,主要用于网页设计中,能够为用户提供动态、立体且引人入胜的展示体验。这种插件通常应用于产品展示、画廊浏览或者互动式用户体验设计等场景...

    jQuery和CSS3超酷3D多层图片视觉差互动特效.zip

    "1827"可能是项目文件夹或代码文件的名称,具体内容可能包含了实现这一特效的HTML、CSS和JavaScript代码,以及相关的图片资源。深入研究和理解这些文件,可以进一步学习如何构建类似的3D多层图片视觉差互动特效。

    超酷3D立方体空间旋转图片画廊特效

    5. `js`:JavaScript代码文件,包含了处理3D变换逻辑和用户交互的脚本。 6. `css`:样式表文件,定义了3D立方体及其各个面的样式,以及整个画廊的布局和外观。 7. `img`:图像文件夹,存放了用于展示的图片资源。 ...

    HTML5实现的超酷3D实景地图动画特效源码

    总的来说,“HTML5实现的超酷3D实景地图动画特效源码”是一个综合运用HTML5、CSS3、WebGL和JavaScript技术的实例,它展示了如何将这些技术融合,创造出引人入胜的3D地图体验。通过研究和理解这个源码,开发者不仅能...

    基于bootsnav的超酷3d导航菜单

    【基于bootsnav的超酷3D导航菜单】是一种创新的网页设计技术,它结合了流行的前端框架Bootstrap的导航组件和Bootsnav插件,旨在为用户带来更加生动且交互性强的网页导航体验。Bootsnav插件是针对Bootstrap的一个增强...

    css3超酷3D旋转导航菜单特效

    本案例中,我们关注的是"css3超酷3D旋转导航菜单特效",这是一个利用CSS3 3D Transforms技术实现的创新性交互设计。这个特效使得网站的导航菜单在用户悬停时展现出立体的旋转效果,增强了用户体验和视觉吸引力。 ...

    12款超酷图片展示JS代码演示

    6. **3D效果**:利用CSS3和JavaScript实现的3D旋转、翻转等效果,让图片展示更具立体感。 7. **延迟加载**:仅当图片进入浏览器可视区域时才加载,有效减少页面加载时间。 8. **触摸事件支持**:为触屏设备优化,...

    jquery超酷3d幻灯片插件特效代码-jmpress.js

    6. `js`目录:包含JavaScript文件,其中应该有 jmpress.js 插件的核心代码和其他相关脚本。 **使用和自定义 jmpress.js** 为了使用 jmpress.js,开发者需要将库文件引入到HTML文件中,然后初始化插件,并根据需求...

    HTML5超酷3D立方体按钮效果.zip

    总的来说,"HTML5超酷3D立方体按钮效果.zip"提供了一个实例,展示了如何利用HTML5、CSS3和JavaScript的组合来创建具有高级视觉效果和交互性的网页元素。开发者可以从中学习到如何设计和实现类似的3D按钮效果,并将其...

    flex 源码 超酷的3D效果源码.zip

    在这个名为"flex 源码 超酷的3D效果源码.zip"的压缩包中,我们可以找到一系列与Flex 3D开发相关的资源。 1. **ActionScriptProperties**: 这是一个项目配置文件,通常包含关于ActionScript编译器设置的信息,如库...

    hover3djs超酷鼠标滑过图片3D卡片效果jQuery插件

    通过jQuery,开发者可以更高效地编写JavaScript代码。 **2. 插件安装与引入** 下载`hover3d.js`插件后,将其放置在项目中的合适位置,并在HTML文件中引入jQuery库和`hover3d.js`插件。通常,这些脚本会在`&lt;head&gt;`...

    jquery html5超酷上下3D翻转幻灯片切换特效代码演示

    总的来说,"jquery html5超酷上下3D翻转幻灯片切换特效代码演示"是一个结合了jQuery的易用性、HTML5的新特性以及CSS3的强大动画功能的项目。它展示了如何通过现代Web技术创造出引人入胜的用户体验,对于开发者来说,...

    超酷的3D图片墙

    在这个3D图片墙中,ActionScript负责处理图片的旋转、缩放、平移等3D效果,以及响应用户的点击事件。 XML(可扩展标记语言)则被用来存储和传输数据。在本项目中,XML文件包含了图片的路径、名称、描述等信息,使得...

Global site tag (gtag.js) - Google Analytics