1、 S下拉菜单原理

  下拉菜单实际上就是在开始的时候显示一级或者说是主菜单(图一)。当触发条件(例如:鼠标移动到上面时)显示次级菜单(图二)。

图一

图二

  那么如何实现这样的效果呢。其实很简单。所有的下拉菜单都是通过图层的显隐来实现的。在文件下载的时候,其实主菜单和次级菜单都以经形成或者说下载到了客户端也就是你的机器里。只是次级菜单被隐藏起来。隐藏的方法一般是使用javascript 配合css控制次级菜单的图层的属性visibility为隐藏。所以在开始的使用你是看不见次级菜单的。当满足触发条件(例如:鼠标移动到上面)时,在使用javascript来控制次级菜单显示。当在次满足触发条件时(例如:鼠标移开),控制次级菜单隐藏。

  我们现在讲的这个“自适应分辨率可扩展二层JS下拉菜单”可以自动适应浏览器分辨率的改变始终保持相对位置。可以方便的自己定制菜单显示内容及连接页面。可以随意扩充主导航和次导航的栏目个数。可以自由改变连接和导航表格的样式和外观等等。

  2、"自适应分辨率可扩展二层JS下拉菜单"js代码详解

//--------------- 主导航条内容 ------------//
var mainLayer=new Array("蓝色理想","动意营造");//主导航栏目

//--------------- 次导航条内容 ------------//
var subLayer0=new Array("论坛","文献"); //导航栏目一下的次级栏目
var subLayerHttp0=new Array("#","#");//主导航栏目一下的次级栏目连接地址
var subLayer1=new Array("论坛","文献");//导航栏目二的次级栏目
var subLayerHttp1=new Array("#","#");//主导航栏目二的次级栏目连接地址

//--------------- 主导航条Table参数调整 ------------//
var mainTableTdWidth=100; //每个TD的宽度,调整主导航内容间距
var mainTableBorder=0; //调整主导航表格边框宽度
var mainTableCellspacing=0; //调整主导航表格Cellspacing
var mainTableCellpadding=1; //调整主导航表格Cellpadding
var mainTableBgcolor="#000000"; //调整主导航表格背景色
var mainTableBordercolor=""; //调整主导航表格编框颜色
var mainTableBackgroundImg=""; //调整主导航表格背景图片url地址
var hrefClassName="link" //调整url风格样式
var mainTableTdBgcolor="B2CBCF"; //调整主导航表格Td色

//--------------- 次导航条Table参数调整 ------------//
var subTableBorder=0; //调整次导航条表格边框宽度
var subTableCellspacing=0; //调整次导航条表格Cellspacing
var subTableCellpadding=1; //调整次导航条表格Cellpadding
var subTableBgcolor="#000000"; //调整次导航条表格背景色
var subTableBordercolor=""; //次导航条表格编框颜色
var subTableBackgroundImg=""; //次导航条表格背景图片url地址
var subTableTdBgcolor="B2CBCF"; //调整次导航表格Td色
var sbuTabbleTop=21; //次导航表格上下微调
var sbuTabbleLeft=-1; //次导航表格左右微调

//--------------- 系统参数*请勿调整 ------------//
var layerMax=mainLayer.length+10;
var layerName="index";

//--------------- 生成下拉菜单 ------------//
function createMainLayer(){ 
document.write("<table border=0 cellspacing=0 cellpadding=0><tr><td><div id='wall' οnmοuseοut=layervib('visible','"+layerMax+"') style='position:relative; left:0px; top:0px; width:100%; z-index:1' ><table width="+mainLayer.length*mainTableTdWidth+" border='"+mainTableBorder+"' cellspacing='"+mainTableCellpadding+"' cellpadding='"+mainTableCellpadding+"' bgcolor='"+mainTableBgcolor+"' bordercolor='"+mainTableBordercolor+"' background='"+mainTableBackgroundImg+"'><tr>");
for(i=0;i<mainLayer.length;i++){
document.write("<td width='"+mainTableTdWidth+"' bgcolor='"+mainTableTdBgcolor+"' class='"+hrefClassName+"' οnmοuseοver=layervib('visible','"+i+"')>&nbsp;<a href='#'>"+mainLayer[i]+"</a></td>");
}
document.write("</tr></table>");

for(j=0;j<mainLayer.length;j++){
createSubLayer(j);
}
document.write("</div></table></td></tr></table>");
}

//--------------- 生成每项下拉菜单内容 ------------//
function createSubLayer(num){
var subLayerName= layerName +num;
var subLayerLeft=(mainTableTdWidth*num)+mainTableCellpadding+mainTableBorder;
var subLayerList=eval("subLayer"+num);
var subLayerHttpList=eval("subLayerHttp"+num);
document.write("<div id='"+subLayerName+"' style='position:absolute; left:"+(subLayerLeft+sbuTabbleLeft)+"px; top:"+((mainTableBorder+mainTableCellspacing+mainTableCellpadding)*2+sbuTabbleTop)+"px; z-index:2; height: 24px; visibility: hidden' οnmοuseοver=layervib('visible','"+num+"') οnmοuseοut=layervib('visible','"+layerMax+"')>");
if(subLayerList.length!=0){
document.write("<table width='100px' border='"+subTableBorder+"' cellspacing='"+subTableCellpadding+"' cellpadding='"+subTableCellpadding+"' bgcolor='"+subTableBgcolor+"' bordercolor='"+subTableBordercolor+"' background='"+subTableBackgroundImg+"'") 
for(h=0;h<subLayerList.length;h++){

document.write("<tr><td bgcolor='"+subTableTdBgcolor+"' width='100%' class='link'>&nbsp;<a href='"+ subLayerHttpList [h]+"' class='link'>"+subLayerList[h]+"</a>&nbsp;</td></tr>");
}
document.write("</table>");
}
document.write("</div>");

}

//------------------------------次菜单显隐控制--------------------------//
function layervib(type,num){
var H=type;
var temp=(H='visible'?'hidden':'visible')
for(var i=0;i<mainLayer.length;i++){
var E=eval('document.all.index'+i+'.style');
var H=eval(i);
if(i==num){E.visibility=type}else{E.visibility=temp};
}
}

  3、"自适应分辨率可扩展二层JS下拉菜单"js代码使用方法。

  (1) 将上面的代码存储为js_daohang.js.放在和调用的页面同一个目录下。 
  (2) 在需要使用的叶面中在如下位置添加<script language=javascript src=js_daohang.js>

<html>
<head>
<title>平安证券柜台系统...</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="text.css" type="text/css">
<script language=javascript src=js_daohang.js>
</head>

 (3)在需要显示下拉菜单的地方使用

<script language=javascript>
createMainLayer();
</script>

  来产生菜单。如下例。可以随意摆放到页面的任何位置。

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr> 
<td width="300">&nbsp;</td>
<td width="71%" align="center"> 
<script language=javascript>
createMainLayer();
</script>
</td>
</tr>
</table>

  (4)、如何添加新的主菜单及次级菜单的栏目。

  假设我们要在已有的栏目里新增加一个“七色鸟”栏目。下面有“论坛”和“文献”两个次级栏目。那么我么首先要在代码的如下部分添加“七色鸟”。

var mainLayer=new Array("蓝色理想","动意营造","七色鸟");//主导航栏目
0 1 2

  然后在如下的位置添加“论坛”和“文献”栏目及连接地址。

var subLayer0=new Array("论坛","文献"); //导航栏目一下的次级栏目
var subLayerHttp0=new Array("#","#");//主导航栏目一下的次级栏目连接地址
var subLayer1=new Array("论坛","文献");//导航栏目二的次级栏目
var subLayerHttp1=new Array("#","#");//主导航栏目二的次级栏目连接地址
var subLayer2=new Array("论坛","文献");//导航栏目三的次级栏目
var subLayerHttp2=new Array("#","#");//主导航栏目三的次级栏目连接地址

  注意:蓝色部分是需要新添加的部分。红色部分是要修改的部分。要和上面的编号一一对应。 (5)、其他细节调整请参考代码详解部分。

  4、附注及扩充。

  代码中主要使用的函数及方法详解。

Document.write("tmp")页面中写入tmp.
var subLayerHttp1=new Array();定义一个新的数组subLayerHttp1.
For(I=0;I<tmp;I++){语句}设置I=0,当I的值小于tmp的值时执行语句,同时I的值加1。
var temp=(H=值1?值2:值3)当H的值等于值1的时候temp等于值2。反之temp的值等于值3。

增强功能。
//--------------- 系统参数*请勿调整 ------------//
var layerMax=mainLayer.length+10;
var layerName="index"

可以设置layerName=其他字段以生成新的下拉菜单。使页面内共存两个下拉菜单。

转载于:https://www.cnblogs.com/panjun-Donet/archive/2009/02/04/1384125.html

自适应分辨率可扩展二层JS下拉菜单相关推荐

  1. 抗疫逆行者网页作业 感动人物网页代码成品 网页作业带JS下拉菜单 最美逆行者网页模板 致敬疫情感动人物网页设计制作

    大学生抗疫逆行者网页作业成品 作品介绍 作品技术 效果预览 网页下载 作品介绍 逆行者感动人物网页作品包含1个首页5个子页面,共计6个页面,作品采用大学生基础水平制作. 作品技术 主要知识点应用:JS ...

  2. vue.js下拉菜单渲染数据

    首先获取后台数据 <script>var apps = new Vue({el: '#table',data: {selectValue: '',editlist: [],},mounte ...

  3. html+css+js 下拉菜单

    效果如下: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF- ...

  4. css中overflow:hidden的属性 可能会导致js下拉菜单无法显示

    css中overflow:hidden属性导致ExtJS中无法显示下拉滚动条 overflow属性: visible 默认.内容不会被修剪,会呈现在元素之外. hidden 内容会被修剪,但是浏览器不 ...

  5. stm31.js下拉菜单说明

    下面是两个函数的参数说明,希望对大家修改能有些帮助. stm_aix函数: '菜单项显示参数设置 参数(0)="'p1i0'"       '系统参数,无须更改!!! 参数(1)= ...

  6. js 下拉菜单的显示与隐藏

    javascript: <script type="text/javascript">$(document).ready(function(){$(".men ...

  7. JS 下拉菜单内容交换

    方法一 <html><head><title></title><meta charset="UTF-8"></he ...

  8. 抗疫逆行者网页作业 感动人物HTML网页代码成品 网页作业带JS下拉菜单 最美逆行者网页模板 致敬疫情感动人物网页设计制作

  9. 多款较经典的JS下拉菜单 - Javascript/Ajax - 网海拾贝 | 电脑教程软件资讯网

    导读: http://www.xland.com.cn/up/20080122/20080122110727996.gif 下载见文章末尾附件 本文转自 http://www.xland.com.cn ...

最新文章

  1. Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERROR
  2. 简陋,山寨,Everything,桌面搜索,原理,源码
  3. 2018年的最后一篇随笔
  4. [深度学习]什么叫梯度学习
  5. 人脸方向学习(十一):Face Landmark Detection-PFLD解读
  6. 为什么说GO语言,是最重要的编程语言
  7. 215. 数组中的第K个最大元素
  8. excel mmult matlab,如何用excle计算矩阵/在EXCEL中如何计算矩阵行列式
  9. 我拍了拍Redis,被移出了群聊···
  10. layabox 打印_Layabox 集成指南
  11. Python-OpenCV——Image inverting
  12. AE学习日记之MapControl与PageLayoutControl图层变化同步
  13. elasticsearch 数据类型
  14. python学了没有用_如何用Python进行无监督学习
  15. 升级iOS 16后续航时间变短了,如何提升续航?
  16. iOS-建设银行破解分享
  17. 如何在word中粘贴美观工整的代码段(planetB/notepad++)
  18. 大数据在线分析处理和常用工具
  19. android include闪退,运行闪退,怎么解决#includestdio.h#includestdlib【神奇海螺吧】_百度贴吧...
  20. 乐视网CEO梁军:现在就是缺钱 正在重新学习做生意 2017年09月20日01:18 新京报 37 微博 微信 QQ空间 添加喜爱 乐视网CEO梁军。 新京报记者 吴江 摄乐视网CEO梁军。 新京

热门文章

  1. 引导直觉解决数学猜想难题,DeepMind登上《Nature》封面
  2. 下一代汽车的核心竞争力到底是什么?
  3. 大脑进化追不上社会文化:化石和脱氧核糖核酸证明人类大脑进化比社会慢
  4. 重磅!2019年诺贝尔生理学或医学奖揭晓,“细胞感知氧气通路”摘得桂冠
  5. Nature解析中国AI现状,2030年能引领全球吗?
  6. 无线通信界的3大天王,谁能驾驭百亿台IoT设备?
  7. 一文读懂2019年IT及大数据行业趋势
  8. 2018年AI和ML(NLP、计算机视觉、强化学习)技术总结和2019年趋势
  9. 社会科技奖不是新鲜事?如何真正做大
  10. “机器人之夜”看猎豹跑得快还是五款机器人价格降得快?“鸿门宴”正式上演