首页 > 开发 > PHP > 正文

OfficeXP_menu(过程版)

2024-05-04 22:55:51
字体:
来源:转载
供稿:网友
<?php
/**
* 仿officexp风格的左边版面列表    
* --------------------------------------------------------------------------------
* blood 于 2/19/2002 4:47:11 pm 加贴在 visual basic
*
* 徐祖宁(唠叨) 移植于 2/28/2002
* 更正部分错误
*
*/

if($key == ""):
echo <<<eod
<html>
<head>
<title>menu sample</title>
<script language="javascript">
if (window != top) top.location.href = location.href;
</script>
</head>
  <frameset cols="161,*">        
    <frame marginwidth="0" src="$php_self?key=menu" name="menu" scrolling=no noresize>
    <frame  marginwidth="0" src="$php_self?key=about" name="main" scrolling=auto noresize>
  </frameset>
</html>
eod;
endif;

if($key == "menu"):
/**
*
* $menuon                      定义分类菜单数目
* $menubackcolor               定义分类菜单背景颜色
* $menufontsize                定义分类菜单字体
* $menubarheight               定义分类菜单高度
* $itemtextcolor               定义分类菜单项目文字颜色
* $itembackcolor               定义分类菜单项目背景颜色
* $topmenuheight               定义分类菜单与顶部的间距
* $selecteditemdarkborder      定义分类菜单项目在鼠标移动到上面时的暗边框颜色
* $selecteditemlightborder     定义分类菜单项目在鼠标移动到上面时的亮边框颜色
* $selecteditembackgroundcolor 定义分类菜单项目在鼠标移动到上面时的背景颜色
* $menusubsectionbackcolor     定义二级菜单背景颜色
* $menusubsectionfontcolor     定义二级菜单菜单字体颜色
* $deftarget                   定义菜单项目超连接默认目标框架
*/
$topmenuheight = 0;           //设置分类菜单与顶部的间距
$menubarheight = 20;          //设置分类菜单高度
$menufontsize = "9pt";            //设置菜单字体大小

//我们使用仿office xp风格的外观,也可以使用普通外观。
$menu_mode = false;

if($menu_mode) {
  //普通菜单外观
  $menubackcolor = "lightgrey";             //设置背景颜色
  $itembackcolor = "#7f7f7f";               //设置菜单项目背景色
  $itemtextcolor = "#ffffff";               //设置菜单项目文字颜色
  $selecteditemdarkborder = "#ffffff";      //设置菜单项目在鼠标移动到上面时的暗边框颜色
  $selecteditemlightborder = "#000000";     //设置菜单项目在鼠标移动到上面时的亮边框颜色
  $selecteditembackgroundcolor = "";        //设置菜单项目在鼠标移动到上面时的背景颜色
  $menusubsectionbackcolor = "lightgrey";   //设置二级菜单背景颜色
  $menusubsectionfontcolor="black";          //设置二级菜单字体颜色
}else {
  //仿office xp风格外观
  $menubackcolor = "lightgrey";             //设置背景颜色
  $itembackcolor = "lightgrey";             //设置菜单项目背景色
  $itemtextcolor = "#000000";               //设置菜单项目文字颜色
  $selecteditemdarkborder = "#08246b";      //设置菜单项目在鼠标移动到上面时的暗边框颜色
  $selecteditemlightborder = "#08246b";     //设置菜单项目在鼠标移动到上面时的亮边框颜色
  $selecteditembackgroundcolor = "#b5bed6"; //设置菜单项目在鼠标移动到上面时的背景颜色
  $menusubsectionbackcolor = "darkgray";    //设置二级菜单背景颜色
  $menusubsectionfontcolor = "black";       //设置二级菜单字体颜色
}
$deftarget = "main";    //设置菜单项目超连接默认目标框架

echo <<<eod
<style>
td { font-size: $menufontsize; font-family:"verdana", "arial", "宋体"; }
</style>
<body leftmargin=0 topmargin=0 rightmargin=0 bgcolor="$menubackcolor">
eod;

$menuon = 0;             //对菜单数目初始化

/**
* 绘制菜单方法:
* menustartsection($seq, $label)
*   制作分类菜单
*   $seq = 分类菜单序列号,使用菜单序列号控制启动是显示顺序
*   $label = 分类菜单标题
* menuadditem($label, $description, $url, $target="")
*   制作菜单项目
*   $label = 项目标题
*   $description = 项目简介
*   $url = 超连接地址
*   $target = 超连接目标框架,默认为$deftarget
* menuaddsubsection($label)
*   制作二级分类菜单。
*   $label = 二级分类菜单标题
* menuaddsubsectionline()
*   制作项目分割线,使用高度为2的图片
* menuendsection()
*   分类菜单结束
* menusectionasitem($label, $description, $url, $target="")
*   制作带超连接的分类菜单,类似菜单项目,可以直接使用
*   $label = 分类菜单标题
*   $description = 分类菜单简介
*   $url = 超连接地址
*   $target = 超连接目标框架,默认为$deftarget
*/

/**
* 函数定义
*/
function menuadditem($itemlabel, $statustext, $url, $target="") {
  global $deftarget,
         $selecteditemdarkborder,
         $selecteditemlightborder,
         $itemtextcolor,
         $selecteditembackgroundcolor,
         $menufontsize ;
  if($target == "") $target = $deftarget;
  $url = rawurldecode($url);
  echo <<<eod

<tr><td width="100%" align=left style="cursor:hand;" title="$statustext" onmouseover="this.bordercolordark='$selecteditemdarkborder';this.bordercolorlight='$selecteditemlightborder';this.style.backgroundcolor='$selecteditembackgroundcolor';this.style.color='black';status='$statustext';" onmouseout="this.bordercolordark='';this.bordercolorlight='';this.style.backgroundcolor='';status='';" onclick="window.open('$url','$target');"><font color="$itemtextcolor">$itemlabel</font></td></tr>
eod;
}

function menuaddsubsection($itemlabel) {
  global $menusubsectionbackcolor,
         $menufontsize,
         $menusubsectionfontcolor;
  echo <<<eod

<tr bgcolor="$menusubsectionbackcolor"><td align=center width="100%"><font color="$menusubsectionfontcolor">$itemlabel</font></td></tr>
eod;
}

function menuaddsubsectionline() {
  echo <<<eod

<tr valign="center">
  <td align=center width="100%" height="2" bgcolor="white">
    <table border=0 cellspacing=0 cellpadding=0 width="100%" height="1">
     <tr valign="center" height="2">
       <td bgcolor="white"></td>
     </tr>
    </table>
  </td>
</tr>
eod;
}

function menusectionasitem($sectionseq, $sectionname, $sectiondesc, $url, $target="") {
  global $deftarget,
         $menubackcolor,
         $menubarheight,
         $menufontsize;
  if($target == "") $target = $deftarget;
  $url = rawurldecode($url);
  $mh = $menubarheight-2;
  echo <<<eod

<table border=0 cellspacing=0 cellpadding=0 width="100%" height="1">
<tr valign="center" height="1">
  <td bgcolor="white"></td>
</tr>
</table>
<table bgcolor="$menubackcolor" border=1 cellspacing=0 cellpadding=0 bordercolor="$menubackcolor" width="100%" height="smh">
<tr height="100%" valign="center">
  <td border=3 valign="middle" width="100%" height="100%" bordercolordark=lightgrey bordercolorlight=lightgrey align=center style="cursor:hand;" title="$sectiondesc" onmouseover="status='$sectiondesc';" onmouseout="status='';" onclick="window.open('$url','$target');"><font color="#000000">$sectionname</font></td>
</tr>
</table>
<table border=0 cellspacing=0 cellpadding=0 width="100%" height="1">
<tr height="1">
  <td bgcolor="black"></td>
</tr>
</table>
eod;
}

function menustartsection($sectionseq, $sectionname) {
  global $menubackcolor,
         $menubarheight,
         $menufontsize,
         $menusection,
         $itembackcolor;
  $mh = $menubarheight-2;
  echo <<<eod

<table bgcolor="$menubackcolo" border=0 cellspacing=0 cellpadding=0 width="100%" height="1">
<tr height="1">
  <td bgcolor="white"></td>
</tr>
</table>
<table bgcolor="$menubackcolor" border=1 cellspacing=0 cellpadding=0 bordercolor="$menubackcolor" width="100%" height="$mh">
<tr valign="center" height="100%">
  <td nowrap border=3 width="100%" height="100%" bordercolordark=lightgrey bordercolorlight=lightgrey align=center style="cursor:hand;" title="$sectionname" onmouseover="status='$sectionname';" onmouseout="status='';" onclick="startsection(menusection$sectionseq);">$sectionname</td>
</tr>
</table>
<table border=0 cellspacing=0 cellpadding=0 width="100%" height="1">
<tr height="1">
  <td bgcolor="black"></td>
</tr>
</table>
<div name=menusection$sectionseq id=menusection$sectionseq style="display:'none';overflow:hidden; height:1px;marginright:0px;">
<table bgcolor=$itembackcolor style="marginright=0px;" border=1 cellspacing=0 cellpadding=0 bordercolor="$itembackcolor" width="100%">
eod;
}

function menuendsection() {
  echo <<<eod

</table>
</div>
eod;
}

/**
* 创建菜单
*/
  menustartsection(2, "代码世界");
  menuadditem("joy asp", "欢迎访问joy asp", "$php_self?key=page&id=joy asp");
  menuadditem("java 世界", "欢迎访问java 世界", "$php_self?key=page&id=java 世界");
  menuadditem("dotnet 时代", "欢迎访问dotnet 时代", "$php_self?key=page&id=dotnet 时代");
  menuadditem("visual basic", "欢迎访问visual basic", "$php_self?key=page&id=visual basic");
  menuadditem("delphi", "欢迎访问delphi", "$php_self?key=page&id=delphi");
  menuendsection();

  menustartsection(3, "开心一刻");
  menuadditem("传统笑话", "传统笑话", "$php_self?key=page&id=传统笑话");
  menuadditem("近代笑话", "近代笑话", "$php_self?key=page&id=近代笑话");
  menuaddsubsection("儿童类");
  menuadditem("校园笑话", "校园笑话", "$php_self?key=page&id=校园笑话");
  menuadditem("幼儿笑话", "幼儿笑话", "$php_self?key=page&id=幼儿笑话");
  menuadditem("少年笑话", "少年笑话", "$php_self?key=page&id=少年笑话");
  menuaddsubsectionline();
  menuadditem("中学时代笑话", "中学时代笑话", "$php_self?key=page&id=中学时代笑话");
  menuaddsubsection("成人笑话");
  menuadditem("带颜色的笑话", "带颜色的笑话", "$php_self?key=page&id=带颜色的笑话");
  menuadditem("笑话林", "笑话林", "$php_self?key=page&id=笑话林");
  menuendsection();

  menusectionasitem(3, "菜单简介", "菜单简介", "$php_self?key=about");

  menustartsection(1, "个人收藏夹");
  menuadditem("dotnet 时代", "欢迎访问dotnet 时代", "$php_self?key=page&id=dotnet 时代");
  menuendsection();

  // 将个人收藏夹定为启动菜单
  $menuon = 4;

/**
* 输出javascript脚本
*/
echo <<<eod

<script language=javascript>
var availheight       // 定义可利用的高度
var lastsection       // 定义将要打开的菜单关闭
var thissection       // 定义当前需要打开的菜单
var timerdelay=15     // 定义并设置延时
var menuactive=false  // 测定当前活动的菜单
var visibleheight     // 定义显示高度,确定是否显示滚动条
var aniratio          // 定义菜单显示滑动的速度

function getsizing() {
  // 菜单打开时得到的可利用的高度
  availheight=document.body.clientheight-$topmenuheight-($menubarheight*$menuon)
  if(availheight<=0) {
    lastsection.style.display='none';
  }else {
    // 改变菜单显示滑动速度的比率
    aniratio=0.75;                          // 设定速度
    if(availheight>200) {aniratio=0.667;}  
    if(availheight>500) {aniratio=0.5;}    // 根据可利用高度调整速度
    lastsection.style.height=availheight;
    lastsection.style.overflow='visible';
    lastsection.style.display='';
    visibleheight=parseint(lastsection.clientheight);
    if(visibleheight>availheight) {lastsection.style.overflow='auto';}else{lastsection.style.overflow='hidden';};
  }
}

function slidemenu() {
  // 菜单滑动函数
  if(parseint(lastsection.style.height)>1) {
    lastsection.style.height=parseint(parseint(lastsection.style.height)*aniratio);
    thissection.style.height=availheight-parseint(lastsection.style.height);
    var movetimer=settimeout("slidemenu()",timerdelay)  ;
  }else {
    // 完成菜单滑动,显示新打开的菜单,隐藏前面以打开的菜单
    lastsection.style.display='none';
    thissection.style.height=availheight;
    menuactive=false;
    if (visibleheight>availheight) {thissection.style.overflow='auto';};
    thissection.style.marginright=0;
    lastsection=thissection;
    cleartimeout(movetimer);
  }
}

function startsection(thesection) {
  // 开始滑动菜单,检测是否对菜单进行单击
  if(menuactive==false) {
    if(lastsection!=thesection) {
      menuactive=true;
      thissection=thesection;
      lastsection.style.overflow='hidden';
      thissection.style.overflow='visible';
      thissection.style.display='';
      visibleheight=parseint(thissection.clientheight);
      thissection.style.overflow='hidden';
      thissection.style.display='none';
      thissection.style.height=1;
      lastsection.style.height=availheight-1;
      lastsection.style.display='';
      thissection.style.display='';
      slidemenu()
    }
  }
}

window.onresize=getsizing
// 启动时打开默认的序号为第一个的菜单
lastsection=document.all.menusection1;
lastsection.style.display='';
getsizing();
</script>
</body>
eod;

endif;


if($key == "page"):
echo <<<eod
<style>
body { font-size: 9pt; font-family:"verdana", "arial", "宋体"; }
</style>
<body>
<center>
<br>
<br>
欢迎访问 $id
</center>
</body>
eod;
endif;

if($key == "about"):
echo <<<eod
<style>
body { font-size: 9pt; font-family:"verdana", "arial", "宋体"; }
</style>
<body>
<center>
<br>
<br>
关于此菜单
<br>
<br>
说明,此菜单程序只能使用在ie 5以上的版本使用,netspace下不能使用,推荐使用ie 6正式中文版
</center>
</body>
eod;
endif;
?>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表