`
月舒
  • 浏览: 4599 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

交互内容超出范围外的鼠标移入显示移出隐藏

 
阅读更多

最近做项目的时候,遇到这么一个需求,要求列表中左侧(红框中)的内容在鼠标移入这个li显示,鼠标移出时隐藏。

 



 

一、最初的想法和出现的问题

 

这不就是给li添加mouseentermouseleave事件嘛,直接mouseenter的时候让左边内容显示,mouseleave的时候让左边内容消失。

 

但是,显然,仅仅这样做是不够的,问题来了,左边的交互内容根本不可达!还没等鼠标移到左侧交互内容,它就消失了!因为左侧内容是用绝对定位定在左侧的,但实际上它的范围超出了li的范围,所以当把鼠标移入左侧交互内容时,实际上已经出了li的范围,触发了mouseleave事件,左侧内容直接隐藏了。

二、探索解决办法

 

经同事外号哥提醒,当鼠标移出li的时候,可以用定时器不要让左侧内容马上消失,而是等一段时间再消失,以便让用户有时间移到左侧内容区块。于是,尝试如下。

1、定义一个isOut变量,鼠标移出li时用定时器控制

 

定义一个isOut变量,来标识鼠标是不是在有效区块(li区块或者左侧内容区块为有效区块),如果在有效区块的话,则鼠标移出li时左侧内容不消失,否则左侧内容消失,代码如下。



 


但是这样做并没有取得预想中的效果,出现了问题。鼠标单纯的移入这个li,移出到其他区块(不是这些绑了mouseentermouseleaveli)的时候,是没问题的。但是,只要鼠标在这几个绑了mouseentermouseleaveli中切换,问题就来了,全部li的左侧内容均显示,没有消失。原因就是所有的li绑定的事件都是共用了一个isOut变量。只要鼠标在这些li中,isOut变量都为false,即所有的li左侧内容均显示。

2、定义一个isOut数组,用来标识鼠标是不是在当前li的有效区块,鼠标移出li时用定时器控制

 

一个变量是没有办法的,那么只有用一个数组了,用isOut数组来标识每一个li的状态,以便左侧内容区块的正确显示和消失,如此,问题便解决了,代码如下。



 

 

 

  • 大小: 43.9 KB
  • 大小: 43.2 KB
  • 大小: 25.4 KB
  • 大小: 66.3 KB
  • 大小: 32.9 KB
分享到:
评论

相关推荐

    javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)

    在网页设计中,有时我们需要实现一个功能:当鼠标悬浮在图片上时,显示该图片的放大版,而当鼠标移开时,放大图消失。这种效果通常用于产品展示或者图片预览,使得用户可以更清晰地查看图片细节。在本案例中,我们将...

    使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部

    后者在鼠标移开时将其设为false,隐藏弹窗。 3. **样式(style)**: `.dpop`样式定义了一个绝对定位的弹窗,具有一定的边框和背景色,以确保它在鼠标悬停时正确显示。 4. **数据(data)**: `tableData`是一个...

    jQuery实现鼠标移到某个对象时弹出显示层功能

    当鼠标移入时,设置弹出层的`display`属性为`block`以显示弹出层,并且获取触发事件元素的位置信息以及宽度信息,计算弹出层相对于触发元素的位置,避免弹出层超出浏览器窗口边界。当鼠标移出时,将弹出层的`display...

    CSS实现鼠标移入时图片的放大效果及缓慢过渡效果的示例代码

    本示例将介绍如何使用CSS来实现一个交互效果,即当鼠标移入图片时,图片会逐渐放大,并在鼠标移出后缓慢恢复原状。 首先,我们要了解`transform: scale()`这个CSS属性。`scale()`函数允许我们按比例缩放元素。在...

    js实现html内容循环滚动

    6. **事件监听**:`onmouseover`和`onmouseout`事件分别在鼠标移入和移出"first"元素时触发相应的回调函数,实现了滚动的暂停和恢复功能。 7. **CSS隐藏溢出**:`first`元素的`overflow`属性设置为`hidden`,这样...

    一个CSS+Js实现的鼠标跟随的图片提示效果

    当鼠标移入图片时,触发`mouseover`事件,显示提示信息;当鼠标移出时,触发`mouseout`事件,隐藏提示。此外,还可以使用`mousemove`事件来更新提示框的位置,使其始终保持在鼠标下方。 在实现过程中,通常我们会...

    下拉菜单jquery

    // 鼠标移入/移出下拉菜单时,控制显示/隐藏 $(".dropdown-content").hover( function() { $(this).stop().slideDown("fast"); }, function() { $(this).stop().slideUp("fast"); } ); // 随页面滚动,...

    JS实现电商放大镜效果

    5. 为左侧图片添加鼠标移入和移出事件,以便在悬停时显示放大盒子和右侧图片,在移开时隐藏它们。 具体到代码实现,会涉及以下的JavaScript方法和属性: - `window.onload`:确保在文档加载完毕后执行脚本。 - `...

    js实现图片上下左右滚动代码[参考].pdf

    当鼠标移入 `colee` 容器时,`clearInterval` 清除定时器,停止滚动;当鼠标移出时,通过重新设置定时器恢复滚动。 现在,我们看向上滚动的代码。这部分与向下滚动的代码非常相似,只是滚动方向相反。`colee_bottom...

    jQuery图片跟随鼠标左右摆动特效代码

    5. 添加限制:为了防止图片移出屏幕,需要添加边界判断,避免图片移动超出屏幕范围。 四、优化与扩展 在实际应用中,可能需要对特效进行优化,例如限制图片的摆动幅度,或者添加缓动函数以实现更自然的摆动效果。...

    网页技术中的特效应用

    例如,当鼠标移入按钮时,将执行函数`function(){...}`,而在鼠标离开时,则会调用另一个函数`function(){...}`。 - 在`onmouseover`事件中,检查是否存在当前激活的按钮(`current`)。如果不存在,则设置当前按钮为...

    DreamweaverCS5各种代码大全

    - `onmouseover` 和 `onmouseout` 分别在鼠标移入和移出时触发。 - `this.style.backgroundColor` 改变当前元素的背景颜色。 示例代码: ```html ``` ### 3. 禁止用户拖拽和选择文本 为了防止用户随意拖拽页面...

    jQuery实现鼠标滑动切换图片

    当鼠标移入、移出或按下键盘时,会触发相应的事件并调用`picture`函数,实现图片的切换。 总结一下,通过jQuery实现鼠标滑动切换图片的关键在于使用事件监听(如mouseover)结合CSS类的增减来控制元素的显示状态。...

    jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例

    为了增强用户体验,还添加了鼠标移入和移出的效果,使得列表项在鼠标悬停时高亮显示。 具体到脚本代码,可以看到当文本框(id为"txt1")被点击时,列表框(id为"div_items")的`display`属性被设置为`block`,从而...

    javascript放大镜效果的简单实现

    3. 添加鼠标移入、移动和移出事件监听器。 4. 在鼠标移动时,计算#showimg的位置并更新大图的背景位置。 这种方法虽然简单,但可以实现基本的放大镜效果。在实际项目中,可能需要进一步优化,例如添加平滑过渡效果...

    js提示信息jtip封装代码,可以是图片或文章

    当鼠标移入带有指定类名(如`txbtip`)的元素时,提示框会显示,鼠标移出则隐藏,提供了一个更加灵活、交互性更强的提示效果。 在实际应用中,这样的封装不仅可以用于简单的文字提示,还可以扩展为包含更多交互元素...

    js实现简单的无缝轮播效果

    - `onmouseover`和`onmouseout`事件监听鼠标移入和移出`#box`,控制自动播放的启动和暂停,并显示/隐藏控制按钮。 - 为`olLiArr`数组中的每个元素添加`index`属性,方便后续操作。 - `for`循环用于绑定小圆点的...

    用php实现图片滚动

    - `onmouseover`: 当鼠标移入容器时停止滚动。 - `onmouseout`: 当鼠标移出容器时恢复滚动。 ##### 5. 滚动逻辑分析 - **循环滚动机制**:通过不断改变`tab.scrollTop`的值,模拟出向上滚动的效果。 - **条件判断...

    简单的无间断图片循环

    - 鼠标移入(`onmouseover`)和移出(`onmouseout`)事件监听器分别用于暂停和恢复图片滚动,提供更好的用户体验。 #### 三、实现原理详解 1. **双`<td>`结构**:通过创建两个并排的`<td>`(`demo1`和`demo2`),并将...

    【JavaScript源代码】Vue图片放大镜组件的封装使用详解.docx

    // 鼠标移入左侧区域时,使遮罩层以及右侧大图可见 over: function () { float.style.visibility = "visible"; big.style.visibility = "visible"; big.style.display = "block"; }, // 鼠标移出左侧区域时,...

Global site tag (gtag.js) - Google Analytics