手机
当前位置:查字典教程网 >网页设计 > Div+Css教程 >两个div叠加触发事件发生闪烁问题的解决方法
两个div叠加触发事件发生闪烁问题的解决方法
摘要:当鼠标移到div1上的时候,会出现div2。出现时div2在div1的上面,div2在出现后发生闪烁的问题。于是开始找问题根源,发现原来是因...

当鼠标移到div1上的时候,会出现div2。出现时div2在div1的上面,div2在出现后发生闪烁的问题。

于是开始找问题根源,发现原来是因为当我们触发div1的时候,div2出现,但是div2是存在于div1上面的,所以当div2出现后,会又一次触发下面div1的事件。通常我们可能给的事件是mouseover和mouseout,因为两个div叠加,div2出现时会多次触发div1的事件,所以就会发生闪烁问题。

解决:

1.一开始换mouseenter和mouseleave,但是发现还是一样的问题。

注:

mouseover()与mouseout() 表示鼠标移入和移出的时候触发,穿过子元素也会触发

mouseenter()和mouseleave() 表示鼠标穿过和穿出时候触发,穿过子元素不会触发

2.然后又添加e.stopPropagation();阻止冒泡和e.preventDefault();阻止默认事件,还是没有对症。

注:

e.stopPropagation(); //阻止冒泡之后,就不会形成冒泡向上传递了。

e.preventDefault(); //阻止默认行为

3.最后换为切换事件toggle切换事件也不顶事儿。

4.最终,如果想用js解决这个问题可能不容易,用js基本都会发生闪烁问题。那么我们使用css方式是不是可以解决呢?网上查了很多资料,发现也有很多人遇到这个问题,使用的是css中的hover来解决的。

具体使用方法:

给两个div的父元素,也就是共同包裹两个div的盒子一个hover,当父元素hover时,div2的样式设置为display:block;于是就顺利解决了这个问题,不会再出现闪烁问题。

下面上代码:

html部分:

XML/HTML Code复制内容到剪贴板 <divclass="fudiv"> <spanclass="div1"><imgsrc="img/jixinjia-partner1.jpg"alt=""/></span> <divclass="div2"> <divclass="box6"><imgsrc="img/qr-code-bg1%20(1).jpg"alt="p"/></div> <p>扫码有奖</p> </div> </div>

css部分:

CSS Code复制内容到剪贴板 .fudiv:hover.div2{ display:block; } .div2{ display:none; }

原本jquery部分,这种方式会出现闪烁问题

JavaScript Code复制内容到剪贴板 <script> $(document).ready( function(){ $(".div1").mouseover( function(e){ e.stopPropagation(); $(".div2").show(); } ); $(".div1").mouseout( function(e){ e.stopPropagation(); $(".div2").toggle(); } ); } ); </script>

以上这篇两个div叠加触发事件发生闪烁问题的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持查字典教程网。

原文地址:http://www.cnblogs.com/hanyining/p/5470581.html

【两个div叠加触发事件发生闪烁问题的解决方法】相关文章:

清除行内元素之间HTML空白的几种解决方案

CSS 控制因Html页面高度导致抖动的问题解决方法

ie placeholder属性的兼容性问题解决方法

IE中div被视频遮住(用embed来内嵌视频)的解决方法

在ie7下css居中样式text-align:center;偏左问题解决方法

Google浏览器CSS居中兼容问题完美解决方法

CSS书写规范及书写顺序的方法

div嵌套 img 空白解决方法

添加css样式的三种方法

Td或Div文字超出宽度的CSS隐藏方法

精品推荐
分类导航