html二级菜单显示与隐藏(下拉菜单控制二级下拉菜单显示与隐藏JS代码)

:暂无数据 2026-10-06 23:50:08 :0

html二级菜单显示与隐藏(下拉菜单控制二级下拉菜单显示与隐藏JS代码)

其实html二级菜单显示与隐藏的问题并不复杂,但是又很多的朋友都不太了解下拉菜单控制二级下拉菜单显示与隐藏JS代码,因此呢,今天小编就来为大家分享html二级菜单显示与隐藏的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

下拉菜单控制二级下拉菜单显示与隐藏JS代码

联动菜单的实现方法:
1.确定数据格式:
首先,我们介绍一下创建 Option 的语法:
Code:
------------------------------------
var newOption = new Option(optionText, optionvalue);
------------------------------------
根据上面的语法,我们知道 select 选项分 optionText 和 optionvalue 两个内容,optionText 即下拉框中我们看到的选项,而 optionvalue 则是提交的实际值。比如一个选项我们看到的是 “北京”,而实际提交的值是 “010”。
为了保持一致,我们确定选项的格式为:
Code:
------------------------------------
{txt:"选项名", val:"选项值"}
------------------------------------
那么一个选项组则是:
Code:
------------------------------------
var childArr = ;
childArr = [
{txt:"选项名1", val:"选项值1"},
{txt:"选项名2", val:"选项值2"},
{txt:"选项名3", val:"选项值3"},
...
{txt:"选项名n", val:"选项值n"}
]
childArr = [
{txt:"选项名1", val:"选项值1"},
{txt:"选项名2", val:"选项值2"},
{txt:"选项名3", val:"选项值3"},
...
{txt:"选项名n", val:"选项值n"}
]
------------------------------------
其中“父选项值”是父下拉列表选中的值。
注意: 和 {} 中的值是以“,” (逗号)分隔的,但是最后一个值后面不能有 “,” (逗号),否则语法错误, PHP 程序员要特别注意 !!!
2.根据传入的数组创建选项列表:
Code:
------------------------------------
for (var i=0; i 《 len; i++)
{
selectObj.options.val);
}
------------------------------------
3.在设置选项之前,我们需要先将原有选项清空:
Code:
------------------------------------
function removeOptions(selectObj)
{
if (typeof selectObj != ’object’)
{
selectObj = document.getElementById(selectObj);
}
// 原有选项计数
var len = selectObj.options.length;
for (var i=0; i 《 len; i++)
{
// 移除当前选项
selectObj.options = null;
}
}
------------------------------------
注意,这里不是用 selectObj.options = null 。
4.设置一个提示选择项和默认选择项:
通常我们在下拉列表中会设置一个提示选择项,如:“请选择城市”,这个选项值为空,作用只是提示用户执行选择操作。
另外,下拉列表也需要能够设置默认选择项,即在页面加载的时候,设置选中状态的项目。
完整代码如下:
-------------------------------------------------------
JS代码:
-------------------------------------------------------
《script language="JavaScript" type="text/javascript"》
《!--
/*
* 说明:将指定下拉列表的选项值清空
***隐藏网址***
*
* @param {String || Object]} selectObj 目标下拉选框的名称或对象,必须
*/

function removeOptions(selectObj) {
if (typeof selectObj != ’object’) {
selectObj = document.getElementById(selectObj);
}

// 原有选项计数
var len = selectObj.options.length;

for (var i=0; i 《 len; i++) {
// 移除当前选项
selectObj.options = null;
}
}

/*
* 说明:设置传入的选项值到指定的下拉列表中
***隐藏网址***
*
* @param {String || Object]} selectObj 目标下拉选框的名称或对象,必须
* @param {Array} optionList 选项值设置 格式: ,必须
* @param {String} firstOption 第一个选项值,如:“请选择”,可选,值为空
* @param {String} selected 默认选中值,可选
*/

function setSelectOption(selectObj, optionList, firstOption, selected) {
if (typeof selectObj != ’object’) {
selectObj = document.getElementById(selectObj);
}

// 清空选项
removeOptions(selectObj);

// 选项计数
var start = 0;

// 如果需要添加第一个选项
if (firstOption) {
selectObj.options = new Option(firstOption, ’’);

// 选项计数从 1 开始
start ++;
}

var len = optionList.length;

for (var i=0; i 《 len; i++) {
// 设置 option
selectObj.options.val);

// 选中项
if(selected == optionList.val) {
selectObj.options.selected = true;
}

// 计数加 1
start ++;
}

}

//--》
《/script》
-------------------------------------------------------
HTML代码:
-------------------------------------------------------
《script language="JavaScript" type="text/javascript"》
var cityArr = ;
cityArr = [
{txt:’南京’, val:’南京’},
{txt:’无锡’, val:’无锡’},
{txt:’徐州’, val:’徐州’},
{txt:’苏州’, val:’苏州’},
{txt:’南通’, val:’南通’},
{txt:’淮阴’, val:’淮阴’},
{txt:’扬州’, val:’扬州’},
{txt:’镇江’, val:’镇江’},
{txt:’常州’, val:’常州’}
];

cityArr = [
{txt:’杭州’, val:’杭州’},
{txt:’宁波’, val:’宁波’},
{txt:’温州’, val:’温州’},
{txt:’湖州’, val:’湖州’}
];

function setCity(province) {
setSelectOption(’city’, cityArr, ’-请选择-’);
}
《/script》

《select name="province" id="province" onchange="if(this.value != ’’) setCity(this.options.value);"》
《option value=""》-请选择-《/option》
《option value="江苏省"》江苏省《/option》
《option value="浙江省"》浙江省《/option》
《/select》 省

《select name="city" id="city"》
《option value=""》-请选择-《/option》
《/select》 市

html二级菜单怎么做

首页我们打看dreamweaver或其它器,创建一个名为nav的导航菜单
《div class="nav"》
《ul》
《li》《a href="#"》栏目一《/a》《/li》
《li》《a href="#"》栏目二《/a》《/li》
《li》《a href="#"》栏目三《/a》《/li》
《li》《a href="#"》栏目四《/a》《/li》
《li》《a href="#"》栏目五《/a》《/li》
《/ul》
《/div》
如下图所示:
2
现在我们为nav添加样式,首先去掉默认的margin和padding,再去掉《ul》《 li》标签的list-style样式和《a》标签的默认下划线。接下来再添加适当的样式(根据实际需要添加)进行美化,如一下样式:
《style type="text/css"》
* { margin:0; padding:0;}
ul, li { list-style:none;}
a { text-decoration:none;}
.nav { border:2px solid #ccc; border-right:none; overflow:hidden; float:left; margin:100px 0 0 300px;}
.nav ul li { float:left;}
.nav ul li a { width:120px; height:40px; text-align:center; line-height:40px; display:block; border-right:2px solid #ccc; background:#eee; color:#666;}
.nav ul li a:hover{ color:#f00; }
《/style》
打开页面预览效果
3
像这样,一个菜单横向菜单就建好了,下来我们给栏目一,栏目二,栏目三,添加二级下拉菜单
《div class="nav"》
《ul》
《li》《a href="#"》栏目一《/a》
《ul》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《/ul》
《/li》
《li》《a href="#"》栏目二《/a》
《ul》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《/ul》
《/li》
《li》《a href="#"》栏目三《/a》
《ul》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《/ul》
《/li》
《li》《a href="#"》栏目四《/a》《/li》
《li》《a href="#"》栏目五《/a》《/li》
《/ul》
《/div》
4
添加完二级栏目后,现在我们开始添加css样式,首先给《li》标签下的《ul》标签添加相对定位,再去除之下《li》标签的做浮动样式,再适当修改《a》标签,如一下样式:
.nav ul li ul { position:absolute;}
.nav ul li ul li { float:none;}
.nav ul li ul li a { border-right:none; border-top:1px dotted #ccc; background:#f5f5f5;}
我们刷新页面预览下效果
5
接下来我们隐藏掉二级下来菜单,并给它添加鼠标滑动效果,使得当鼠标滑动到主栏目时,二级下来菜单显示,样式如下:
.nav ul li ul { position:absolute; display:none;}
.nav ul li ul li { float:none;}
.nav ul li ul li a { border-right:none; border-top:1px dotted #ccc; background:#f5f5f5;}
.nav ul li:hover ul{ display:block; }
再次预览效果,如下图所示:
6
至此,横向二级下拉菜单就制作完成了,这里附加上全部代码,以方便各位朋友参考,感谢各位朋友的浏览。
***隐藏网址***
***隐藏网址***
《head》
***隐藏网址***
《title》横排二级下拉菜单《/title》
《style type="text/css"》
* { margin:0; padding:0;}
ul, li { list-style:none;}
a { text-decoration:none;}
.nav { border:2px solid #ccc; border-right:none; overflow:hidden; float:left; margin:100px 0 0 300px;}
.nav ul li { float:left;}
.nav ul li a { width:120px; height:40px; text-align:center; line-height:40px; display:block; border-right:2px solid #ccc; background:#eee; color:#666;}
.nav ul li a:hover{ color:#f00; }
.nav ul li ul { position:absolute; display:none;}
.nav ul li ul li { float:none;}
.nav ul li ul li a { border-right:none; border-top:1px dotted #ccc; background:#f5f5f5;}
.nav ul li:hover ul{ display:block; }
《/style》
《/head》
《body》
《div class="nav"》
《ul》
《li》《a href="#"》栏目一《/a》
《ul》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《/ul》
《/li》
《li》《a href="#"》栏目二《/a》
《ul》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《/ul》
《/li》
《li》《a href="#"》栏目三《/a》
《ul》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《li》《a href="#"》二级栏目《/a》《/li》
《/ul》
《/li》
《li》《a href="#"》栏目四《/a》《/li》
《li》《a href="#"》栏目五《/a》《/li》
《/ul》
《/div》
《/body》
《/html》

关于二级菜单的问题


《HTML》
《head》《title》test《/title》
《script》
var isDOM = (document.getElementById ? true : false);
var isIE4 = ((document.all && !isDOM) ? true : false);
var isNS4 = (document.layers ? true : false);
var popTimer = 0;// Hide timeout.
// Array showing highlighted menu items.
var litNow = new Array();
function getRef(id) {
if (isDOM) return document.getElementById(id);
if (isIE4) return document.all;
if (isNS4) return document.layers;
}
function getSty(id) {
return (isNS4 ? getRef(id) : getRef(id).style);
}
function popOver(menuNum, itemNum) {
clearTimeout(popTimer);
hideAllBut(menuNum);
litNow = getTree(menuNum, itemNum);
changeCol(litNow, true);
targetNum = menu.target;
if (targetNum 》 0) {
thisX = parseInt(menu.ref.left);
thisY = parseInt(menu.ref.top);
with (menu.ref) {
left = parseInt(thisX + menu.x);
top = parseInt(thisY + menu.y);
visibility = ’visible’;
}
}
}
function popOut(menuNum, itemNum) {
if ((menuNum == 0) && !menu.target)
hideAllBut(0)
else
popTimer = setTimeout(’hideAllBut(0)’, 500);
}
function getTree(menuNum, itemNum) {
// Array index is the menu number. The contents are null (if that menu is not a parent)
// or the item number in that menu that is an ancestor (to light it up).
itemArray = new Array(menu.length);
while(1) {
itemArray = itemNum;
// If we’ve reached the top of the hierarchy, return.
if (menuNum == 0) return itemArray;
itemNum = menu.parentItem;
menuNum = menu.parentMenu;
}
}
// Pass an array and a boolean to specify colour change, true = over colour.
function changeCol(changeArray, isOver) {
for (menuCount = 0; menuCount 《 changeArray.length; menuCount++) {
if (changeArray) {
newCol = isOver ? menu.backCol;
// Change the colours of the div/layer background.
with (menu.ref) {
if (isNS4) bgColor = newCol;
else backgroundColor = newCol;
}
}
}
}
function hideAllBut(menuNum) {
var keepMenus = getTree(menuNum, 1);
for (count = 0; count 《 menu.length; count++)
if (!keepMenus)
menu.ref.visibility = ’hidden’;
changeCol(litNow, false);
}
// *** MENU CONSTRUCTION FUNCTIONS ***
function Menu(isVert, popInd, x, y, width, overCol, backCol, borderClass, textClass) {
// True or false - a vertical menu?
this.isVert = isVert;
// The popout indicator used (if any) for this menu.
this.popInd = popInd
// Position and size settings.
this.x = x;
this.y = y;
this.width = width;
// Colours of menu and items.
this.overCol = overCol;
this.backCol = backCol;
// The stylesheet class used for item borders and the text within items.
this.borderClass = borderClass;
this.textClass = textClass;
// Parent menu and item numbers, indexed later.
this.parentMenu = null;
this.parentItem = null;
// Reference to the object’s style properties (set later).
this.ref = null;
}
function Item(text, href, frame, length, spacing, target) {
this.text = text;
this.href = href;
this.frame = frame;
this.length = length;
this.spacing = spacing;
this.target = target;
// Reference to the object’s style properties (set later).
this.ref = null;
}
function writeMenus() {
if (!isDOM && !isIE4 && !isNS4) return;
for (currMenu = 0; currMenu 《 menu.length; currMenu++) with (menu) {
// Variable for holding HTML for items and positions of next item.
var str = ’’, itemX = 0, itemY = 0;
// Remember, items start from 1 in the array (0 is menu object itself, above).
// Also use properties of each item nested in the other with() for construction.
for (currItem = 1; currItem 《 menu) {
var itemID = ’menu’ + currMenu + ’item’ + currItem;
// The width and height of the menu item - dependent on orientation!
var w = (isVert ? width : length);
var h = (isVert ? length : width);
// Create a div or layer text string with appropriate styles/properties.
// Thanks to Paul Maden () for helping debug this in IE4, apparently
// the width must be a miniumum of 3 for it to work in that browser.
if (isDOM || isIE4) {
str += ’《div id="’ + itemID + ’" style="position: absolute; left: ’ + itemX + ’; top: ’ + itemY + ’; width: ’ + w + ’; height: ’ + h + ’; visibility: inherit; ’;
if (backCol) str += ’background: ’ + backCol + ’; ’;
str += ’" ’;
}
if (isNS4) {
str += ’《layer id="’ + itemID + ’" left="’ + itemX + ’" top="’ + itemY + ’" width="’ + w + ’" height="’ + h + ’" visibility="inherit" ’;
if (backCol) str += ’bgcolor="’ + backCol + ’" ’;
}
if (borderClass) str += ’class="’ + borderClass + ’" ’;
// Add mouseover handlers and finish div/layer.
str += ’onMouseOver="popOver(’ + currMenu + ’,’ + currItem + ’)" onMouseOut="popOut(’ + currMenu + ’,’ + currItem + ’)"》’;
// Add contents of item (default: table with link inside).
// In IE/NS6+, add padding if there’s a border to emulate NS4’s layer padding.
// If a target frame is specified, also add that to the 《a》 tag.
str += ’《table width="’ + (w - 8) + ’" border="0" cellspacing="0" cellpadding="’ + (!isNS4 && borderClass ? 3 : 0) + ’"》《tr》《td align="left" height="’ + (h - 7) + ’"》’ + ’《a class="’ + textClass + ’" href="’ + href + ’"’ + (frame ? ’ target="’ + frame + ’"》’ : ’》’) + text + ’《/a》《/td》’;
if (target 》 0) {
// Set target’s parents to this menu item.
menu.parentMenu = currMenu;
menu.parentItem = currItem;
// Add a popout indicator.
if (popInd) str += ’《td class="’ + textClass + ’" align="right"》’ + popInd + ’《/td》’;
}
str += ’《/tr》《/table》’ + (isNS4 ? ’《/layer》’ : ’《/div》’);
if (isVert) itemY += length + spacing;
else itemX += length + spacing;
}
if (isDOM) {
var newDiv = document.createElement(’div’);
document.getElementsByTagName(’body’).item(0).appendChild(newDiv);
newDiv.innerHTML = str;
ref = newDiv.style;
ref.position = ’absolute’;
ref.visibility = ’hidden’;
}
// Insert a div tag to the end of the BODY with menu HTML in place for IE4.
if (isIE4) {
document.body.insertAdjacentHTML(’beforeEnd’, ’《div id="menu’ + currMenu + ’div" ’ + ’style="position: absolute; visibility: hidden"》’ + str + ’《/div》’);
ref = getSty(’menu’ + currMenu + ’div’);
}
// In NS4, create a reference to a new layer and write the items to it.
if (isNS4) {
ref = new Layer(0);
ref.document.write(str);
ref.document.close();
}
for (currItem = 1; currItem 《 menu.length; currItem++) {
itemName = ’menu’ + currMenu + ’item’ + currItem;
if (isDOM || isIE4) menu.ref = getSty(itemName);
if (isNS4) menu;
}
}
with(menu) {
ref.left = x;
ref.top = y;
ref.visibility = ’visible’;
}
}
// Syntaxes: *** START EDITING HERE, READ THIS SECTION CAREFULLY! ***
//
// menu = new Menu(Vertical menu? (true/false), ’popout indicator’, left, top,
// width, ’mouseover colour’, ’background colour’, ’border stylesheet’, ’text stylesheet’);
//
// Left and Top are measured on-the-fly relative to the top-left corner of its trigger, or
// for the root menu, the top-left corner of the page.
//
// menu = new Item(’Text’, ’URL’, ’target frame’, length of menu item,
// additional spacing to next menu item, number of target menu to popout);
//
// If no target menu (popout) is desired, set it to 0. Likewise, if your site does not use
// frames, pass an empty string as a frame target.
//
// Something that needs explaining - the Vertical Menu setup. You can see most menus below
// are ’true’, that is they are vertical, except for the first root menu. The ’length’ and
// ’width’ of an item depends on its orientation -- length is how long the item runs for in
// the direction of the menu, and width is the lateral dimension of the menu. Just look at
// the examples and tweak the numbers, they’ll make sense eventually :).
var menu = new Array();
// Default colours passed to most menu constructors (just passed to functions, not
// a global variable - makes things easier to change later in bulk).
var defOver = ’#336699’, defBack = ’#003366’;
// Default ’length’ of menu items - item height if menu is vertical, width if horizontal.
var defLength = 22;
// Menu 0 is the special, ’root’ menu from which everything else arises.
menu = new Array();
// A non-vertical menu with a few different colours and no popout indicator, as an example.
// *** MOVE ROOT MENU AROUND HERE *** it’s positioned at (5, 0) and is 17px high now.
menu = new Menu(false, ’’, 5, 0, 17, ’#669999’, ’#006666’, ’’, ’itemText’);
// Notice how the targets are all set to nonzero values...
// The ’length’ of each of these items is 40, and there is spacing of 10 to the next item.
// Most of the links are set to ’#’ hashes, make sure you change them to actual files.
menu = new Item(’ File’, ’#’, ’’, 40, 10, 1);
menu = new Item(’ Edit’, ’#’, ’’, 40, 10, 2);
menu = new Item(’ Help’, ’#’, ’’, 40, 10, 3);
// An example of a link with a target frame/window as well...
***隐藏网址***
***隐藏网址***
// File menu.
menu = new Array();
// The File menu is positioned 0px across and 22 down from its trigger, and is 80 wide.
// All text in this menu has the stylesheet class ’item’ -- see the 《style》 section above.
// We’ve passed a ’greater-than’ sign ’》’ as a popout indicator. Try an image...?
menu = new Menu(true, ’》’, 0, 22, 80, defOver, defBack, ’itemBorder’, ’itemText’);
menu = new Item(’Open’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’Save’, ’#’, ’’, defLength, 0, 0);
// Non-zero target means this will trigger a popout -- menu which is the ’Reopen’ menu.
menu = new Item(’Reopen’, ’#’, ’’, defLength, 0, 4);
menu = new Item(’Exit’, ’#’, ’’, defLength, 0, 0);
// Edit menu.
menu = new Array();
menu = new Menu(true, ’》’, 0, 22, 80, defOver, defBack, ’itemBorder’, ’itemText’);
menu = new Item(’Cut’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’Copy’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’Paste’, ’#’, ’’, defLength, 0, 0);
// Help menu
menu = new Array();
menu = new Menu(true, ’《’, 0, 22, 80, defOver, defBack, ’itemBorder’, ’itemText’);
menu = new Item(’Contents’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’Index’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’About’, ’#’, ’’, defLength, 0, 5);
// Reopen menu
menu = new Array();
menu = new Menu(true, ’》’, 80, 0, 80, defOver, defBack, ’itemBorder’, ’itemText’);
menu = new Item(’site1’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’site2’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’site3’, ’#’, ’’, defLength, 0, 0);
// Help About popout
menu = new Array();
// Leftwards popout with a negative x and y relative to its trigger.
menu = new Menu(true, ’》’, -85, -17, 80, defOver, defBack, ’itemBorder’, ’itemText’);
menu = new Item(’Leftwards!《br》And up!’, ’#’, ’’, 40, 0, 0);
menu = new Array();
menu = new Menu(true, ’》’, 0, 22, 80, defOver, defBack, ’itemBorder’, ’itemText’);
menu = new Item(’site1’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’site2’, ’#’, ’’, defLength, 0, 7);
menu = new Item(’site3’, ’#’, ’’, defLength, 0, 0);
menu = new Array();
menu = new Menu(true, ’》’, 80, 0, 80, defOver, defBack, ’itemBorder’, ’itemText’);
menu = new Item(’site21’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’site22’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’site23’, ’#’, ’’, defLength, 0, 0);
menu = new Array();
menu = new Menu(true, ’》’, 0, 22, 80, defOver, defBack, ’itemBorder’, ’itemText’);
menu = new Item(’other1’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’other2’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’other3’, ’#’, ’’, defLength, 0, 9);
menu = new Array();
menu = new Menu(true, ’》’, 80, 0, 80, defOver, defBack, ’itemBorder’, ’itemText’);
menu = new Item(’other1’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’other2’, ’#’, ’’, defLength, 0, 0);
menu = new Item(’other3’, ’#’, ’’, defLength, 0, 0);
// *** OPTIONAL CODE FROM HERE DOWN ***
// These two lines handle the window resize bug in NS4. See 《body onResize="..."》.
// I recommend you leave this here as otherwise when you resize NS4’s width menus are hidden.
var popOldWidth = window.innerWidth;
nsResizeHandler = new Function(’if (popOldWidth != window.innerWidth) location.reload()’);
// This is a quick snippet that captures all clicks on the document and hides the menus
// every time you click. Use if you want.
if (isNS4) document.captureEvents(Event.CLICK);
document.onclick = clickHandle;
function clickHandle(evt)
{
if (isNS4) document.routeEvent(evt);
hideAllBut(0);
}
// This is just the moving command for the example.
function moveRoot()
{
with(menu.ref) left = ((parseInt(left) 《 100) ? 100 : 5);
}
// End --》
《/script》
《!-- *** IMPORTANT STYLESHEET SECTION - Change the border classes and text colours *** --》
《style》
《!--
.itemBorder { border: 1px solid black }
.itemText { text-decoration: none; color: #FFFFFF; font: 12px Tahoma,Arial, Helvetica }
.crazyBorder { border: 2px outset #663399 }
.crazyText { text-decoration: none; color: #FFCC99; font: Bold 12px Tahoma,Arial, Helvetica }
--》
《/style》
《/head》
《body marginwidth="0" marginheight="0" style="margin: 0" onLoad="writeMenus()" onResize="if (isNS4) nsResizeHandler()"》
《table bgcolor="#006666" width="100%" border="0" cellpadding="0" cellspacing="0"》
《tr》《td height="17"》《font size="1"》 《/font》《/td》《/tr》《/table》
《/body》
《/HTML》

在哪里更改二级菜单显示的位置啊下面是css和javascript代码

先占位。
left:-999em:
em是一个相对长度单位,它是相对于当前对象内文本的字体尺寸。如当前行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。
left是定位中的一个属性,就是说当前对象的最左边位置相对于父对象(父对象没有定义相对定位时则为body)左边位置的距离。这里取很大的999em是为了将ul放在一个不在父对象可视区域的位置,从而达到隐藏的目的。
至于修改二级菜单的位置,见下面代码中的注释。
javascript意思如下:
function menuFix() {
// 获取id为nav这个标签下的所有li标签,
var sfEls = document.getElementById("nav").getElementsByTagName("li");
// 循环为前面得到的每个li标签绑定事件
for (var i=0; i《sfEls.length; i++) {
sfEls.onmouseover=function() {// 绑定鼠标经过事件,在鼠标经过此li时触发此方法并执行此函数
//this.className就是当前循环到的这个li的class属性值
//这句代码的意思就是当这个li的class属性值为空的时候,给它的class值加上一个值sfhover
//也就是说,假设li的class="",则鼠标经过时调用这段代码,它的class值就变成了class="sfhover"
//当class的值不为空的时候,就给这个li的class值加上一个空格,再加上sfhover
//因为当li的class不为空,说明它本身已经有一个class值,要再添加一个样式,应该用空格隔开
//所以就是先加一个空格,再加sfhover,例如li的class="a",则执行这段代码后就成了class="a sfhover"
// 下面几个方法中的代码和这个代码的处理是一样的,就不做说明了。
this.className+=(this.className.length》0? " ": "") + "sfhover";
}
sfEls.onMouseDown=function() {//给当前li添加鼠标按下事件,当鼠标在这个li上按下的时候触发这个事件并执行此函数
this.className+=(this.className.length》0? " ": "") + "sfhover";
}
sfEls.onMouseUp=function() {//给当前li添加鼠标放开事件,即原本鼠标是按下状态,松开鼠标后触发此事件并执行此函数
this.className+=(this.className.length》0? " ": "") + "sfhover";
}
sfEls.onmouseout=function() {// 给当前li添加鼠标移开事件,即原本鼠标在这个li上,鼠标从这个li的范围移开时触发此事件并执行此方法
//这个处理和前面的不一样,它的意思是,取到当前li原来的class属性值,将这个属性值中的所有sfhover都替换成空字符串,也就相当于去掉所有sfhover
//假定经过前面一系列事件后,这个li的class="a sfhover sfhover",经过这个函数后,它的class就会变回class="a"
this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"),
"");
}
}
}
window.onload=menuFix;
在html里添加一个ul就可以用了,添加规则如下。
《!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"》
《HTML》
《HEAD》
《/HEAD》
《script type=text/javascript》《!--//--》《![CDATA[//》《!--
function menuFix() {
var sfEls = document.getElementById("nav").getElementsByTagName("li");
for (var i=0; i《sfEls.length; i++) {
sfEls.onmouseover=function() {
this.className+=(this.className.length》0? " ": "") + "sfhover";
}
sfEls.onMouseDown=function() {
this.className+=(this.className.length》0? " ": "") + "sfhover";
}
sfEls.onMouseUp=function() {
this.className+=(this.className.length》0? " ": "") + "sfhover";
}
sfEls.onmouseout=function() {
this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"),
"");
}
}
}
window.onload=menuFix;
//--》《!]]》《/script》
《style》
#nav {line-height: 30px; list-style-type: none; background:#F00;}
#nav a {display: block; width: 80px; text-align:center;}
#nav a:link {color:#F00; text-decoration:none;}
#nav a:visited {color:#F00;text-decoration:none;}
#nav a:hover {color:#F00;text-decoration:none;font-weight:bold;}
#nav li {float: left; width: 80px; background:#CCC;}
#nav li a:hover{background:#999;}
#nav li ul {line-height: 27px; list-style-type: none;text-align:left;left: -999em; width: 180px; position: absolute;background-color:black; }/*我给它加了个背景色*/
#nav li ul li{float: left; width: 100px;background: #F6F6F6; }
#nav li ul a{display: block; width: 100px;text-align:left;padding-left:24px;}
#nav li ul a:link {color:#666; text-decoration:none;}
#nav li ul a:visited {color:#666;text-decoration:none;}
#nav li ul a:hover {color:#F3F3F3;text-decoration:none;font-weight:normal;background:#C00;}
#nav li:hover ul {left: auto; display:block}/*修改这个left的值可以修改位置,大概改为-40px可以喝顶级菜单左对齐,你也可以换成其他数字,比如-30px、-20px等*/
#nav li.sfhover ul {left: auto; display:block}/*这个left的值和上一个一样就行了*/
《/style》
《BODY》
《ul id="nav"》
《li》
《a href="#"》test《/a》
《ul》
《/li》《a href="#"》test2《/a》《/li》
《/li》《a href="#"》test2《/a》《/li》
《/li》《a href="#"》test2《/a》《/li》
《/li》《a href="#"》test2《/a》《/li》
《/ul》
《/li》
《li》
《a href="#"》test《/a》
《ul》
《/li》《a href="#"》test2《/a》《/li》
《/li》《a href="#"》test2《/a》《/li》
《/li》《a href="#"》test2《/a》《/li》
《/li》《a href="#"》test2《/a》《/li》
《/ul》
《/li》
《li》
《a href="#"》test《/a》
《ul》
《/li》《a href="#"》test2《/a》《/li》
《/li》《a href="#"》test2《/a》《/li》
《/li》《a href="#"》test2《/a》《/li》
《/li》《a href="#"》test2《/a》《/li》
《/ul》
《/li》
《li》
《a href="#"》test《/a》
《ul》
《/li》《a href="#"》test2《/a》《/li》
《/li》《a href="#"》test2《/a》《/li》
《/li》《a href="#"》test2《/a》《/li》
《/li》《a href="#"》test2《/a》《/li》
《/ul》
《/li》
《/ul》
《/BODY》
《/HTML》

网站栏目怎么出现下拉菜单,就是鼠标放上去怎么显示二级栏目

先在网站的head模板添加二级菜单的html代码,如下

添加之后前台就可以显示二级菜单,但会出现乱码,然后找到相应的css文件,在/*nav*/部分,加入以下代码,具体风格可以自己改,

.navulliul{position:absolute;display:none;}

.navulliulli{float:none;}

.navulliullia{border-right:none;border-top:0pxdottedccc;background:00000000;font-size:15px;color:fff;}

.navulliulli.nava{color:FFFFFF;display:inline-block;padding:012px;height:44px;line-height:40px;font-size:18px;color:fff;margin-left:5px;font-family:Arial,"宋体";}

.navulli:hoverul{display:block;}

文章分享结束,html二级菜单显示与隐藏和下拉菜单控制二级下拉菜单显示与隐藏JS代码的答案你都知道了吗?欢迎再次光临本站哦!

html二级菜单显示与隐藏(下拉菜单控制二级下拉菜单显示与隐藏JS代码)

本文编辑:admin

更多文章:


drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

本篇文章给大家谈谈drawerlayout,以及android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月10日 19:20

xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)

xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)

大家好,今天小编来为大家解答以下的问题,关于xor四位数怎么运算,单片机怎样用C语言实现4个数字间的异或这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 17:50

perl数组中最多的元素(用perl实现,得到一个数组中重复次数最多的元素)

perl数组中最多的元素(用perl实现,得到一个数组中重复次数最多的元素)

其实perl数组中最多的元素的问题并不复杂,但是又很多的朋友都不太了解用perl实现,得到一个数组中重复次数最多的元素,因此呢,今天小编就来为大家分享perl数组中最多的元素的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧

2026年10月10日 17:00

oracle11g端口映射客户端频繁掉线(oracle本地进行连接的时候报错ORA-12560: TNS: 协议适配器错误)

oracle11g端口映射客户端频繁掉线(oracle本地进行连接的时候报错ORA-12560: TNS: 协议适配器错误)

各位老铁们好,相信很多人对oracle11g端口映射客户端频繁掉线都不是特别的了解,因此呢,今天就来为大家分享下关于oracle11g端口映射客户端频繁掉线以及oracle本地进行连接的时候报错ORA-12560: TNS: 协议适配器错误

2026年10月10日 16:10

html5不支持frameset(html5废标签)

html5不支持frameset(html5废标签)

“html5不支持frameset”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看html5不支持frameset(html5废标签)!

2026年10月10日 13:50

vb程序设计里面的x是啥(VB程序设计中的变量是如何定义的,请大家帮帮忙告诉我)

vb程序设计里面的x是啥(VB程序设计中的变量是如何定义的,请大家帮帮忙告诉我)

大家好,今天小编来为大家解答以下的问题,关于vb程序设计里面的x是啥,VB程序设计中的变量是如何定义的,请大家帮帮忙告诉我这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 10:40

java定时器每一分钟执行一次(java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现)

java定时器每一分钟执行一次(java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现)

大家好,今天小编来为大家解答以下的问题,关于java定时器每一分钟执行一次,java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 08:50

织梦行云泪眼彷徨(织梦行云代词版在那下 大侠)

织梦行云泪眼彷徨(织梦行云代词版在那下 大侠)

这篇文章给大家聊聊关于织梦行云泪眼彷徨,以及织梦行云代词版在那下 大侠对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月10日 07:10

安卓教程 app(安卓如何通知触发启动手机app)

安卓教程 app(安卓如何通知触发启动手机app)

大家好,安卓教程 app相信很多的网友都不是很明白,包括安卓如何通知触发启动手机app也是一样,不过没有关系,接下来就来为大家分享关于安卓教程 app和安卓如何通知触发启动手机app的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2026年10月10日 04:00

abap开发工作经历(目前,从事的是ABAP开发的不知道做这个有没有什么前途啊好的话,我会加分的~)

abap开发工作经历(目前,从事的是ABAP开发的不知道做这个有没有什么前途啊好的话,我会加分的~)

大家好,abap开发工作经历相信很多的网友都不是很明白,包括目前,从事的是ABAP开发的不知道做这个有没有什么前途啊好的话,我会加分的~也是一样,不过没有关系,接下来就来为大家分享关于abap开发工作经历和目前,从事的是ABAP开发的不知道

2026年10月10日 01:10

最近更新

ipad迷你5和2(ipad型号大全)
2026-10-10 22:40:02 浏览:0
热门文章

打印机m7400(m7400打印机清零方法)
2026-08-29 07:50:01 浏览:5
acrobat各版本区别(Acrobat XI Pro与 Acrobat PRO DC什么区别)
2026-08-29 22:30:20 浏览:2
联想y510p怎么升级(联想y510p换cpu)
2026-08-17 03:30:04 浏览:2
标签列表