js简单实现标签云效果实例


Posted in Javascript onAugust 06, 2015

本文实例讲述了js简单实现标签云效果。分享给大家供大家参考。具体如下:

这里的JavaScript标签云,基于妙味课堂miaov.js文件,非常流行的网页效果,在网页的右侧或左侧开辟一小块地方,用来显示热门的标签,形式就选择标签云吧,绝对酷哦,相信你也会喜欢。

运行效果如下图所示:

js简单实现标签云效果实例

具体代码如下:

<!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" content="text/html; charset=utf-8" />
<title>js标签云</title>
<style>
body {background: #000;}
#div1 {position:relative; width:450px; height:450px; margin: 20px auto 0; }
#div1 a {position:absolute; top:0px; left:0px; font-family: Microsoft YaHei; color:#fff; font-weight:bold; text-decoration:none; padding: 3px 6px; }
#div1 a:hover {border: 1px solid #eee; background: #000; }
#div1 .blue {color:blue;}
#div1 .red {color:red;}
#div1 .yellow {color:yellow;}
p { font: 16px Microsoft YaHei; text-align: center; color: #ba0c0c; }
p a { font-size: 14px; color: #ba0c0c; }
p a:hover { color: red; }
p a:hover {color:red; }
</style>
<script type="text/javascript" src="miaov.js"></script>
</head>
<body>
<div id="div1">
  <a href="#">JS课程</a>
  <a href="#" class="red">教程</a>
  <a href="#">回头一眸</a>
  <a href="#">精品</a>
  <a href="#" class="blue">源码下载</a>
  <a href="#">SEO</a>
  <a href="#" class="red">特效</a>
  <a href="#">继承</a>
  <a href="#" class="red">三水点靠木</a>
  <a href="#" class="blue">OOP</a>
  <a href="#">XHTML</a>
  <a href="#">W3C</a>
  <a href="#">石川</a>
  <a href="#" class="yellow">人生如歌</a>
  <a href="#">blue</a>
</div>
</body>
</html>

miaov.js代码如下:

var radius=120;var dtr=Math.PI/180;var d=300;var mcList=[];var active=false;var lasta=1;var lastb=1;var distr=true;var tspeed=10;var size=250;var mouseX=0;var mouseY=0;var howElliptical=1;var aA=null;var oDiv=null;window.onload=function()
{var i=0;var oTag=null;oDiv=document.getElementById('div1');aA=oDiv.getElementsByTagName('a');for(i=0;i<aA.length;i++)
{oTag={};oTag.offsetWidth=aA[i].offsetWidth;oTag.offsetHeight=aA[i].offsetHeight;mcList.push(oTag);}
sineCosine(0,0,0);positionAll();oDiv.onmouseover=function()
{active=true;};oDiv.onmouseout=function()
{active=false;};oDiv.onmousemove=function(ev)
{var oEvent=window.event||ev;mouseX=oEvent.clientX-(oDiv.offsetLeft+oDiv.offsetWidth/2);mouseY=oEvent.clientY-(oDiv.offsetTop+oDiv.offsetHeight/2);mouseX/=5;mouseY/=5;};setInterval(update,30);};function update()
{var a;var b;if(active)
{a=(-Math.min(Math.max(-mouseY,-size),size)/ radius ) * tspeed;
b=(Math.min(Math.max(-mouseX,-size),size)/ radius ) * tspeed;
}
else
{a=lasta*0.98;b=lastb*0.98;}
lasta=a;lastb=b;if(Math.abs(a)<=0.01&&Math.abs(b)<=0.01)
{return;}
var c=0;sineCosine(a,b,c);for(var j=0;j<mcList.length;j++)
{var rx1=mcList[j].cx;var ry1=mcList[j].cy*ca+mcList[j].cz*(-sa);var rz1=mcList[j].cy*sa+mcList[j].cz*ca;var rx2=rx1*cb+rz1*sb;var ry2=ry1;var rz2=rx1*(-sb)+rz1*cb;var rx3=rx2*cc+ry2*(-sc);var ry3=rx2*sc+ry2*cc;var rz3=rz2;mcList[j].cx=rx3;mcList[j].cy=ry3;mcList[j].cz=rz3;per=d/(d+rz3);mcList[j].x=(howElliptical*rx3*per)-(howElliptical*2);mcList[j].y=ry3*per;mcList[j].scale=per;mcList[j].alpha=per;mcList[j].alpha=(mcList[j].alpha-0.6)*(10/6);}
doPosition();depthSort();}
function depthSort()
{var i=0;var aTmp=[];for(i=0;i<aA.length;i++)
{aTmp.push(aA[i]);}
aTmp.sort
(function(vItem1,vItem2)
{if(vItem1.cz>vItem2.cz)
{return-1;}
else if(vItem1.cz<vItem2.cz)
{return 1;}
else
{return 0;}});for(i=0;i<aTmp.length;i++)
{aTmp[i].style.zIndex=i;}}
function positionAll()
{var phi=0;var theta=0;var max=mcList.length;var i=0;var aTmp=[];var oFragment=document.createDocumentFragment();for(i=0;i<aA.length;i++)
{aTmp.push(aA[i]);}
aTmp.sort
(function()
{return Math.random()<0.5?1:-1;});for(i=0;i<aTmp.length;i++)
{oFragment.appendChild(aTmp[i]);}
oDiv.appendChild(oFragment);for(var i=1;i<max+1;i++){if(distr)
{phi=Math.acos(-1+(2*i-1)/max);
theta=Math.sqrt(max*Math.PI)*phi;}
else
{phi=Math.random()*(Math.PI);theta=Math.random()*(2*Math.PI);}
mcList[i-1].cx=radius*Math.cos(theta)*Math.sin(phi);mcList[i-1].cy=radius*Math.sin(theta)*Math.sin(phi);mcList[i-1].cz=radius*Math.cos(phi);aA[i-1].style.left=mcList[i-1].cx+oDiv.offsetWidth/2-mcList[i-1].offsetWidth/2+'px';aA[i-1].style.top=mcList[i-1].cy+oDiv.offsetHeight/2-mcList[i-1].offsetHeight/2+'px';}}
function doPosition()
{var l=oDiv.offsetWidth/2;var t=oDiv.offsetHeight/2;for(var i=0;i<mcList.length;i++)
{aA[i].style.left=mcList[i].cx+l-mcList[i].offsetWidth/2+'px';aA[i].style.top=mcList[i].cy+t-mcList[i].offsetHeight/2+'px';aA[i].style.fontSize=Math.ceil(12*mcList[i].scale/2)+8+'px';aA[i].style.filter="alpha(opacity="+100*mcList[i].alpha+")";aA[i].style.opacity=mcList[i].alpha;}}
function sineCosine(a,b,c)
{sa=Math.sin(a*dtr);ca=Math.cos(a*dtr);sb=Math.sin(b*dtr);cb=Math.cos(b*dtr);sc=Math.sin(c*dtr);cc=Math.cos(c*dtr);}

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
情人节专属 纯js脚本1k大小的3D玫瑰效果
Feb 11 Javascript
禁止你的左键复制实用技巧
Jan 04 Javascript
jquery submit ie6下失效的原因分析及解决方法
Nov 15 Javascript
提取jquery的ready()方法单独使用示例
Mar 25 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
Mar 26 Javascript
JS中的==运算: [''] == false —&gt;true
Jul 24 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 Javascript
十个免费的web前端开发工具详细整理
Sep 18 Javascript
微信小程序 页面滑动事件的实例详解
Oct 12 Javascript
在React 组件中使用Echarts的示例代码
Nov 08 Javascript
JS实现仿微信支付弹窗功能
Jun 25 Javascript
Vue使用mixin分发组件的可复用功能
Sep 01 Javascript
使用requestAnimationFrame实现js动画性能好
Aug 06 #Javascript
JavaScript实现的圆形浮动标签云效果实例
Aug 06 #Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
Aug 06 #Javascript
jquery实现选中单选按钮下拉伸缩效果
Aug 06 #Javascript
js实现网页抽奖实例
Aug 05 #Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
Aug 05 #Javascript
JavaScript实现可拖拽的拖动层Div实例
Aug 05 #Javascript
You might like
杏林同学录(八)
2006/10/09 PHP
详解:――如何将图片储存在数据库里
2006/12/05 PHP
兼容性比较好的PHP生成缩略图的代码
2011/01/12 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
JS简单循环遍历json数组的方法
2016/04/22 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
2017/06/11 Javascript
详解A标签中href=&quot;&quot;的几种用法
2017/08/20 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
[02:01]2018完美盛典-开场舞《双子星》
2018/12/16 DOTA
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Python单例模式的两种实现方法
2017/08/14 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Python实现多线程的两种方式分析
2018/08/29 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
Python中if有多个条件处理方法
2020/02/26 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
初入社会应届生求职信
2013/11/18 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
小学班主任工作随笔
2015/08/15 职场文书