JavaScrip实现3D旋转动态效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" mrc="text/html; charset=utf-8"  content=""/>

<title>图片旋转展示</title>

<style type="text/css">

#show{

position:relative;

margin:20px auto;

width:800px;

border:1px solid #999999;

}

.item{

position:absolute;

height:40px;

width:60px;

background:#999999;

border:1px solid #eeeeee;

cursor:pointer;

}

</style>

<script type="text/javascript" language="javascript">

var len;

var showerObj;

var listObj;

var showerWidth = 500;//改变宽度

var showerHeight = 400;//改变 高度

var r;

var cR = 0;

var ccR = 0;

var timer = 0;

window.onload = function () {

showerObj = document.getElementById("show");

listObj = showerObj.getElementsByTagName("div");

len = listObj.length;

r = Math.PI / 180 * 360 / len;

for (var i = 0; i < len; i++) {

var item = listObj[i];

item.style.top = showerHeight / 2 + Math.sin(r * i) * showerWidth / 2 - 20 + "px";

item.style.left = showerWidth / 2 + Math.cos(r * i) * showerWidth / 2 - 30 + "px";

item.rotate = (r * i + 2 * Math.PI) % (2 * Math.PI);

//单击某一项事件

item.onclick = function () {

cR = Math.PI / 2 - this.rotate;

timer || (timer = setInterval(rotate, 10));

}

}

var rX = showerObj.offsetLeft + showerWidth / 2;

var ry = showerObj.offsetTop + showerHeight / 2;

var rotate = function () {

ccR = (ccR + 2 * Math.PI) % (2 * Math.PI);

if (cR - ccR < 0) cR = cR + 2 * Math.PI;

if (cR - ccR < Math.PI) {

ccR = ccR + (cR - ccR) / 19;

} else {

ccR = ccR - (2 * Math.PI + ccR - cR) / 19;

}

if (Math.abs((cR + 2 * Math.PI) % (2 * Math.PI) - (ccR + 2 * Math.PI) % (2 * Math.PI)) < Math.PI / 720) {

ccR = cR;

clearInterval(timer);

timer = 0;

}

for (var i = 0; i < len; i++) {

var item = listObj[i];

var w, h;

var sinR = Math.sin(r * i + ccR);

var cosR = Math.cos(r * i + ccR);

w = 60 + 0.6 * 60 * sinR;

h = (40 + 0.6 * 40 * sinR);

item.style.cssText += ";width:" + w + "px;height:" + h + "px;top:" + parseInt(showerHeight / 2 + sinR * showerWidth / 2 / 3 - w / 2) + "px;left:" + parseInt(showerWidth / 2 + cosR * showerWidth / 2 - h / 2) + "px;z-index:" + parseInt(showerHeight / 2 + sinR * showerWidth / 2 / 3 - w / 2) + ";";

}

}

document.getElementById("l").onclick = function () {

cR = (cR + r + 2 * Math.PI) % (2 * Math.PI);

timer || (timer = setInterval(rotate, 10));

}

document.getElementById("r").onclick = function () {

cR = (cR - r + 2 * Math.PI) % (2 * Math.PI);

timer || (timer = setInterval(rotate, 10));

}

rotate();

}

</script>

</head>

<body>

<input id="l" type="button" value="left" />

<input id="r" type="button" value="right" />

<div id="show">

<div class="item">

<img src="protosite/images/bg15.png" style="width:100%;height:100%" />

</div>

<div class="item">

<img src="protosite/images/bg16.png" style="width:100%;height:100%" />

</div>

<div class="item">

<img src="protosite/images/bg17.png" style="width:100%;height:100%" />

</div>

<div class="item">

<img src="protosite/images/bg18.png" style="width:100%;height:100%" />

</div>

<div class="item">

<img src="protosite/images/bg15.png" style="width:100%;height:100%" />

</div>

<div class="item">

<img src="protosite/images/bg15.png" style="width:100%;height:100%" />

</div>

<div class="item">

<img src="protosite/images/bg16.png" style="width:100%;height:100%" />

</div>

<!--<div class="item">8</div>

<div class="item">9</div>

<div class="item">0</div>

<div class="item">a</div>

<div class="item">b</div>

<div class="item">1</div>

<div class="item">2</div>

<div class="item">3</div>-->

</div>

</body>

</html>

JavaScrip实现3D旋转动态效果

时间: 2024-08-28 09:49:18

JavaScrip实现3D旋转动态效果的相关文章

3D旋转菜单

今天来个3D旋转菜单,是纯css3实现的,主要用到transform,transition,backface-visibility. 主要是transform这个变换,它是今天猪脚. transform里有transform-style 属性规定如何在 3D 空间中呈现被嵌套的元素. transform-origin 属性允许您改变被转换元素的位置. backface-visibility 属性定义当元素不面向屏幕时是否可见. 代码: <!DOCTYPE html> <html lang

CSS3——3D旋转图(跑马灯效果图)

CSS3新增了很多新的属性,可以用很少的代码实现炫酷的动画效果,但由于兼容性各浏览器的能力存在不足,有特别需求的网站就呵呵啦.H5C3已是大势所趋了,之前看过一个新闻,Chrome将在年底全面转向H5,抛弃了Flash.. 本案例主要使用了CSS3中的变换transform和动画animation属性,实现了跑马灯效果,详细的解释在代码中的注释中. 做好布局之后的效果图 添加了animation样式,实现自动旋转,并且鼠标移入,停止动画.(鼠标移入,绕Z轴旋转90度) 代码: 1 <!DOCTY

【小松教你手游开发】【系统模块开发】做一个3d旋转菜单

在unity做一个3d旋转菜单,像乱斗西游2的这种: 暂时有两种方法可以实现: 一.当做是2d界面,通过定义几个固定点的坐标.大小.透明度,还有每个点的panel depth大小,把数据存储下来,在手机滑动的过程中计算滑动划过的距离和这个panel大小的比值,乘以两个点之间的距离,获得坐标点移动的距离,通过改变x轴改变位置,同理改变大小和透明度. 这个方法我自己做2d游戏的时候实现过,做起来比较简单,没有什么可拓展性可言,并且会有很多限制,比如拖动过程中很难转变方向.要自己实现运动中的弹性(这里

【学】CSS3的3D动画 ——3D旋转之骰子样式的钟表(2)上—— 妙味课堂

这个是3D旋转的进阶版,是一个类似与骰子的正方体.这个版本只有秒数的个位数,还没有写整个钟表,下面那个版本好好想想该怎么写 这个效果需要用到transform-style: preserve-3d. 利用transform: rotateX, rotateY, rotateZ来定义物体转动轴,实现3D旋转 给一个正方体设置6个面,每个面都设置旋转基面,并且直接先朝各个方向转90度,有一个面要注意,就是和最前面的那个面的对面,不用转,但是要用transform: translateZ()来让这个面

一款基于jQuery和CSS3炫酷3D旋转画廊特效插件

这是一款效果炫酷的jQuery和CSS3 3D旋转画廊特效插件.该3D画廊插件可以通过前后导航按钮来切换图片,效果就像旋转木马一样.它还带有点击放大图片,显示图片标题和用键盘操作等功能. 在线预览   源码下载 简要教程 这是一款效果非常炫酷的jQuery和CSS3 3D旋转画廊特效插件.第一个DEMO是一个简单的例子,使用CSS3来制作3d旋转效果,然后用js来控制前后导航按钮.第二个DEMO是第一个DEMO的升级版,它增加了图片标题.查看图片.键盘控制等其它功能. HTML结构 这个3D画廊

【CSS3进阶】酷炫的3D旋转透视

之前学习 react+webpack ,偶然路过 webpack 官网 ,看到顶部的 LOGO ,就很感兴趣. 最近觉得自己 CSS3 过于薄弱,想着深入学习一番,遂以这个 LOGO 为切入口,好好研究学习了一下相关的 CSS3 属性.webpack 的 LOGO 动画效果乍看不是很难,深入了解之后,觉得内部其实大有学问,自己折腾了一番,做了一系列相关的 CSS3 动画效果. 先上 demo ,没有将精力放在兼容上,请用 chrome 打开. 本文完整的代码,以及更多的 CSS3 效果,在我 g

css3 地球3d旋转

<!doctype html><html><head><meta charset="utf-8"><title>地球3d旋转</title><style>body{ height:768px; overflow:hidden; background-color:#000}#sun{ width:2000px; height:2000px; background-image:url(images/dc4.

一步步教你打造3D旋转盒

今天又来一了一篇关于3D效果的文章,教你打造自己的3D旋转盒 首先还是希望大家自己看看关于transform这个属性的相关特性作用,张前辈已经写了详细的教程,直接附上 http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/comment-page-1/ OK下面我们开始吧 首先我们创建如下的HTML基本骨架 <div id="container"&g

Android实现3D旋转的View

今天在网上看到一篇文章写关于Android实现3D旋转(http://www.ibm.com/developerworks/cn/opensource/os-cn-android-anmt2/index.html?ca=drs-),出于好奇就写了一个,运行效果如下: 下面我们就开始一步步完成这个效果吧. 实现水平滑动 package com.example.rotation3dview; import android.content.Context; import android.util.At