从百度上搞下来的一段示例代码:
function isMouseLeave(evt, element) {
if (evt.type != 'mouseout' && evt.type != 'mouseover') return false;
var target = evt.relatedTarget ? evt.relatedTarget : evt.toElement;
while (target && target != element) {
target = target.parentNode;
}
return (target != element);
}
当一个标签包含子标签时,鼠标从父标签移动到子标签会连续触发父标签及子标签的onmouseover和onmouseout事件。
加入移出移入的代码:
li.onmouseover = function(e) {
// XXXX 移入实现
};
li.onmouseout = function(e) {
e = arguments[0] || window.event;
if (isMouseLeave(e, li_e)) {
// XXXX移出实现
}
};
看上去比较完美的实现,不过在实现中还是出了点差错,在万恶的IE6下,如果代码是这样的结构,并且下拉的菜单的下方有其他元素,问题就来了
<ul>
<li><a></a></li>
<li><a></a></li>
</ul>
原先的预期是鼠标移到ul上时li里的子菜单内容出现
虽然使用了以上方法,但当鼠标移到第二个li时,菜单又消失了。
搞了一个晚上,最后才发现了css设置的问题,需要将a的width设置到100%,让它充满整个li才不会突然跳出。
分享到:
相关推荐
为了解决这个问题,有几种常见的方法可以实现IE6下的`:hover`兼容性: 1. **使用条件注释和专门的IE6 CSS文件**: IE6支持特定的条件注释,允许我们为IE6提供单独的CSS样式表。例如,在HTML头部添加`<!--[if lt IE...
本文主要探讨了利用CSS技术实现下拉菜单的实践方法,并针对IE6.0等早期浏览器存在的兼容性问题,提出了解决方案。 **1. CSS技术与下拉菜单** CSS(层叠样式表)是一种用于定义网页元素样式和布局的语言,它可以将...
3. **JavaScript事件处理**:对于不支持`:hover`伪类的浏览器,如IE6,我们可以利用JavaScript监听`onmouseover`和`onmouseout`事件来模拟悬停效果。当鼠标进入元素时,增加宽度;当鼠标离开时,恢复原状。 4. **...
4. CSS浏览器兼容性:解决IE6不支持`li:hover`的问题。 5. 类操作:用JavaScript添加和移除类来改变元素的样式状态。 通过理解和实践这个实例,你可以更好地掌握前端开发中的动态交互设计,这对于创建吸引用户、...
常用于键盘导航、输入验证等功能。 #### 二、其他事件类型简介 除了鼠标事件外,还有多种类型的事件用于处理不同的交互需求,如页面加载/卸载事件、表单事件等: 1. **页面加载/卸载事件**: - **onLoad**: - ...
在JavaScript中,有几种关键的鼠标事件,包括`onMouseDown`、`onMouseUp`、`onMouseOver`、`onMouseOut`和`onMouseMove`。`onMouseDown`和`onMouseUp`分别用于处理鼠标按键的按下和释放,这两个事件可用于实现例如...
然而,不同浏览器对`:hover`的处理可能有所不同,特别是IE6不支持`:hover`在非链接元素上。为了解决这个问题,可以使用CSS条件注释或者JavaScript进行兼容性处理。基本的CSS样式如下: ```css .menu li { position...
#### (4) `onMouseOver` & `onMouseOut` - **描述**:鼠标移入和移出对象范围时触发的事件。 - **支持浏览器**:IE3+, Netscape2+, Opera3+(`onMouseOver`);IE4+, Netscape3+, Opera3+(`onMouseOut`) - **应用...
### 雅虎、网易Ajax标签导航效果实现 #### 概述 本篇文章将通过一个具体实例来介绍如何使用Ajax技术实现类似雅虎、网易等网站中的标签导航效果。Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个...
JavaScript的关键部分在于对鼠标悬停事件(`onmouseover`)和鼠标移出事件(`onmouseout`)的处理。通过获取一级菜单项`<li>`元素,然后对其分别绑定这两个事件。当鼠标悬停在某一个菜单项上时,对应的一级菜单项下...
`onmouseover`和`onmouseout`事件分别在鼠标进入和离开菜单项时触发`display()`和`hide()`函数。这两个函数通过获取当前`<li>`元素的子元素`<ul>`并改变其`display`样式属性来实现下拉菜单的显示和隐藏。 5. **CSS...
- **示例用途**:实现跟随滚动条的导航栏、侧边栏等。 - **兼容性**:IE4及以上版本、Netscape支持、Opera支持。 8. **onStop(停止事件)**: - **描述**:当用户点击浏览器停止按钮或页面加载中断时触发。 - ...
上述示例已经在 IE6 至 IE8,Firefox,Opera 和 Safari 等浏览器上测试通过。对于不支持 JavaScript 的浏览器,还可以考虑使用渐进增强的方式,使下拉菜单在无脚本的情况下也能正常工作。 最后,你可以通过创建多个...
- **支持浏览器**:Firefox 1+、Netscape 6+、IE 3+。 - **应用场景**:跟踪鼠标位置、动态效果。 #### 14. onmouseout - **描述**:当鼠标从某元素移开时触发。 - **支持浏览器**:Firefox 1+、Netscape 4+、IE 4+...
- **IE6和IE7**:这两个版本的IE浏览器在渲染CSS时存在一定的局限性,例如不支持某些CSS3属性。因此,在编写CSS时需特别注意。 - **Firefox**:这是一个较为现代的浏览器,支持广泛的CSS特性和JavaScript标准。 ###...
接下来,`stuHover`函数通过`onmouseover`和`onmouseout`事件处理程序,动态地添加和移除`iehover`类名,从而控制下拉菜单的显示和隐藏。当鼠标进入`<li>`元素时,`iehover`类被添加,显示下拉菜单;当鼠标离开时,`...
#### 6. onMouseMove - 鼠标移动事件 - **说明**:当用户的鼠标指针在一个元素上移动时触发。 - **兼容性**:IE4|N4|O4 - **示例用途**:创建动态效果、追踪鼠标位置等。 #### 7. onMouseOut - 鼠标离开事件 - **...
`onmouseover`, `onmousedown`, `onmouseup`, `onmouseout` 是用于控制菜单显示和隐藏的关键事件。当鼠标进入、按下、抬起或离开某个一级菜单项时,相应的事件处理函数会被调用。 4. **JavaScript类名操作**: ...
需要注意的是,不同的浏览器对某些事件的支持可能存在差异,如文档中提到的FF(Firefox)、N(Netscape)和IE(Internet Explorer),开发者在编写代码时应考虑兼容性问题,以确保在各种环境下都能正常运行。