zoukankan      html  css  js  c++  java
  • 【荐】JS实现类似星球仿flash效果的动态菜单

    代码简介:推荐朋友们看看,非常值得,JS类似flash,又有点星空的感觉。

    代码内容:

    <!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>
    		<title>【荐】JS实现类似星球仿flash效果的动态菜单_网页代码站(www.webdm.cn)</title>
    <style type="text/css">
    	body {cursor:crosshair;margin:0; padding:0; position:absolute; overflow:hidden; background:#000; left:0; top:0; 100%; 
    
    height:100%;}
    	.obj {position:absolute;font-size:1px;left:-1000;cursor:pointer;}
    	.chi {position:absolute;cursor:pointer;font-family:verdana;}
    
    </style>
    
    <script type="text/javascript"><!--
    
    
    ////////////////////////////////////////////////////////////////////
    // ================ MENU CONTENT ===================================
    
    HDM = [
    
    ['SAURISCHIANS',   'THEROPODS<br>Bipedal<br>predators',         'Herrerasauria',       'Saltopodidae',           'Saltopus'],
    ['',               '',                                          '',                    '',                       'Eoraptor'],
    ['',               '',                                          '',                    'Staurikosaurus',         ''],
    ['',               '',                                          '',                    'Herrerasaurus',          ''],
    ['',               '',                                          'Ceratosauria',        'Coelophysids',           'Coelophysis'],
    ['',               '',                                          '',                    '',                       'Saltopus'],
    ['',               '',                                          '',                    'Ceratosaurus',           ''],
    ['',               '',                                          '',                    'Podokesaurus',           ''],
    ['',               '',                                          '',                    'Abelisaurids',           'Abelisaurus'],
    ['',               '',                                          '',                    '',                       'Indosaurus'],
    ['',               '',                                          '',                    'Noasaurus',              ''],
    ['',               '',                                          '',                    'Segisauridae',           'Segisaurus'],
    ['',               '',                                          '',                    '',                       'Dilophosaurus'],
    ['',               '',                                          'Coelurosauria',       'Coelurids',              'Coelurus'],
    ['',               '',                                          '',                    '',                       'Ornitholestes'],
    ['',               '',                                          '',                    'Dryptosaurus',           ''],
    ['',               '',                                          '',                    'Compsognathus',          ''],
    ['',               '',                                          '',                    'Oviraptor',              ''],
    ['',               '',                                          '',                    'Caenagnathids',          'Caenagnathus'],
    ['',               '',                                          '',                    '',                       'Microvenator'],
    ['',               '',                                          '',                    'Avimimus',               ''],
    ['',               '',                                          '',                    'Ornithomimus',           ''],
    ['',               '',                                          '',                    'Garudimimids',           'Garudimimus'],
    ['',               '',                                          '',                    '',                       'Harpymimus'],
    ['',               '',                                          '',                    'Deinocheirus',           ''],
    ['',               '',                                          '',                    'Dromaeosaurids',         'Caudipteryx'],
    ['',               '',                                          '',                    '',                       'Deinonychus'],
    ['',               '',                                          '',                    '',                       'Dromaeosaurus'],
    ['',               '',                                          '',                    '',                       'Protarchaeopteryx'],
    ['',               '',                                          '',                    '',                       'Sinornithosaurus'],
    ['',               '',                                          '',                    '',                       'Sinosauropteryx'],
    ['',               '',                                          '',                    '',                       'Unenlagia'],
    ['',               '',                                          '',                    '',                       'Utahraptor'],
    ['',               '',                                          '',                    '',                       'Velociraptor'],
    ['',               '',                                          '',                    'Tyrannosaurids',         'Tyrannosaurus'],
    ['',               '',                                          '',                    '',                       'Albertosaurus'],
    ['',               '',                                          '',                    '',                       'Nanotyrannus'],
    ['',               '',                                          'Carnosauria',         'Allosaurids',            'Allosaurus'],
    ['',               '',                                          '',                    '',                       'Yangchuanosaurus'],
    ['',               '',                                          '',                    'Carcharodontosaurids',   'Carcharodontosaurus'],
    ['',               '',                                          '',                    '',                       'Giganotosaurus'],
    ['',               '',                                          '',                    'Spinosaurus',            ''],
    ['',               '',                                          '',                    'Baryonyx',               ''],
    ['',               '',                                          '',                    'Megalosaurids',          'Megalosaurus'],
    ['',               '',                                          '',                    '',                       'Altispinax'],
    ['',               '',                                          '',                    '',                       'Erectopus'],
    ['',               '',                                          'Segnosauria',         'Therizinosaurus',        ''],
    ['',               '',                                          '',                    'Segnosaurus',            ''],
    ['',               'SAUROPODS<br>Quadrupedal<br>herbivorous',   'Prosauropoda',        'Anchisaurus',            ''],
    ['',               '',                                          '',                    'Plateosaurus',           ''],
    ['',               '',                                          '',                    'Melanorosaurus',         ''],
    ['',               '',                                          '',                    'Massospondylus',         ''],
    ['',               '',                                          'Sauropoda',           'Cetiosaurus',            ''],
    ['',               '',                                          '',                    'Camarasaurus',           ''],
    ['',               '',                                          '',                    'Dicraeosaurids',         'Amargasaurus'],
    ['',               '',                                          '',                    '',                       'Dicraeosaurus'],
    ['',               '',                                          '',                    '',                       'Rebbachisaurus'],
    ['',               '',                                          '',                    'Euhelopodus',            ''],
    ['',               '',                                          '',                    'Titanosaurids',          'Aegyptosaurus'],
    ['',               '',                                          '',                    '',                       'Alamosaurus'],
    ['',               '',                                          '',                    '',                       'Andesaurus'],
    ['',               '',                                          '',                    '',                       'Argentinosaurus'],
    ['',               '',                                          '',                    '',                       'Hypselosaurus'],
    ['',               '',                                          '',                    '',                       'Quaesitosaurus'],
    ['',               '',                                          '',                    '',                       'Saltasaurus'],
    ['',               '',                                          '',                    '',                       'Titanosaurus'],
    ['',               '',                                          '',                    'Diplodocids',            'Diplodocus'],
    ['',               '',                                          '',                    '',                       'Apatosaurus'],
    ['',               '',                                          '',                    '',                       'Barosaurus'],
    ['',               '',                                          '',                    '',                       'Supersaurus'],
    ['',               '',                                          '',                    '',                       'Seismosaurus'],
    ['',               '',                                          '',                    'Brachiosaurids',         'Astrodon'],
    ['',               '',                                          '',                    '',                       'Brachiosaurus'],
    ['',               '',                                          '',                    '',                       'Ultrasauros'],
    ['ORNITHISCHIANS', 'ORNITHOPODS<br>herbivorous',                'Fabrosauria',         'Fabrosaurids',           'Fabrosaurus'],
    ['',               '',                                          '',                    '',                       'Lesothosaurus'],
    ['',               '',                                          '',                    '',                       'Xiaosaurus'],
    ['',               '',                                          '',                    'Heterodontosaurus',      ''],
    ['',               '',                                          'Ornithopoda',         'Hypsilophodon',          ''],
    ['',               '',                                          '',                    'Dryosaurus',             ''],
    ['',               '',                                          '',                    'Iguanodontids',          'Iguanodon'],
    ['',               '',                                          '',                    '',                       'Ouranosaurus'],
    ['',               '',                                          '',                    '',                       'Anoplosaurus'],
    ['',               '',                                          '',                    'Camptosaurus',           ''],
    ['',               '',                                          '',                    'Hadrosaurids',           'Hadrosaurus'],
    ['',               '',                                          '',                    '',                       'Maiasaura'],
    ['',               '',                                          '',                    '',                       'Anatotitan'],
    ['',               '',                                          '',                    '',                       'Edmontosaurus'],
    ['',               '',                                          '',                    '',                       'Saurolophus'],
    ['',               '',                                          '',                    '',                       'Trachodon'],
    ['',               '',                                          '',                    'Lambeosaurids',          'Lambeosaurus'],
    ['',               '',                                          '',                    '',                       'Bactrosaurus'],
    ['',               '',                                          '',                    '',                       'Corythosaurus'],
    ['',               '',                                          '',                    '',                       'Jaxartosaurus'],
    ['',               '',                                          '',                    '',                       'Parasaurolophus'],
    ['',               '',                                          '',                    'Thescelosaurus',         ''],
    ['',               'MARGINOCEPHALIA<br>herbivorous',            'Pachycephalosauria',  'Pachycephalosaurids',    'Pachycephalosaurus'],
    ['',               '',                                          '',                    '',                       'Stegoceras'],
    ['',               '',                                          '',                    '',                       'Stygimoloch'],
    ['',               '',                                          '',                    'Vannanosorus',           ''],
    ['',               '',                                          'Ceratopsia',          'Protoceratopsids',       'Protoceratops'],
    ['',               '',                                          '',                    '',                       'Bagaceratops'],
    ['',               '',                                          '',                    '',                       'Leptoceratops'],
    ['',               '',                                          '',                    '',                       'Montanoceratops'],
    ['',               '',                                          '',                    '',                       'Notoceratops'],
    ['',               '',                                          '',                    '',                       'Zuniceratops'],
    ['',               '',                                          '',                    'Ceratopsidae',           'Anchiceratops'],
    ['',               '',                                          '',                    '',                       'Avaceratops'],
    ['',               '',                                          '',                    '',                       'Arrhinoceratops'],
    ['',               '',                                          '',                    '',                       'Brachyceratops'],
    ['',               '',                                          '',                    '',                       'Ceratops'],
    ['',               '',                                          '',                    '',                       'Monoclonius'],
    ['',               '',                                          '',                    '',                       'Styracosaurus'],
    ['',               '',                                          '',                    '',                       'Torosaurus'],
    ['',               '',                                          '',                    '',                       'Triceratops'],
    ['',               '',                                          '',                    'Psittacosaurus',         ''],
    ['',               'THYREOPHORA<br>armored<br>quadrupeds',      'Scriptosoria',        'ObjectOrientus',         'MPietrus'],
    ['',               '',                                          '',                    '',                       'G1Dootus', 
    
    'http://www.dhteumeuleu.com'],
    ['',               '',                                          '',                    '',                       'Evolvus'],
    ['',               '',                                          '',                    'Bizarrus',               'CybZarbius'],
    ['',               '',                                          '',                    '',                       'JackFlashus'],
    ['',               '',                                          '',                    '',                       'JimmyBeamus'],
    ['',               '',                                          'Stegosauria',         'Huayangosaurus',         ''],
    ['',               '',                                          '',                    'Stegosaurinae',          'Stegosaurus'],
    ['',               '',                                          '',                    '',                       'Dacentrurus'],
    ['',               '',                                          '',                    '',                       'Kentrosaurus'],
    ['',               '',                                          '',                    '',                       'Tuojiangosaurus'],
    ['',               '',                                          '',                    '',                       'Yingshanosaurus'],
    ['',               '',                                          '',                    'Craterosaurus',          ''],
    ['',               '',                                          'Ankylosauria',        'Nodosaurids',            'Nodosaurus'],
    ['',               '',                                          '',                    '',                       'Acanthopholis'],
    ['',               '',                                          '',                    '',                       'Brachyspondosaurus'],
    ['',               '',                                          '',                    '',                       'Edmontonia'],
    ['',               '',                                          '',                    '',                       'Hoplitosaurus'],
    ['',               '',                                          '',                    '',                       'Minmi'],
    ['',               '',                                          '',                    '',                       'Hylaeosaurus'],
    ['',               '',                                          '',                    '',                       'Polacanthus'],
    ['',               '',                                          '',                    '',                       'Sauropelta'],
    ['',               '',                                          '',                    '',                       'Struthiosaurus'],
    ['',               '',                                          '',                    'Ankylosaurus',          '']
    ];
    
    
    
    
    
    // ============================================================
    //     ========== Experimental GALACTIC Menu =============
    // SCRIPT by Gerard Ferrandez - Ge-1-doot - NOV 2001
    // ============================================================
    
    // -------- global var --------------
    var nx;
    var ny;
    var xm = 0;
    var ym = 0;
    var nx2;
    var ny2;
    var cir;
    var E;
    var m;
    var HP = 0;
    var HS = new Array();
    // ===============================
    var A  = .0044; // rotation speed
    var Cselected  = "#FF0000";
    var Cnode      = "#00FF00";
    var Chyperlink = "#FFFF00";
    var Cparent    = "#0000FF";
    // ===============================
    var cA = Math.cos(A);
    var sA = Math.sin(A);
    var Zoom  = 0;
    var ZoomF = 1;
    var Xd  = 0;
    var Yd  = 0;
    var XdF = 0;
    var YdF = 0;
    var oB;
    var root;
    var tempx = 0;
    var tempy = 0;
    var drag = false;
    var hcli = false;
    // ------------------- main loop ------------------------------------------------------
    function main(){
    	if(XdF >= Xd) Xd -= (Xd - XdF) *.1; else Xd += (XdF - Xd) *.1;
    	if(YdF >= Yd) Yd -= (Yd - YdF) *.1; else Yd += (YdF - Yd) *.1;
    	if(ZoomF > Zoom) Zoom -= (Zoom - ZoomF) *.05; else Zoom += (ZoomF - Zoom) *.05;
    	m.rotate();
    	cir.left = oB.obj.pL - E - 3;
    	cir.top  = oB.obj.pT - E - 3;
    	setTimeout(main, 16);
    }
    // ------------------------------------------------------------------------------------
    function SFMenu(label, parent) {
    	// ======== create Elements =========
    	obj = document.createElement("div");
    	obj.className="obj";
    	chi = document.createElement("div");
    	chi.className="chi";
    	chi.innerHTML = "    " + label
    	obj.appendChild(chi);
    	document.body.appendChild(obj);
    	// ======== Attributes ============
    	this.ref     = obj;
    	this.doot    = obj.style;
    	this.ola     = chi.style;
    	this.ref.obj = this;
    	this.parent  = parent;
    	this.inscr   = true;
    	this.visible = true;
    	this.pL      = 0;
    	this.pT      = 0;
    	this.m       = new Array();
    	this.X       = 0;
    	this.Y       = 0;
    	this.lev     = 0;
    	this.w       = 0;
    	this.label   = label;
    	// ==================== functions ==========================
    	// ------- children creation -------
    	this.dot = function(c) {
    		this.m[this.m.length] = newItem = new SFMenu(c, this);
    		newItem.lev = this.lev + 1;
    		return newItem;
    	}
    	// ------- click Event ------------
    	this.ref.onmousedown = function() {
    		hcli = true;
    		with(this.obj){
    			if(m[0]){
    				url = m[0].label;
    				if(url.indexOf("http")>=0){
    					window.open(url,"_blank");
    				} else {
    					HS[HP++] = parent;
    					oB  = this;
    					Mdoot(root,true);
    					Mdoot(this.obj,false);
    					XdF = X;
    					YdF = Y;
    					ZoomF = m[0].lev;
    				}
    			}
    		}
    		return false;
    	}
    	// --------- Rotation ------------
    	this.rotate = function () {
    		with(this){
    			// --- look Ma! no hands! ---
    			Ax = X - Xd;
    			Ay = Y - Yd;
    			X = Ax * cA - Ay * sA + Xd;
    			Y = Ay * cA + Ax * sA + Yd;
    			// ---- children rotation ------
    			for(var i=0 in m) m[i].rotate();
    			// --- exclude invisible dots
    			if(visible){
    				pL = Zoom * (X - Xd) + nx2;
    				pT = Zoom * (Y - Yd) + ny2;
    				if(pL<0 || pL>nx || pT<0  || pT>ny){
    					if(inscr){
    						inscr = false;
    						doot.left = -1E4;
    						return;
    					}
    				} else inscr = true;
    				// --- move doots
    				if(inscr){
      					doot.left = pL - w * .25;
    					doot.top  = pT - w * .25;
    				}
    			}
    		}
    	}
    }
    // ---- transfer & colors -------------
    function Mdoot(o,s){
    	with(o){
    		if(s){
    			// --- Graphic Attributs
    			w = Math.max(2,Math.min(64,(12 - lev * 2) * (oB.obj.lev + 2))) * .8;
    			doot.zIndex = 100 - lev + 1;
    			if(w<=8)ola.visibility="hidden";
    			else {
    				ola.fontSize =  w;
    				ola.visibility="visible";
    			}
    			doot.width = doot.height = w * 0.5;
    			// --- view depth clamping
    			if(lev<oB.obj.lev - 1 || lev>oB.obj.lev + 2){
    				visible = false;
    				doot.left = -1E4;
    			} else visible=true;
    		}
    		// --- color parent
    		if(parent)if(o == oB.obj){
    			parent.doot.background = Cparent;
    			parent.ola.color = "white";
    		}
    		// --- color selected
    		doot.background=(s)?"white":Cselected;
    		if(!s)ola.color = "white";
    		// --- color children
    		for(var i = 0 in m){
    			with(m[i]){
    				doot.background=(s)?"white":(m[0])?Cnode:Chyperlink;
    				ola.color=(s)?"gray":"white";
    			}
    			if(s)Mdoot(m[i],s);
    		}
    	}
    }
    
    // ---- Polar to X,Y coordinates calculation ------
    function PoXY(o){
    	with(o){
    		for(var i = 0 in m){
    			// --- automatic angulation
    			angle = ((30 * m[i].lev) + i * (360 / m.length)) / (180 / Math.PI);
    			m[i].X = X + Math.cos(angle) * (E / m[i].lev);
    			m[i].Y = Y + Math.sin(angle) * (E / m[i].lev);
    			// -- children
    			PoXY(m[i]);
    		}
    	}
    }
    // ------ anti-select -------------------
    document.onselectstart = function () {return false;}
    // -------- drag STARFIELD --------------
    document.onmousemove = function(e){
    	if (window.event) e = window.event;
    	xm = (e.x || e.clientX);
    	ym = (e.y || e.clientY);
    	if(drag){
    		XdF=tempx+(nx-xm);
    		YdF=tempy+(ny-ym);
    	}
    	return false;
    }
    document.onmousedown = function () {
    	if(!hcli){
    		tempx=XdF-(nx-xm);
    		tempy=YdF-(ny-ym);
    		document.body.style.cursor="move";
    		drag = true;
    	}
    	hcli = false;
    	return false;
    }
    document.onmouseup = function () {
    	document.body.style.cursor="";
    	drag = false;
    	return false;
    }
    // =============== generating menu ====================
    function makeDots(){
    	nbrl  = HDM.length;
    	var I = new Array();
    	for(i=0;i<nbrl;i++)I[i] = new Array();
    	N=-1;
    	for(j=0;j<10;j++){
    		for(i=0;i<nbrl;i++){
    			if(j<=HDM[i].length){
    				if(HDM[i][j]!="") if(j==0)N++; else if(HDM[i][j-1]!="")N=0; else N++;
    				I[i][j+1]=N;
    			}
    		}
    		N=0;
    	}
    	for(var i = 0 in HDM){
    		command = "m";
    		for(var j = 0 in HDM[i]){
    			dot = HDM[i][j];
    			if(dot!=""){
    				for(k=0;k<j;k++)command+='.m['+(I[i][k+1])+']';
    				command+='.dot("'+dot+'")';
    				eval(command);
    				command = "m";
    			}
    		}
    	}
    }
    
    // --- yo! zyva ! -----------
    onload = function() {
    	m = new SFMenu("DYNOSAURS");
    	nx = document.body.offsetWidth;
    	ny = document.body.offsetHeight;
    	nx2 = nx * .5;
    	ny2 = ny * .5;
    	E = ny2 * .5;
    	makeDots();
    	PoXY(m);
    	root = m;
    	oB = m.ref;
    	cir = document.getElementById("circle").style;
    	cir.width=ny2+6;
    	cir.height=ny2+6;
    	Mdoot(m,true);
    	Mdoot(m,false);
    	main();
    }
    
    
    //-->
    </script>
    	</head>
    <body>
    <img id="circle" src="http://www.webdm.cn/images/20100822/200803272236370.gif" style="position:absolute;left:-1000">
    
    <div style="position:relative;font-family:verdana;color:#ccc;font-size:8pt;padding:10px;z-index:1000;">
    Experimental hyper-object oriented Galactic Menu<br><br>
    INSTRUCTIONS :<br>
    - click the dots to navigate<br>
    - drag&drop to change your position<br>
    - lost in space? <span onClick="m.ref.onmousedown();" style="cursor:pointer;color:#FF0000;">click</span><br>
    - back <span onClick="if(HP>0)HS[--HP].ref.onmousedown();" style="cursor:pointer;color:#FF0000"><<<</span><br><br>
    </div>
    </body>
    </html>
    <br>
    <p><a href="http://www.webdm.cn">网页代码站</a> - 最专业的代码下载网站 - 致力为中国站长提供有质量的代码!</p>
    

    代码来自:http://www.webdm.cn/webcode/a9a6f135-f8f5-4a79-9e39-f1520280a6c6.html

  • 相关阅读:
    HTC G7 搜索和感光按键修改
    Delphi开源组件SynEdit
    (转)Delphi获取windows系统版本信息
    TDateTime转UTC的时间差
    Windows7 C盘无法读写文件
    Convert UTC string to TDatetime in Delphi
    delphi抓全屏图,游戏窗口,游戏Client窗口
    ADO Table Locate
    Delphi与管道操作
    Delphi从UTC (GMT)返回时差
  • 原文地址:https://www.cnblogs.com/webdm/p/2073591.html
Copyright © 2011-2022 走看看