仿DVBBS下拉菜单效果 jb51修正无错

1、将存为menu.htm格式文件 以下为代码内容:

  

复制代码 代码如下:

  <html>

  <head>

  <style>

  .menuskin {

  BORDER-RIGHT: #CBD7E9 1px solid; BORDER-TOP: #CBD7E9 1px solid; BACKGROUND-IMAGE: url(image/menubg.gif); VISIBILITY: hidden; FONT: 12px Tahoma, Verdana; BORDER-LEFT: #CBD7E9 1px solid; BORDER-BOTTOM: #CBD7E9 1px solid; POSITION: absolute; BACKGROUND-COLOR: #ffffff

  }

  .menuskin A {

  PADDING-RIGHT: 10px; PADDING-LEFT: 25px; COLOR: #3A4273; TEXT-DECORATION: none

  }

  #mouseoverstyle {

  BORDER-RIGHT: #597db5 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #597db5 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px; BORDER-LEFT: #597db5 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #597db5 1px solid; BACKGROUND-COLOR: #c9d5e7

  }

  #mouseoverstyle A {

  COLOR: black

  }

  .menuitems {

  PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; MARGIN: 2px; WORD-BREAK: keep-all; PADDING-TOP: 1px

  }

  </style>

  <script type="text/javascript" src="menu.js"></script>

  </head>

  <body vlink='#333333' link='#333333'>

  <div class=menuskin id=popmenu onmouseover="clearhidemenu();highlightmenu(event,'on')" onmouseout="highlightmenu(event,'off');dynamichide(event)" style="Z-index:100"></div>

  <center>

  <a href="###" onMouseOver="showmenu(event,'<div class=menuitems><a href=http://www.gyct.cn/article/index.asp>网络文摘</a></div><div class=menuitems><a href=http://www.gyct.cn/article/index.asp>网络文摘</a></div>')"> 思客秀</a>

  </center>

  </body>

  </html>

  2、将下面代码存为menu.js文件,并与menu.htm放到同级目录下

  

复制代码 代码如下:

  //Pop-it menu- By Dynamic Drive - Modified by Wbird

  //For full source code and more DHTML scripts, visit http://www.gyct.cn

  //This credit MUST stay intact for use

  var menuOffX=0 //菜单距连接文字最左端距离

  var menuOffY=18 //菜单距连接文字顶端距离

  var vBobjects = new Array();

  var fo_shadows=new Array();

  ////No need to edit beyond here

  var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1

  var ns6=document.getElementById&&!document.all

  var ns4=document.layers

  function MM_findObj(n, d) {

  var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {

  d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[n];

  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers.document);

  if(!x && d.getElementById) x=d.getElementById(n); return x;

  }

  function fetch_object(idname, forcefetch)

  {

  if (typeof(vBobjects[idname]) == "undefined")

  {

  vBobjects[idname] = MM_findObj(idname);

  }

  return vBobjects[idname];

  }

  //showmenu vmenu:内容,允许为空,vmenuobj DIV数据ID,MOD 0=关闭浏览器自适应,用于版面导航菜单

  function showmenu(e,vmenu,vmenuobj,mod){

  if (!document.all&&!document.getElementById&&!document.layers)

  return

  var which=vmenu;

  if (vmenuobj)

  {

  var MenuObj = fetch_object(vmenuobj);

  if (MenuObj)

  {

  which = MenuObj.innerHTML;

  }

  }

  if (!which)

  {

  return

  }

  clearhidemenu();

  ie_clearshadow();

  menuobj=ie4? document.all.popmenu : ns6? document.getElementById("popmenu") : ns4? document.popmenu : ""

  menuobj.thestyle=(ie4||ns6)? menuobj.style : menuobj

  if (ie4||ns6)

  menuobj.innerHTML=which

  else{

  menuobj.document.write('<layer name=gui bgcolor="#E6E6E6" width="165" onmouseover="clearhidemenu()" onmouseout="hidemenu()">'+which+'</layer>')

  menuobj.document.close()

  }

  menuobj.contentwidth=(ie4||ns6)? menuobj.offsetWidth : menuobj.document.gui.document.width

  menuobj.contentheight=(ie4||ns6)? menuobj.offsetHeight : menuobj.document.gui.document.height

  eventX=ie4? event.clientX : ns6? e.clientX : e.x

  eventY=ie4? event.clientY : ns6? e.clientY : e.y

  var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX

  var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY

  var getlength

  if (rightedge<menuobj.contentwidth){

  getlength=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth+menuOffX : ns6? window.pageXOffset+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth

  }else{

  getlength=ie4? ie_x(event.srcElement)+menuOffX : ns6? window.pageXOffset+eventX : eventX

  }

  menuobj.thestyle.left=getlength+'px'

  if (bottomedge<menuobj.contentheight&&mod!=0){

  getlength=ie4? document.body.scrollTop+eventY-menuobj.contentheight-event.offsetY+menuOffY-23 : ns6? window.pageYOffset+eventY-menuobj.contentheight-10 : eventY-menuobj.contentheight

  }    else{

  getlength=ie4? ie_y(event.srcElement)+menuOffY : ns6? window.pageYOffset+eventY+10 : eventY

  }

  menuobj.thestyle.top=getlength+'px'

  menuobj.thestyle.visibility="visible"

  ie_dropshadow(menuobj,"#999999",3)

  return false

  }

  function ie_y(e){

  var t=e.offsetTop;

  while(e=e.offsetParent){

  t+=e.offsetTop;

  }

  return t;

  }

  function ie_x(e){

  var l=e.offsetLeft;

  while(e=e.offsetParent){

  l+=e.offsetLeft;

  }

  return l;

  }

  function ie_dropshadow(el, color, size)

  {

  var i;

  for (i=size; i>0; i--)

  {

  var rect = document.createElement('div');

  var rs = rect.style

  rs.position = 'absolute';

  rs.left = (el.style.posLeft + i) + 'px';

  rs.top = (el.style.posTop + i) + 'px';

  rs.width = el.offsetWidth + 'px';

  rs.height = el.offsetHeight + 'px';

  rs.zIndex = el.style.zIndex - i;

  rs.backgroundColor = color;

  var opacity = 1 - i / (i + 1);

  rs.filter = 'alpha(opacity=' + (100 * opacity) + ')';

  //el.insertAdjacentElement('afterEnd', rect);

  fo_shadows[fo_shadows.length] = rect;

  }

  }

  function ie_clearshadow()

  {

  for(var i=0;i<fo_shadows.length;i++)

  {

  if (fo_shadows[i])

  fo_shadows[i].style.display="none"

  }

  fo_shadows=new Array();

  }

  function contains_ns6(a, b) {

  while (b.parentNode)

  if ((b = b.parentNode) == a)

  return true;

  return false;

  }

  function hidemenu(){

  if (window.menuobj)

  menuobj.thestyle.visibility=(ie4||ns6)? "hidden" : "hide"

  ie_clearshadow()

  }

  function dynamichide(e){

  if (ie4&&!menuobj.contains(e.toElement))

  hidemenu()

  else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))

  hidemenu()

  }

  function delayhidemenu(){

  if (ie4||ns6||ns4)

  delayhide=setTimeout("hidemenu()",500)

  }

  function clearhidemenu(){

  if (window.delayhide)

  clearTimeout(delayhide)

  }

  function highlightmenu(e,state){

  if (document.all)

  source_el=event.srcElement

  else if (document.getElementById)

  source_el=e.target

  if (source_el.className=="menuitems"){

  source_el.id=(state=="on")? "mouseoverstyle" : ""

  }

  else{

  while(source_el.id!="popmenu"){

  source_el=document.getElementById? source_el.parentNode : source_el.parentElement

  if (source_el.className=="menuitems"){

  source_el.id=(state=="on")? "mouseoverstyle" : ""

  }

  }

  }

  }

  if (ie4||ns6)

  document.onclick=hidemenu

  3、在menu.htm目录下建立image目录,制作背景图片

  PS:事例效果:

  以下为代码内容:

  <div class=menuskin id=popmenu onmouseover=clearhidemenu() onmouseout=dynamichide(event) style="z-index:100;"></div>

  <font color="#eeeeee"> <a href=### onMouseOver="showmenu(event,'<div class=menuitems id=site_menu><a href=/common/skins.asp?action=skin_1>简约时尚</a><br /><a href=/common/skins.asp?action=skin_2>魔兽世界</a><br /><a href=/common/skins.asp?action=cookies_clear alt=清除您在本站所留的Cookies信息>清除记录</a><br /></div>','site_menu')"><font color=#eeeeee>[选择皮肤]</font></a></font>

  修正无错

  

   [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]