JavaScript 定时器鼠标悬停移入

本文介绍如何使用CSS和JavaScript创建一个简单的鼠标悬停显示效果,通过设置元素的样式和位置,并利用定时器控制显示与隐藏,实现响应式的用户交互体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE HTML>
<html>

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>无标题文档</title>
		<style>
			#qq {
				width: 200px;
				height: 400px;
				background: #F9C;
			}
			
			#title {
				width: 240px;
				height: 180px;
				background: #FC6;
				position: absolute;
				top: 10px;
				left: 220px;
				display: none;
			}
		</style>
		<script src="js/miaov.js"></script>
		<script>
			$(function() {
				var qq = $('qq');
				var title = $('title');
				//定时器 
				var timer=null;
				//当鼠标移入
				qq.onmousemove=show;
				//当鼠标移开
				qq.onmouseout=hide;
				
				//鼠标移入
				title.onmouseover=show;
				//鼠标移开
				title.onmouseout=hide;
				
				function show(){
					//关闭定时器 鼠标移入右侧
					clearInterval(timer);
					title.style.display='block';
					
				};
				function hide(){
					//定时器
					timer=setTimeout(function(){
						title.style.display='none';
					},200);
				};
			})
		</script>
	</head>

	<body>

		<div id="qq"></div>
		<div id="title"></div>
	</body>
	<script>
		/*定时器*
		 * var timer=setTimeout(函数,毫秒);//只执行一次
		 * clearTimeout(timer);
		 */
	</script>

</html>

 

### 使用 Vue 实现定时器控制下拉框 Hover 显示隐藏效果 为了实现这一功能,在 Vue 中可以利用 `data` 属性来存储状态,并通过方法处理鼠标事件以及设置和清除定时器。下面是一个具体的例子,展示了如何创建一个组件,该组件会在用户将鼠标悬停在其上时展示信息面板,并在一段时间后如果没有进一步交互则将其隐藏。 #### HTML 结构 ```html <div id="app"> <div class="user_header" @mouseover="showUserInfo()" @mouseout="hideUserInfo()"> 用户名 <!-- 下拉菜单 --> <ul v-show="isShow === 'show'" ref="userInfoBox" @mouseover="clearTimer()" @mouseout="startHideTimer()"> <li>选项一</li> <li>选项二</li> <li>更多...</li> </ul> </div> </div> ``` #### JavaScript 部分 ```javascript import Vue from 'vue'; new Vue({ el: '#app', data() { return { isShow: '', timer: null, }; }, methods: { showUserInfo() { this.clearTimer(); this.isShow = 'show'; }, hideUserInfo() { this.timer = setTimeout(() => { this.isShow = ''; }, 500); }, clearTimer() { if (this.timer !== null) { clearTimeout(this.timer); this.timer = null; } }, startHideTimer() { this.hideUserInfo(); } } }); ``` 此代码片段实现了如下逻辑: - 当用户的光标移到 `.user_header` 上时调用 `showUserInfo()` 方法,这会立即取消任何现有的计时器并显示下拉菜单[^1]。 - 如果用户的光标离开了 `.user_header` 或者关联的 `<ul>` 列表项,则启动一个延迟为半秒(即500毫秒)的计时器,之后如果未再次触发其他操作将会把 `isShow` 设置为空字符串从而隐藏下拉菜单。 - 若用户的光标重新回到已经展开的下拉列表内,则停止当前正在运行中的计时器以防止意外关闭。 这种方法不仅能够提供良好的用户体验,而且也遵循了现代前端开发的最佳实践原则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值