<!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" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<style>
.tagBall{
width: 800px;
height: 800px;
margin:50px auto;
position: relative;
}
.tag{
display: block;
position: absolute;
left: 0px;
top: 0px;
color: #000;
text-decoration: none;
font-size: 15px;
font-family: "微软雅黑";
font-weight: bold;
}
.tag:hover{border:1px solid #666;}
</style>
<title>3D标签-柯乐义</title>
</head>
<body>
<div class="tagBall">
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">马到成功</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com/a/bjad/9sgmqsee.htm">新年快乐</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com/a/bjad/9sgmqsee.htm">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com/a/bjad/9sgmqsee.htm">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">笑口常开</a>
<a class="tag" target="_blank" href="http://keleyi.com">柯乐义</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">柯乐义</a>
<a class="tag" target="_blank" href="http://keleyi.com">Happy New Year!</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com/a/bjad/9sgmqsee.htm">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">柯乐义</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">好运连连</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">红澄黄绿青蓝紫</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">好运连连</a>
<a class="tag" target="_blank" href="http://keleyi.com">好运连连</a>
<a class="tag" target="_blank" href="http://keleyi.com">某某某</a>
<a class="tag" target="_blank" href="http://keleyi.com">我喜欢你</a>
</div>
<script type="text/javascript">
var tagEle = "querySelectorAll" in document ? document.querySelectorAll(".tag") : getClass("tag"),
paper = "querySelectorAll" in document ? document.querySelector(".tagBall") : getClass("tagBall")[0];
RADIUS = 300,
fallLength = 500,
tags = [],
angleX = Math.PI / 500,
angleY = Math.PI / 500,
CX = paper.offsetWidth / 2,
CY = paper.offsetHeight / 2,
EX = paper.offsetLeft + document.body.scrollLeft + document.documentElement.scrollLeft,
EY = paper.offsetTop + document.body.scrollTop + document.documentElement.scrollTop;

function getClass(className) {
var ele = document.getElementsByTagName("*");
var classEle = [];
for (var i = 0; i < ele.length; i++) {
var cn = ele[i].className;
if (cn === className) {
classEle.push(ele[i]);
}
}
return classEle;
}

function innit() {
for (var i = 0; i < tagEle.length; i++) {
var a, b;
var k = (2 * (i + 1) - 1) / tagEle.length - 1;
var a = Math.acos(k);
var b = a * Math.sqrt(tagEle.length * Math.PI);
// var a = Math.random()*2*Math.PI;
// var b = Math.random()*2*Math.PI;
var x = RADIUS * Math.sin(a) * Math.cos(b);
var y = RADIUS * Math.sin(a) * Math.sin(b);
var z = RADIUS * Math.cos(a);
var t = new tag(tagEle[i], x, y, z);
tagEle[i].style.color = "rgb(" + parseInt(Math.random() * 255) + "," + parseInt(Math.random() * 255) + "," + parseInt(Math.random() * 255) + ")";
tags.push(t);
t.move();
}
}

Array.prototype.forEach = function (callback) {
for (var i = 0; i < this.length; i++) {
callback.call(this[i]);
}
}

function animate() {
setInterval(function () {
rotateX();
rotateY();
tags.forEach(function () {
this.move();
})
}, 17)
}

if ("addEventListener" in window) {
paper.addEventListener("mousemove", function (event) {
var x = event.clientX - EX - CX;
var y = event.clientY - EY - CY;
// angleY = -x* (Math.sqrt(Math.pow(x , 2) + Math.pow(y , 2)) > RADIUS/4 ? 0.0002 : 0.0001);
// angleX = -y* (Math.sqrt(Math.pow(x , 2) + Math.pow(y , 2)) > RADIUS/4 ? 0.0002 : 0.0001);
angleY = x * 0.0001;
angleX = y * 0.0001;
});
}
else {
paper.attachEvent("onmousemove", function (event) {
var x = event.clientX - EX - CX;
var y = event.clientY - EY - CY;
angleY = x * 0.0001;
angleX = y * 0.0001;
});
}

function rotateX() {
var cos = Math.cos(angleX);
var sin = Math.sin(angleX);
tags.forEach(function () {
var y1 = this.y * cos - this.z * sin;
var z1 = this.z * cos + this.y * sin;
this.y = y1;
this.z = z1;
})

}

function rotateY() {
var cos = Math.cos(angleY);
var sin = Math.sin(angleY);
tags.forEach(function () {
var x1 = this.x * cos - this.z * sin;
var z1 = this.z * cos + this.x * sin;
this.x = x1;
this.z = z1;
})
}

var tag = function (ele, x, y, z) {
this.ele = ele;
this.x = x;
this.y = y;
this.z = z;
}

tag.prototype = {
move: function () {
var scale = fallLength / (fallLength - this.z);
var alpha = (this.z + RADIUS) / (2 * RADIUS);
this.ele.style.fontSize = 15 * scale + "px";
this.ele.style.opacity = alpha + 0.5;
this.ele.style.filter = "alpha(opacity = " + (alpha + 0.5) * 100 + ")";
this.ele.style.zIndex = parseInt(scale * 100);
this.ele.style.left = this.x + CX - this.ele.offsetWidth / 2 + "px";
this.ele.style.top = this.y + CY - this.ele.offsetHeight / 2 + "px";
}
}
innit();
animate();
</script>
</body>
</html>

Js_实现3D球体旋转的更多相关文章

  1. CSS3实现3D球体旋转动画

    html <div class="ball-box"> <div class="ball"> <div class="l ...

  2. jQuery可拖拽3D万花筒旋转特效

    这是一个使用了CSS3立体效果的强大特效,本特效使用jQuery跟CSS3 transform来实现在用户鼠标按下拖动时,环形图片墙可以跟随鼠标进行3D旋转动画. 效果体验:http://hovert ...

  3. Three.js 第一篇:绘制一个静态的3D球体

    第一篇就画一个球体吧 首先我们知道Three.js其实是一个3D的JS引擎,其中的强大之处就在于这个JS框架并不是依托于JQUERY来写的.那么,我们在写这一篇绘制3D球体的文章的时候,应该注意哪些地 ...

  4. css3-实现3D立方体旋转

    核心内容: 1.CSS3 中 animation.perspective 属性的熟练运用. 2.CSS3 中的变形属性 transform,在 3D 立体效果中的运用. 3.3D 立方体旋转实现原理. ...

  5. 2d,3d中旋转推导

    二维绕原点旋转,其实点为(x,y),旋转角度为黄色标注的角度. 推导过程如下: x' = r cos(al+be); y' = r sin(al+be);x '= rcosalcosbe-rsinal ...

  6. 基于css3的3D立方体旋转特效

    今天给大家分享一款基于css3的3D立方体旋转特效.这款特效适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 不支持IE8及以下浏览器.效果图如下 : ...

  7. 基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转

    基于css3新属性transform,实现3d立方体的旋转 通过原生JS,点击事件,鼠标按下.鼠标抬起和鼠标移动事件,实现3d立方体的拖动旋转,并将旋转角度实时的反应至界面上显示 实现原理:通过获取鼠 ...

  8. AE模板替换-众多图片沿着球体旋转!与您分享

    AE-模板替换<众多图片沿球体旋转>效果的视频        近日,本人又一次做了AE的[图片替换]的模板尝试,本人感觉:预览视频时发现的效果较新颖,也有些气势;就是短了些,我安排了,&q ...

  9. WPF动态加载3D 放大-旋转-平移

    原文:WPF动态加载3D 放大-旋转-平移 WavefrontObjLoader.cs 第二步:ModelVisual3DWithName.cs public class ModelVisual3DW ...

随机推荐

  1. linux信息收集篇之sosreport

    sosreport是一个类型于supportconfig 的工具,sosreport是python编写的一个工具,适用于centos(和redhat一样,包名为sos).ubuntu(其下包名为sos ...

  2. Zabbix添加Ping外网IP监控

    1.先添加一个HOST,只填写IP即可,如10.1.1.1 2.选择一台客户端,新建item,如下: 3.新建trigger: 注:icmpping[<target>,<packet ...

  3. How to Be Assertive Asking for What You Want Firmly and Fairly

    What Is Assertiveness? It's not always easy to identify truly assertive behavior. This is because th ...

  4. C++基础算法学习——完美立方

    形如a 3 = b 3 + c 3 + d 3 的等式被称为完美立方等式.例如12 3 = 6 3 + 8 3 + 10 3 .编写一个程序,对任给的正整数N(N≤100),寻找所有的四元组(a, b ...

  5. 写博的第一天 0x00

    作为一个大学生,我觉得自己除了睡觉,打游戏,吃饭更应该做点有意义的事情,作为计算机专业的学生,更应该勤奋点,主动去学习.已经要大三了,我认识到这个暑假我必须学点什么了,为了更好的学习,我决定学语言的同 ...

  6. 获取QQ头像接口

    https://q4.qlogo.cn/g?b=qq&nk=QQ号码&s=140

  7. 【转】PHP中file_put_contents追加和换行

    在PHP的一些应用中需要写日志或者记录一些信息,这样的话. 可以使用fopen(),fwrite()以及 fclose()这些进行操作. 也可以简单的使用file_get_contents()和fil ...

  8. C/C++常用库及工具

    值得学习的C语言开源项目 - 1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...

  9. 我的$OI$

    我只是懒得写日记啦\(\color{pink}{qwq}\) //11月8日 啊--终于要\(NOIp\)了,为此期盼了好久.紧张了好久的我,不知道会迎来怎样的结果. 我只知道这段回忆是值得保留封存的 ...

  10. Beautifulsoap - request 网络爬虫 (转)

    http://www.cnblogs.com/jiayongji/p/7118939.html (转) python爬虫系列(2)—— requests和BeautifulSoup库的基本用法