鼠标悬停<a>链接下<li>显示

<td>

<a> 练习一</a>

<a> 练习二</a>

<a class='kc-lx' onmouseover='MM_over(this)' onmouseout='MM_out(this)'>
    练习三
<div id="popup" style="display: none;">
	<ul>
		<li>
		<p onclick="javascript:lx(-1,12,"Y",5069);">
			选择题
		</p>
		</li>
		<li>
		<p onclick="javascript:lx(5077,12,"Y",5069);">
			案例测试题
		</p>
		</li>
	</ul>
</div>
</a>
<td>

//实现功能: 当鼠标悬停到<a> 上, 展示<a>下的所有<li>菜单, 

// children() 方法返回被选元素的所有直接子元素。
function MM_over(mmObj) 
{
    var $mmObj=$(mmObj);  
    $mmObj.css("position","relative");
    var $mSubObj= $mmObj.children().first();
   
    var $td=$mSubObj.parent().parent();
    if( $td.children().length=='3')
    {
    	$mSubObj.attr("style","left:-65px;");//若是第三个<a>,则设置其样式
    }
    $mSubObj.show();	
}
/*-----弹出框-----*/
#popup{width:130px;height:auto;background:#fff;border:1px #dddddd solid;display:none;position:absolute;left:0px;top:24px;z-index:5;filter:progid:DXImageTransform.Microsoft.Shadow(color=#909090,direction=120,strength=4);/*兼容ie*/
-moz-box-shadow: 2px 2px 10px #909090;/*兼容firefox*/
-webkit-box-shadow: 2px 2px 10px #909090;/*兼容safari或chrome*/
box-shadow:2px 2px 10px #909090;/*兼容opera或ie9*/}
#popup ul{}
#popup ul li{width:130px;height:25px;border-bottom:1px #dde4ed solid;}
#popup ul li p{font:12px/25px "宋体";color:#333333;padding:0px 4px;text-align:left;cursor:pointer;float:none}
#popup ul li p:hover{background:#ebebeb;cursor:pointer;}
   部分js方法
if(prresult.length=='1'){
							appendStr += "<a href=\"javascript:lx("+prresult[0].ID+","+ybresult[i].NSRGM+",'"+ybresult[i].SFSY+"',"+ybresult[i].CH_ID+");\" class='sy-lx'>练习</a>"; 
						}else{
							appendStr +="<a class='sy-lx' onmouseover='MM_over(this)' onmouseout='MM_out(this)'>练习<div id='popup'><ul>";
							for(var m=0;m<prresult.length;m++){
								appendStr +=" <li><p onclick='javascript:lx("+prresult[m].ID+","+ybresult[i].NSRGM+",\""+ybresult[i].SFSY+"\","+ybresult[i].CH_ID+");'>"+prresult[m].LX_NAME+"</p></li>";
							}
							appendStr +="</ul></div></a>";
						}



<div class="nav"> <ul> <li class="menu">首页 <ul class="subMenu"> <li><a href="https://www.csgo.com.cn/main.html">游戏官网</a></li> <li><a href="https://www.pwesports.cn/association">高校电竞社</a></li> <li><a href="https://csgo.wanmei.com/communityserver">社区中心</a></li> </ul> </li> <li class="menu"><a href="#">充值</a></li> <li class="menu">新闻 <ul class="subMenu"> <li><a href="https://www.csgo.com.cn/activity/index.html">活动中心</a></li> <li><a href="https://www.csgo.com.cn/match">赛事中心</a></li> <li><a href="https://www.csgo.com.cn/news/index.html">新闻中心</a></li> </ul> </li> <li class="menu"><a href="#">赛事</a></li> <li class="menu">资料 <ul class="subMenu"> <li><a href="https://www.csgo.com.cn/hd/1704/newerguide/index.html">新手指南</a></li> <li><a href="https://www.csgo.com.cn/hd/1610/info/index.html">官方资料站</a></li> <li><a href="https://www.csgo.com.cn/show">游戏特色</a></li> </ul> </li> <li class="menu"><a href="//wmsjdj.tmall.com/category-1465876517.htm">商城</a></li> <li class="menu">服务 <ul class="subMenu"> <li><a href="https://www.csgo.com.cn/faq/index.html">常见问题</a></li> <li><a href="javascript:void(0);">客服支持</a></li> <li><a href="#">礼包码兑换</a></li> </ul> </li> <li class="menu">注册 <ul class="subMenu"> <li><a href="#">游戏下载</a></li> <li><a href="#">账户注册</a></li> </ul> </li> </ul> </div> /* 导航栏样式 */ /* 基础样式 */ .nav { width: 100%; height: 55px; background-color: #3498db; /* 灰蓝色背景 */ height: 50px; } .nav ul { list-style-type: none; margin: 0; padding: 0; display: flex; /* 横向布局 */ justify-content: flex-start; /* 菜单项 */ } .nav li.menu { position: relative; /* 设置相对定位以便子菜单定位 */ padding: 15px 40px; /* 菜单项内边距 */ cursor: pointer; text-align: center; /* 文本居中 */ color: white; /* 默认字体颜色为白色 */ } .nav li.menu:hover { background-color: white; /* 鼠标悬停时背景变为白色 */ color: black; /* 鼠标悬停时字体颜色变为灰蓝色 */ } .nav li.menu a { text-decoration: none; /* 去掉链接下划线 */ color: white; /* 链接默认颜色为白色 */ } .nav li.menu a:hover { color: #3498db; /* 链接悬停时颜色变为灰蓝色 */ } /* 二级菜单样式 */ .subMenu { display: none; /* 默认隐藏二级菜单 */ position: absolute; /* 绝对定位以确保在父菜单下方显示 */ top: 100%; /* 在父菜单正下方显示 */ left: 0; background-color: #3498db; /* 灰蓝色背景 */ width: 110px; /* 二级菜单宽度 */ z-index: 1000; /* 确保二级菜单在其他内容之上 */ } .subMenu li { padding: 10px; /* 二级菜单项内边距 */ color: white; /* 默认字体颜色为白色 */ text-align: left; /* 二级菜单文本左对齐 */ } .subMenu li:hover { background-color: orange; /* 鼠标悬停时背景变为白色 */ color: #3498db; /* 鼠标悬停时字体颜色变为灰蓝色 */ } /* 鼠标悬停显示二级菜单 */ .menu:hover .subMenu { display: block; /* 显示二级菜单 */ } 没有实现打开网页二级菜单默认隐藏,修改代码给出实现二级菜单默认隐藏只有鼠标悬停显示二级菜单,给出HTML,CSS,JS文件
06-15
我们可以将你提供的 HTML 导航菜单中的所有链接(包括下拉菜单项)**统一通过外部 JavaScript 文件控制跳转**,实现完全由 JS 处理页面导航,而不是使用原生的 `<a href="...">` 跳转。 --- ### ✅ 目标 - 所有 `<a>` 标签不再使用 `href` 进行跳转 - 使用 JavaScript 的 `addEventListener` 绑定点击事件 - 实现跳转到对应页面(如:`new_products.html`, `bestsellers.html`, `forum.html` 等) - 保持下拉菜单功能正常(CSS 或 JS 控制显示/隐藏) - 所有逻辑放在一个外部 JS 文件中(例如:`nav.js`) --- ### ✅ 第一步:修改 HTML 结构(移除 href,添加 ID 或 data-page) ```html <ul class="navbar"> <!-- 新品上市 - 带下拉 --> <li class="dropdown" id="newProductsDropdown"> <a href="#" class="dropbtn" data-page="new_products.html">新品上市 ▼</a> <ul class="dropdown-content"> <li><a href="#" data-page="quantum_series.html">量子机甲系列</a></li> <li><a href="#" data-page="gundam_series.html">高达系列</a></li> <li><a href="#" data-page="stellar_armor.html">星环战甲系列</a></li> </ul> </li> <!-- 热销榜单 - 带下拉 --> <li class="dropdown" id="bestSellersDropdown"> <a href="#" class="dropbtn" data-page="bestsellers.html">热销榜单 ▼</a> <ul class="dropdown-content"> <li><a href="#" data-page="gundam_rx78.html">高达 RX-78</a></li> <li><a href="#" data-page="titan_mecha.html">泰坦重装机甲</a></li> <li><a href="#" data-page="cyborg_x9.html">赛博格X-9</a></li> </ul> </li> <!-- 其他导航项 --> <li><a href="#" data-page="forum.html">论坛</a></li> <li><a href="#" data-page="messages.html">消息</a></li> <li><a href="#" data-page="news.html">动态</a></li> <li><a href="#" data-page="about.html">关于我们</a></li> <li><a href="#" data-page="support.html">联系客服</a></li> </ul> ``` > 💡 我们保留了 `href="#"` 是为了防止链接失效,但实际跳转由 JS 完成。也可以设为 `href="javascript:void(0)"` 来更明确地禁用跳转。 --- ### ✅ 第二步:编写外部 JS 文件 `nav.js` ```javascript // nav.js document.addEventListener('DOMContentLoaded', function () { // 获取所有需要跳转的链接(带有 data-page 属性) const links = document.querySelectorAll('a[data-page]'); links.forEach(link => { link.addEventListener('click', function (e) { e.preventDefault(); // 阻止默认跳转行为 const page = this.getAttribute('data-page'); if (page) { window.location.href = page; // 执行跳转 } }); }); // === 下拉菜单交互控制(可选增强)=== const dropdowns = document.querySelectorAll('.dropdown'); dropdowns.forEach(dropdown => { const dropbtn = dropdown.querySelector('.dropbtn'); // 点击下拉标题时,只展开/收起菜单,不跳转(如果是主项) dropbtn.addEventListener('click', function (e) { e.preventDefault(); // 检查是否是主按钮(有 data-page),我们阻止跳转并仅切换菜单 dropdown.classList.toggle('active'); }); }); // 可选:点击其他地方关闭下拉菜单 document.addEventListener('click', function (e) { dropdowns.forEach(dropdown => { if (!dropdown.contains(e.target)) { dropdown.classList.remove('active'); } }); }); }); ``` --- ### ✅ 第三步:添加 CSS 支持下拉菜单显示/隐藏 ```css <style> .navbar { list-style: none; background-color: #1a1a2e; padding: 0; margin: 0; display: flex; font-family: Arial, sans-serif; } .navbar li { position: relative; } .navbar a { display: block; color: #fff; text-decoration: none; padding: 14px 16px; cursor: pointer; } .navbar a:hover { background-color: #0f5b9c; } /* 下拉内容 */ .dropdown-content { display: none; position: absolute; background-color: #2a2a4a; min-width: 180px; box-shadow: 0px 8px 16px rgba(0,0,0,0.3); z-index: 100; list-style: none; } .dropdown-content li a { padding: 12px 16px; } /* 当父级 dropdown 有 active 类时显示下拉菜单 */ .dropdown.active .dropdown-content, .dropdown:hover .dropdown-content { display: block; } </style> ``` --- ### ✅ 第四步:在 HTML 中引入 JS 文件 ```html <script src="nav.js"></script> ``` 确保文件路径正确,例如与 HTML 同目录。 --- ### ✅ 最终效果说明: | 功能 | 实现方式 | |------|----------| | **所有页面跳转** | 通过 `data-page` + JS 实现 | | **下拉菜单展开/收起** | 通过 JS 添加 `active` 类或直接 hover 控制 | | **主菜单项点击(如“新品上市”)** | 不跳转,仅展开菜单(除非你想也跳转首页) | | **子菜单项点击** | 跳转到具体产品页 | > ⚠️ 注意:如果你希望“新品上市”按钮本身也跳转(比如点一下去总览页),可以保留 `data-page="new_products.html"`,并在 JS 中判断是否为下拉按钮,决定是否跳转。 --- ### ✅ 可选增强:点击主菜单项既跳转又展开 如果你希望: - 点击“新品上市” → 跳转到 `new_products.html` - 鼠标悬停 → 展开下拉菜单 可以这样优化 JS: ```js dropbtn.addEventListener('click', function (e) { const page = this.getAttribute('data-page'); const isSubPage = this.parentElement.querySelector('.dropdown-content a[data-page="' + page + '"]'); // 如果这个链接是某个子项的页面,则不跳转,只展开菜单 if (isSubPage) { e.preventDefault(); dropdown.classList.toggle('active'); } else { // 否则跳转 window.location.href = page; } }); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值