Rumah >pembangunan bahagian belakang >tutorial php >OfficeXP_menu过程版_PHP教程
<?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; ?>