Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[求助] 自定义html js不跑,求高人指点

[复制链接]
生活用心 发表于 2014-1-22 10:58:06 | 显示全部楼层 |阅读模式
问题描述
适用版本: Discuz! X3
浏览器: chrome 
使用模板: 官方模板
BUG地址: http://chinasinorg.03.userhostting.com/
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <title>彩色标签</title>
  6. <style>
  7. @CHARSET "utf-8";

  8. #tag-cloud {
  9.         position:relative;
  10.         width:300px;
  11.         height:200px;
  12.         margin: 0;
  13.         float:center;
  14.         text-align:center;
  15.         border:1px dotted #ffffff;
  16. }
  17. #tag-cloud a {
  18.         position:absolute;
  19.         top:0px;
  20.         left:0px;
  21.         font-family:"宋体",Arial,Microsoft YaHei;
  22.         color:#fff;
  23.         font-weight:bold;
  24.         text-decoration:none;
  25.         padding: 3px 6px;
  26. }
  27. #tag-cloud a:hover {
  28.                 color:white;
  29.         text-shadow:0px -1px 10px red,1px 0px 10px red,0px 1px 10px red,-1px 0px 10px red;

  30. }
  31. #tag-cloud .red {
  32.         color:red;
  33.         }
  34. #tag-cloud .orange {
  35.         color:orange;
  36. }
  37. #tag-cloud .yellow {
  38.         color:yellow;
  39. }
  40. #tag-cloud .green {
  41.         color:green;
  42. }
  43. #tag-cloud .blue {
  44.         color:blue;
  45.         }
  46. #tag-cloud .indigo {
  47.         color:indigo;
  48. }

  49. #tag-cloud .violet {
  50.         color:violet;
  51. }

  52. </style>
  53. <script>

  54. //半径
  55. var radius = 100;
  56. var dtr = Math.PI/180;
  57. var d=200;
  58. var mcList = [];
  59. var active = false;
  60. var lasta = 1;
  61. var lastb = 1;
  62. var distr = true;
  63. //转速
  64. var tspeed=5;
  65. var size=200;
  66. var mouseX=0;
  67. var mouseY=0;
  68. var howElliptical=1;
  69. var aA=null;
  70. var oDiv=null;

  71. window.onload=function ()
  72. {
  73.         var i=0;
  74.         var oTag=null;
  75.        
  76.         oDiv=document.getElementById('tag-cloud');
  77.        
  78.         aA=oDiv.getElementsByTagName('a');
  79.        
  80.         for(i=0;i<aA.length;i++)
  81.         {
  82.                 oTag={};
  83.                
  84.                 oTag.offsetWidth=aA[i].offsetWidth;
  85.                 oTag.offsetHeight=aA[i].offsetHeight;
  86.                
  87.                 mcList.push(oTag);
  88.         }
  89.        
  90.         sineCosine( 0,0,0 );
  91.        
  92.         positionAll();
  93.        
  94.         oDiv.onmouseover=function ()
  95.         {
  96.                 active=true;
  97.         };
  98.        
  99.         oDiv.onmouseout=function ()
  100.         {
  101.                 active=false;
  102.         };
  103.        
  104.         oDiv.onmousemove=function (ev)
  105.         {
  106.                 var oEvent=window.event || ev;
  107.                
  108.                 mouseX=oEvent.clientX-(oDiv.offsetLeft+oDiv.offsetWidth/2);
  109.                 mouseY=oEvent.clientY-(oDiv.offsetTop+oDiv.offsetHeight/2);
  110.                
  111.                 mouseX/=5;
  112.                 mouseY/=5;
  113.         };
  114.        
  115.         setInterval(update, 30);
  116. };

  117. function update()
  118. {
  119.         var a;
  120.         var b;
  121.        
  122.         if(active)
  123.         {
  124.                 a = (-Math.min( Math.max( -mouseY, -size ), size ) / radius ) * tspeed;
  125.                 b = (Math.min( Math.max( -mouseX, -size ), size ) / radius ) * tspeed;
  126.         }
  127.         else
  128.         {
  129.                 a = lasta * 0.98;
  130.                 b = lastb * 0.98;
  131.         }
  132.        
  133.         lasta=a;
  134.         lastb=b;
  135.        
  136.         if(Math.abs(a)<=0.01 && Math.abs(b)<=0.01)
  137.         {
  138.                 return;
  139.         }
  140.        
  141.         var c=0;
  142.         sineCosine(a,b,c);
  143.         for(var j=0;j<mcList.length;j++)
  144.         {
  145.                 var rx1=mcList[j].cx;
  146.                 var ry1=mcList[j].cy*ca+mcList[j].cz*(-sa);
  147.                 var rz1=mcList[j].cy*sa+mcList[j].cz*ca;
  148.                
  149.                 var rx2=rx1*cb+rz1*sb;
  150.                 var ry2=ry1;
  151.                 var rz2=rx1*(-sb)+rz1*cb;
  152.                
  153.                 var rx3=rx2*cc+ry2*(-sc);
  154.                 var ry3=rx2*sc+ry2*cc;
  155.                 var rz3=rz2;
  156.                
  157.                 mcList[j].cx=rx3;
  158.                 mcList[j].cy=ry3;
  159.                 mcList[j].cz=rz3;
  160.                
  161.                 per=d/(d+rz3);
  162.                
  163.                 mcList[j].x=(howElliptical*rx3*per)-(howElliptical*2);
  164.                 mcList[j].y=ry3*per;
  165.                 mcList[j].scale=per;
  166.                 mcList[j].alpha=per;
  167.                
  168.                 mcList[j].alpha=(mcList[j].alpha-0.6)*(10/6);
  169.         }
  170.        
  171.         doPosition();
  172.         depthSort();
  173. }

  174. function depthSort()
  175. {
  176.         var i=0;
  177.         var aTmp=[];
  178.        
  179.         for(i=0;i<aA.length;i++)
  180.         {
  181.                 aTmp.push(aA[i]);
  182.         }
  183.        
  184.         aTmp.sort
  185.         (
  186.                 function (vItem1, vItem2)
  187.                 {
  188.                         if(vItem1.cz>vItem2.cz)
  189.                         {
  190.                                 return -1;
  191.                         }
  192.                         else if(vItem1.cz<vItem2.cz)
  193.                         {
  194.                                 return 1;
  195.                         }
  196.                         else
  197.                         {
  198.                                 return 0;
  199.                         }
  200.                 }
  201.         );
  202.        
  203.         for(i=0;i<aTmp.length;i++)
  204.         {
  205.                 aTmp[i].style.zIndex=i;
  206.         }
  207. }

  208. function positionAll()
  209. {
  210.         var phi=0;
  211.         var theta=0;
  212.         var max=mcList.length;
  213.         var i=0;
  214.        
  215.         var aTmp=[];
  216.         var oFragment=document.createDocumentFragment();
  217.        
  218.         //排序
  219.         for(i=0;i<aA.length;i++)
  220.         {
  221.                 aTmp.push(aA[i]);
  222.         }
  223.        
  224.         aTmp.sort
  225.         (
  226.                 function ()
  227.                 {
  228.                         return Math.random()<0.5?1:-1;
  229.                 }
  230.         );
  231.        
  232.         for(i=0;i<aTmp.length;i++)
  233.         {
  234.                 oFragment.appendChild(aTmp[i]);
  235.         }
  236.        
  237.         oDiv.appendChild(oFragment);
  238.        
  239.         for( var i=1; i<max+1; i++){
  240.                 if( distr )
  241.                 {
  242.                         phi = Math.acos(-1+(2*i-1)/max);
  243.                         theta = Math.sqrt(max*Math.PI)*phi;
  244.                 }
  245.                 else
  246.                 {
  247.                         phi = Math.random()*(Math.PI);
  248.                         theta = Math.random()*(2*Math.PI);
  249.                 }
  250.                 //坐标
  251.                 mcList[i-1].cx = radius * Math.cos(theta)*Math.sin(phi);
  252.                 mcList[i-1].cy = radius * Math.sin(theta)*Math.sin(phi);
  253.                 mcList[i-1].cz = radius * Math.cos(phi);
  254.                
  255.                 aA[i-1].style.left=Math.abs(mcList[i-1].cx+oDiv.offsetWidth/2-mcList[i-1].offsetWidth/2)+'px';
  256. //                if(mcList[i-1].cx+oDiv.offsetWidth/2>=mcList[i-1].offsetWidth/2){
  257. //                        aA[i-1].style.left=Math.abs(mcList[i-1].cx+oDiv.offsetWidth/2-mcList[i-1].offsetWidth/2)+'px';
  258. //                }else{
  259. //                        aA[i-1].style.left=Math.abs(mcList[i-1].offsetWidth/2-mcList[i-1].cx+oDiv.offsetWidth/2)+'px';
  260. //                }
  261.                 aA[i-1].style.top=Math.abs(mcList[i-1].cy+oDiv.offsetHeight/2-mcList[i-1].offsetHeight/2)+'px';
  262. //                if(mcList[i-1].cy+oDiv.offsetHeight/2>=mcList[i-1].offsetHeight/2){
  263. //                        aA[i-1].style.top=Math.abs(mcList[i-1].cy+oDiv.offsetHeight/2-mcList[i-1].offsetHeight/2)+'px';
  264. //                }else{
  265. //                        aA[i-1].style.top=Math.abs(mcList[i-1].offsetHeight/2-mcList[i-1].cy-oDiv.offsetHeight/2)+'px';
  266. //                }
  267.         }
  268. }

  269. function doPosition()
  270. {
  271.         var l=oDiv.offsetWidth/2;
  272.         var t=oDiv.offsetHeight/2;
  273.         for(var i=0;i<mcList.length;i++)
  274.         {
  275.                 aA[i].style.left=Math.abs(mcList[i].cx+l-mcList[i].offsetWidth/2)+'px';
  276. //                if(mcList[i].cx+l>=mcList[i].offsetWidth/2){
  277. //                        aA[i].style.left=Math.abs(mcList[i].cx+l-mcList[i].offsetWidth/2)+'px';
  278. //                }else{
  279. //                        aA[i].style.left=Math.abs(mcList[i].offsetWidth/2-mcList[i].cx-l)+'px';
  280. //                }
  281.                
  282.                 aA[i].style.top=Math.abs(mcList[i].cy+t-mcList[i].offsetHeight/2)+'px';
  283. //                if(mcList[i].cy+t>=mcList[i].offsetHeight/2+Math.ceil(12*mcList[i].scale/2)+8){
  284. //                        //aA[i].style.top=Math.abs(mcList[i].cy+t-mcList[i].offsetHeight/2)+'px';
  285. //                        aA[i].style.top=Math.abs(mcList[i].cy+t-mcList[i].offsetHeight/2-Math.ceil(12*mcList[i].scale/2)-8)+'px';
  286. //                }else{
  287. //                        aA[i].style.top=Math.abs(mcList[i].offsetHeight/2+Math.ceil(12*mcList[i].scale/2)+8-mcList[i].cy-t)+'px';
  288. //                }
  289.                
  290.                 aA[i].style.fontSize=Math.ceil(12*mcList[i].scale/2)+8+'px';
  291.                
  292.                 aA[i].style.filter="alpha(opacity="+100*mcList[i].alpha+")";
  293.                 aA[i].style.opacity=mcList[i].alpha;
  294.         }
  295. }

  296. function sineCosine( a, b, c)
  297. {
  298.         sa = Math.sin(a * dtr);
  299.         ca = Math.cos(a * dtr);
  300.         sb = Math.sin(b * dtr);
  301.         cb = Math.cos(b * dtr);
  302.         sc = Math.sin(c * dtr);
  303.         cc = Math.cos(c * dtr);
  304. }


  305. </script>


  306. </head>

  307. <body>

  308. <div id="tag-cloud" style="float:left;">
  309.                         <a href="" class="red">Discuz!</a>
  310.                         <a href="" class="orange">Discuz!</a>
  311.                         <a href="" class="yellow">Discuz!</a>
  312.                         <a href="" class="green">Discuz!</a>
  313.                         <a href="" class="blue">Discuz!</a>
  314.                         <a href="" class="indigo">Discuz!</a>
  315.                         <a href="" class="violet">Discuz!</a>
  316.             
  317.              </div>



  318. </body>
  319. </html>
复制代码

1、单独用浏览器打开效果

2、自定义html后效果

3、求高人指点,谢谢

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-24 05:57 , Processed in 0.029967 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表