jquery点击下拉菜单鼠标移开隐藏(可模拟下拉框)

本文介绍了一个使用jQuery实现的导航栏下拉菜单效果。该菜单包括多个顶级导航项,每个导航项在鼠标悬停时会展开显示子链接。通过jQuery简化了DOM操作,实现了平滑的展开和收起动画。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>

<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){
	$("ul.subnav").parent().append("<span></span>");	
	$("ul.topnav li span").click(function() { 
		$(this).parent().find("ul.subnav").slideDown('fast').show(); 
		$(this).parent().hover(function() {
		}, function(){	
			$(this).parent().find("ul.subnav").slideUp('slow'); 
		});
		}).hover(function() { 
			$(this).addClass("subhover"); 
		}, function(){
			$(this).removeClass("subhover"); 
	});
	$("ul.subnav li").each(function(i){
		$(this).bind("click",function(){
			$(this).parent().parent().find("a.sname").text($(this).find("a").text());  
			$(this).parent().hide();
		}); 			
	});	

});
</script>
<style type="text/css">
body{margin:0;padding:0;font:10px normal Arial, Helvetica, sans-serif;}
/* container */
.container{ width:1200px; margin:0 auto;}
ul.topnav{list-style:none;padding:0 20px;	width:100%;height:35px;background:#222;font-size:1.2em;background:#08A3BC;}
ul.topnav li{float:left;height:35px; width:120px; text-align:center; position:relative;}
ul.topnav li a{padding:10px 5px;color:#fff;display:block;text-decoration:none;}
ul.topnav li a:hover{background:#0C74F0;}
ul.topnav li span{height:35px; width:120px; text-align:center; display:block; position:absolute; left:0; top:0;}
ul.topnav li span.subhover{background-position:center bottom;cursor:pointer;} 
ul.topnav li ul.subnav{list-style:none;position:absolute;left:0;top:35px;background:#333;margin:0;padding:0;display:none;float:left;width:170px;-moz-border-radius-bottomleft:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-left-radius:5px;-webkit-border-bottom-right-radius:5px;border:1px solid #111;}
ul.topnav li ul.subnav li{margin:0;padding:0;border-top:1px solid #252525;border-bottom:1px solid #444;clear:both;width:170px;}
ul.topnav li ul.subnav li a{float:left;width:145px;background:#333;padding-left:20px;}
ul.topnav li ul.subnav li a:hover{background:#222;}
</style>

</head>
<body>

<div class="container">
	<ul class="topnav">
		<li><a href="#">Home</a></li>
		<li>
			<a href="#" class="sname">Tutorials</a>
			<ul style="display: none;" class="subnav">
				<li><a href="#">Sub Nav Link1</a></li>
				<li><a href="#">Sub Nav Link2</a></li>
				<li><a href="#">Sub Nav Link3</a></li>
				<li><a href="#">Sub Nav Link4</a></li>
				<li><a href="#">Sub Nav Link5</a></li>
			</ul>
		</li>
		<li>
			<a href="#" class="sname">Resources</a>
			<ul style="display: none;" class="subnav">
				<li><a href="#">Sub Nav Link1</a></li>
				<li><a href="#">Sub Nav Link2</a></li>
				<li><a href="#">Sub Nav Link3</a></li>
				<li><a href="#">Sub Nav Link4</a></li>
				<li><a href="#">Sub Nav Link5</a></li>
			</ul>
		</li>
		<li><a href="#">About Us</a></li>
		<li><a href="#">Advertise</a></li>
		<li><a href="#">Submit</a></li>
		<li><a href="#">Contact Us</a></li>
	</ul>
</div>
</body>
</html>

### 实现 Vue 中鼠标移入移出触发下拉框显示隐藏效果 为了实现这一功能,在 HTML 结构中创建一个包含输入框下拉列表的组件。通过监听鼠标的进入 (`mouseenter`) 离开 (`mouseleave`) 事件来控制下拉菜单的可见性。 #### 创建基础模板结构 ```html <div id="app"> <div class="dropdown-container" @mouseenter="showDropdown = true" @mouseleave="showDropdown = false"> <input type="text" placeholder="Hover me..." readonly> <!-- 下拉选项 --> <ul v-if="showDropdown" class="dropdown-list"> <li v-for="(item, index) in items" :key="index">{{ item }}</li> </ul> </div> </div> ``` #### 初始化数据与方法定义 在 Vue 实例内部初始化必要的属性以及逻辑处理: ```javascript new Vue({ el: '#app', data() { return { showDropdown: false, items: ['1分', '2分', '3分', '4分', '5分'] // 可选项目 }; } }); ``` 上述代码片段展示了如何利用 `v-if` 指令根据布尔变量 `showDropdown` 的值动态渲染 DOM 节点[^2]。当用户将光标悬停于指定区域之上时,会触发展开操作;而一旦离开了该范围,则自动收起下拉列表[^3]。 对于样式的部分可以根据实际应用场景自行调整,这里提供了一个简单的 CSS 样式供参考: ```css .dropdown-container { position: relative; } .dropdown-list { display: none; list-style-type: none; padding-left: 0px; margin-top: 0px; background-color: white; border: 1px solid gray; width: fit-content; max-height: 150px; overflow-y: auto; } ``` 注意这里的 `.dropdown-list` 默认是不可见的状态(`display:none`),只有当 `v-if` 判断条件成立才会被渲染到页面上并应用相应的样式使其变得可见。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值