飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2954|回复: 6

[特效]透明的下拉菜单

[复制链接]
  • TA的每日心情
    开心
    2024-12-1 11:04
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2005-2-8 02:28:58 | 显示全部楼层 |阅读模式
    以下是本程序的源代码,可以适当自己修改菜单的内容,放在适当的位置即可
    <SCRIPT language=jscript>
    var mmenus = new Array();
    var misShow = new Boolean();
    misShow=false;
    var misdown = new Boolean();
    misdown=false;
    var msrcel;
    var mfromel;
    var mtoel;
    var musestatus=false;
    var mthestatus="";
    var mpopTimer = 0;
    mmenucolor='#009AFF';mfontcolor='#FFFFFF';mmenuoutcolor='#009AFF';
    mmenuincolor='#009AFF';mmenuoutbordercolor='#009AFF';mmenuinbordercolor='#009AFF';
    mmidoutcolor='#0099FF';mmidincolor='#0099FF';mmenuovercolor='#FF0000';mitemedge='0';
    msubedge='1';mmenuunitwidth=60;mmenuitemwidth=160;mmenuheight=22;mmenuwidth='500';
    mmenuadjust=10;mmenuadjustV=0;mfonts='font-family: 宋体; font-size: 9pt;
    color: #FFFFFF; ';mcursor='default';

    function stoperror(){
    return true;
    }
    window.onerror=stoperror;
    function mpopOut() {
    mpopTimer = setTimeout('mallhide()', 500);
    }
    function getReal(el, type, value) {
    temp = el;
    while ((temp != null) && (temp.tagName != "BODY")) {
    if (eval("temp." + type) == value) {
    el = temp;
    return el;
    }
    temp = temp.parentElement;
    }
    return el;
    }


    function mMenuRegister(menu)
    {
    mmenus[mmenus.length] = menu
    return (mmenus.length - 1)
    }
    function mMenuItem(caption,command,target,isline,statustxt,img,sizex,sizey,pos){
    this.caption=caption;
    this.command=command;
    this.target=target;
    this.isline=isline;
    this.statustxt=statustxt;
    this.img=img;
    this.sizex=sizex;
    this.sizey=sizey;
    this.pos=pos;
    }
    function mMenu(caption,command,target,img,sizex,sizey,pos){
    this.items = new Array();
    this.caption=caption;
    this.command=command;
    this.target=target;
    this.img=img;
    this.sizex=sizex;
    this.sizey=sizey;
    this.pos=pos;
    this.id=mMenuRegister(this);
    }
    function mMenuAddItem(item)
    {
    this.items[this.items.length] = item
    item.parent = this.id;
    this.children=true;
    }

    mMenu.prototype.addItem = mMenuAddItem;
    function mtoout(src){

    src.style.borderLeftColor=mmenuoutbordercolor;
    src.style.borderRightColor=mmenuinbordercolor;
    src.style.borderTopColor=mmenuoutbordercolor;
    src.style.borderBottomColor=mmenuinbordercolor;
    src.style.backgroundColor=mmenuoutcolor;
    src.style.color=mmenuovercolor;
    }
    function mtoin(src){

    src.style.borderLeftColor=mmenuinbordercolor;
    src.style.borderRightColor=mmenuoutbordercolor;
    src.style.borderTopColor=mmenuinbordercolor;
    src.style.borderBottomColor=mmenuoutbordercolor;
    src.style.backgroundColor=mmenuincolor;
    src.style.color=mmenuovercolor;
    }
    function mnochange(src){
    src.style.borderLeftColor=mmenucolor;
    src.style.borderRightColor=mmenucolor;
    src.style.borderTopColor=mmenucolor;
    src.style.borderBottomColor=mmenucolor;
    src.style.backgroundColor='';
    src.style.color=mfontcolor;

    }
    function mallhide(){
    for(var nummenu=0;nummenu<mmenus.length;nummenu++){
    var themenu=document.all['mMenu'+nummenu]
    var themenudiv=document.all['mmenudiv'+nummenu]
    mnochange(themenu);
    mmenuhide(themenudiv);
    }
    }
    function mmenuhide(menuid){
    menuid.style.filter='Alpha(Opacity=100)';
    menuid.style.visibility='hidden';
    misShow=false;
    }
    function mmenushow(menuid,pid){
    menuid.style.filter='Alpha(Opacity=80)';
    menuid.style.left=mposflag.offsetLeft+pid.offsetLeft+mmenuadjust;
    menuid.style.top=mposflag.offsetTop+mmenutable.offsetHeight+mmenuadjustV+1;
    if(mmenuitemwidth+parseInt(menuid.style.left)>document.body.clientWidth)
    menuid.style.left=document.body.clientWidth-mmenuitemwidth;
    menuid.style.visibility='visible';
    misShow=true;
    }
    function mmenu_over(menuid,x){
    mtoel = getReal(window.event.toElement, "className", "coolButton");
    mfromel = getReal(window.event.fromElement, "className", "coolButton");
    if (mtoel == mfromel) return;
    msrcel = window.event.srcElement;
    if(x<0){
    misShow = false;
    mallhide();
    mtoout(msrcel);
    }else{

    mallhide();
    mtoin(msrcel);
    mmenushow(menuid,eval("mMenu"+x));

    }
    clearTimeout(mpopTimer);
    }
    function mmenu_out(menuid){
    mtoel = getReal(window.event.toElement, "className", "coolButton");
    mfromel = getReal(window.event.fromElement, "className", "coolButton");
    if (mtoel == mfromel) return;
    msrcel = window.event.srcElement;
    if (misShow){
    mtoin(msrcel);
    }else{
    mnochange(msrcel);
    }
    mpopOut()
    }
    function mmenu_down(menuid,x){
    msrcel = getReal(window.event.srcElement, "className", "coolButton");
    if(misShow){
    mmenuhide(menuid);
    mtoout(msrcel);
    }
    else{
    mtoin(msrcel);
    mmenushow(menuid,eval("mMenu"+x));
    misdown=true;
    }
    }
    function mmenu_up(){
    misdown=false;
    }
    function mmenuitem_over(menuid){
    msrcel = getReal(window.event.srcElement, "className", "coolButton");
    if(misdown){
    mtoin(msrcel);
    }
    else{
    mtoout(msrcel);
    }
    if(mthestatus!=""){
    musestatus=true;
    window.status=mthestatus;
    }
    clearTimeout(mpopTimer);
    }
    function mmenuitem_out(menuid){
    msrcel = getReal(window.event.srcElement, "className", "coolButton");
    mnochange(msrcel);
    if(musestatus)window.status="";
    mpopOut()
    }
    function mmenuitem_down(menuid){
    msrcel = getReal(window.event.srcElement, "className", "coolButton");
    mtoin(msrcel)
    misdown=true;
    }
    function mmenuitem_up(menuid){
    msrcel = getReal(window.event.srcElement, "className", "coolButton");
    mtoout(msrcel)
    misdown=false;
    }
    function mexec2(x){
    var cmd;
    if(mmenus[x].target=="blank"){
    cmd = "window.open('"+mmenus[x].command+"')";
    }else{
    cmd = mmenus[x].target+".location='"+mmenus[x].command+"'";
    }
    eval(cmd);
    }
    function mexec(x,i){
    var cmd;
    if(mmenus[x].items[i].target=="blank"){
    cmd = "window.open('"+mmenus[x].items[i].command+"')";
    }else{
    cmd = mmenus[x].items[i].target+".location='"+mmenus[x].items[i].command+"'";
    }
    eval(cmd);
    }
    function mbody_click(){

    if (misShow){
    msrcel = getReal(window.event.srcElement, "className", "coolButton");
    for(var x=0;x<=mmenus.length;x++){
    if(msrcel.id=="mMenu"+x)
    return;
    }
    mallhide();
    }
    }
    document.onclick=mbody_click;
    var mMenuBodyRef;
    function mwritetodocument(){
    var mwb=1;
    for(var i in document.all){
    if (document.all[i].tagName == 'BODY'){
    mMenuBodyRef = document.all[i]
    var stringx='<div id="mposflag" style="position:absolute;"></div><table id=mmenutable border=0 cellpadding=0 cellspacing=2 width='+mmenuwidth+' height='+mmenuheight+' bgcolor='+mmenucolor+
    ' onselectstart="event.returnValue=false"'+
    ' style="filter:Alpha(Opacity=80);cursor:'+mcursor+';'+mfonts+
    ' border-left: '+mwb+'px solid '+mmenuoutbordercolor+';'+
    ' border-right: '+mwb+'px solid '+mmenuinbordercolor+'; '+
    'border-top: '+mwb+'px solid '+mmenuoutbordercolor+'; '+
    'border-bottom: '+mwb+'px solid '+mmenuinbordercolor+'; padding:0px"><tr>'
    for(var x=0;x<mmenus.length;x++){
    var thismenu=mmenus[x];
    var imgsize;
    if(thismenu.sizex=="0"&&thismenu.sizey=="0"){
    imgsize="";
    }else{
    imgsize=" width="+thismenu.sizex+" height="+thismenu.sizey;
    }
    var ifspace;
    if(thismenu.caption==""){
    ifspace="";
    }else{
    ifspace=" ";
    }
    stringx += "<td class=coolButton id=mMenu"+x+" style='border: "+mitemedge+"px solid "+mmenucolor+
    "' width="+mmenuunitwidth+"px onmouseover=mmenu_over(mmenudiv"+x+
    ","+x+") onmouseout=mmenu_out(mmenudiv"+x+
    ") onmousedown=mmenu_down(mmenudiv"+x+","+x+")";
    if(thismenu.command!=""){
    stringx += " onmouseup=mexec2("+x+");mmenu_up();";
    }else{
    stringx += " onmouseup=mmenu_up()";
    }
    if(thismenu.pos=="0"){
    stringx += " align=center><img align=absmiddle src="+thismenu.img+imgsize+">"+ifspace+thismenu.caption+"</td>";
    }else if(thismenu.pos=="1"){
    stringx += " align=center>"+thismenu.caption+ifspace+"<img align=absmiddle src="+thismenu.img+imgsize+"></td>";
    }else if(thismenu.pos=="2"){
    stringx += " align=center background="+thismenu.img+">"+thismenu.caption+"</td>";
    }else{
    stringx += " align=center>"+thismenu.caption+"</td>";
    }
    stringx += "";
    }
    stringx+="<td width=*> </td></tr></table>";


    for(var x=0;x<mmenus.length;x++){
    thismenu=mmenus[x];
    if(x<0){
    stringx+='<div id=mmenudiv'+x+' style="visiable:none"></div>';
    }else{
    stringx+='<div id=mmenudiv'+x+
    ' style="filter:Alpha(Opacity=80);cursor:'+mcursor+';position:absolute;'+
    'width:'+mmenuitemwidth+'px; z-index:'+(x+100);
    if(mmenuinbordercolor!=mmenuoutbordercolor&&msubedge=="0"){
    stringx+=';border-left: 1px solid '+mmidoutcolor+
    ';border-top: 1px solid '+mmidoutcolor;}
    stringx+=';border-right: 1px solid '+mmenuinbordercolor+
    ';border-bottom: 1px solid '+mmenuinbordercolor+';visibility:hidden" onselectstart="event.returnValue=false">\n'+
    '<table width="100%" border="0" height="100%" align="center" cellpadding="0" cellspacing="2" '+
    'style="'+mfonts+' border-left: 1px solid '+mmenuoutbordercolor;
    if(mmenuinbordercolor!=mmenuoutbordercolor&&msubedge=="0"){
    stringx+=';border-right: 1px solid '+mmidincolor+
    ';border-bottom: 1px solid '+mmidincolor;}
    stringx+=';border-top: 1px solid '+mmenuoutbordercolor+
    ';padding: 4px" bgcolor='+mmenucolor+'>\n'
    for(var i=0;i<thismenu.items.length;i++){
    var thismenuitem=thismenu.items[i];
    var imgsize;
    if(thismenuitem.sizex=="0"&&thismenuitem.sizey=="0"){
    imgsize=""
    }else{
    imgsize=" width="+thismenuitem.sizex+" height="+thismenuitem.sizey
    }
    var ifspace;
    if(thismenu.caption==""){
    ifspace="";
    }else{
    ifspace=" ";
    }
    if(!thismenuitem.isline){
    stringx += "<tr><td class=coolButton style='border: "+mitemedge+"px solid "+mmenucolor+
    "' width=100% height=15px onmouseover=\"mthestatus='"+thismenuitem.statustxt+"';mmenuitem_over(mmenudiv"+x+
    ");\" onmouseout=mmenuitem_out(mmenudiv"+x+
    ") onmousedown=mmenuitem_down(mmenudiv"+x+") onmouseup=";
    stringx += "mexec("+x+","+i+");mmenuitem_up(mmenudiv"+x+") ";
    if(thismenuitem.pos=="0"){
    stringx += "><img align=absmiddle src="+thismenuitem.img+imgsize+">"+ifspace+thismenuitem.caption+"</td></tr>";
    }else if(thismenuitem.pos=="1"){
    stringx += ">"+thismenuitem.caption+ifspace+"<img align=absmiddle src="+thismenuitem.img+imgsize+"></td></tr>";
    }else if(thismenuitem.pos=="2"){
    stringx += "background="+thismenuitem.img+">"+thismenuitem.caption+"</td></tr>";
    }else{
    stringx += ">"+thismenuitem.caption+"</td></tr>";
    }
    }else{
    stringx+='<tr><td height="1" background="hr.gif"><img border="0" src="none.gif" width="1" height="1"></td></tr>\n';
    }
    }stringx+='</table>\n</div>'
    }

    }

    document.write("<div align='left'>"+stringx+"</div>");
    break
    }
    }
    }


    function document_load(){
    mwritetodocument();


    }mpmenu1=new mMenu('文件','','self','','','','');
    mpmenu1.addItem(new mMenuItem('新建','javascript:alert("新建")','self',false,'新建','','','',''));
    mpmenu1.addItem(new mMenuItem('打开','javascript:alert("打开")','self',false,'打开','','','',''));
    mpmenu1.addItem(new mMenuItem('保存','javascript:alert("保存")','self',false,'保存','','','',''));
    mpmenu1.addItem(new mMenuItem(null,null,null,true));
    mpmenu1.addItem(new mMenuItem('退出','javascript:alert("退出")','self',false,'退出','','','',''));
    mpmenu2=new mMenu('编辑','','self','','','','');
    mpmenu2.addItem(new mMenuItem('撤销','javascript:alert("撤销")','self',false,'撤销','','','',''));
    mpmenu2.addItem(new mMenuItem('重做','javascript:alert("重做")','self',false,'重做','','','',''));
    mpmenu2.addItem(new mMenuItem(null,null,null,true));
    mpmenu2.addItem(new mMenuItem('拷贝','javascript:alert("拷贝")','self',false,'拷贝','','','',''));
    mpmenu2.addItem(new mMenuItem('粘贴','javascript:alert("粘贴")','self',false,'粘贴','','','',''));
    mpmenu3=new mMenu('收藏','','self','','','','');
    mpmenu3.addItem(new mMenuItem('我的主页','http://www.tuqiu.com','blank',false,'访问我的主页','','','',''));
    mpmenu3.addItem(new mMenuItem('Yahoo','http://www.yahoo.com','blank',false,'访问Yahoo','','','',''));
    mpmenu4=new mMenu('帮助','','self','','','','');
    mpmenu4.addItem(new mMenuItem('内容','javascript:alert("内容")','self',false,'内容','','','',''));
    mpmenu4.addItem(new mMenuItem('给我写email','mailto:[email protected]','self',false,'给我写email','','','',''));
    mpmenu4.addItem(new mMenuItem(null,null,null,true));
    mpmenu4.addItem(new mMenuItem('关于','javascript:alert("关于")','self',false,'关于这个软件','','','',''));

    </SCRIPT>
    <SCRIPT>document_load()</SCRIPT>
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-2-15 21:33:05 | 显示全部楼层
    谢谢提供,呵呵
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-3-11 20:11:28 | 显示全部楼层
    写简单点
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-11-2 08:52:10 | 显示全部楼层
    先学习学习!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-3-14 17:19:19 | 显示全部楼层
    学习中。。。。。。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2025-1-14 05:30
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2006-3-22 10:56:24 | 显示全部楼层
    谢谢提供这个实用的工具!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-6-20 12:26
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2006-3-31 08:25:57 | 显示全部楼层
    学习中。。。。。。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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