IE下 jquery的fadeIn与fadeOut方法失效的BUG
这个问题遇到过好多次,因为没有做笔记,所以每次遇到这个问题都要研究半天。好记性不如烂笔头,这话一点没错。
<p id="show_list"> <p class="" val="0"> <p class=" posab" style="top:50px; left:260px;"> <img class="png_bg" src="/uploads/productimage/164613_634717302959421250.png" /></p> <p class="posab alce" style="top:200px; width:260px; left:80px;"> <p class=" f18 l22 alce" style="color:#e99417; margin-top:20px;">测试测试测试</p> <p class=" f14 l22 alce" style="color:#e99417;">测试测试测试</p> <p class="lk444 f14 l22 alce" style="margin-top:5px;">测试测试测试</p> </p> </p>
<p class="" val="0"> <p class=" posab" style="top:50px; left:260px;"> <img class="png_bg" src="/uploads/productimage/164613_634717302959421250.png" /></p> <p class="posab alce" style="top:200px; width:260px; left:80px;"> <p class=" f18 l22 alce" style="color:#e99417; margin-top:20px;">测试测试测试</p> <p class=" f14 l22 alce" style="color:#e99417;">测试测试测试</p> <p class="lk444 f14 l22 alce" style="margin-top:5px;">测试测试测试</p> </p> </p>
<p>
posab 是绝对定位的class
只要把绝对定位换成浮动,就可以实现淡隐淡出的效果了。
<p id="show_list"> <p class="posab" val="0"> <p class="" style="margin-top:50px; float:left; margin-left:260px"> <img class="png_bg" src="/uploads/productimage/164613_634717302959421250.png" /></p> <p class="alce" style="margin-top:-200px; width:260px; margin-left:80px; float:left"> <p class=" f18 l22 alce" style="color:#e99417; margin-top:20px;">测试测试测试</p> <p class=" f14 l22 alce" style="color:#e99417;">测试测试测试</p> <p class="lk444 f14 l22 alce" style="margin-top:5px;">测试测试测试</p> </p> </p> <p class="posab" val="0"> <p class="" style="margin-top:50px; margin-left:260px;"> <img class="png_bg" src="/uploads/productimage/164613_634717302959421250.png" /></p> <p class="alce" style="margin-top:-200px; width:260px; margin-left:80px;float:left"> <p class=" f18 l22 alce" style="color:#e99417; margin-top:20px;float:left">测试测试测试</p> <p class=" f14 l22 alce" style="color:#e99417;">测试测试测试</p> <p class="lk444 f14 l22 alce" style="margin-top:5px;">测试测试测试</p> </p> </p> <p>
具体的位置需要做一些调整
BUG2:父级绝对定位嵌套大于父级尺寸的图片
还有一种情况,是IE8独有的BUG,格式如下
<p class=" posab" style=" top:80px; left:260px;width:550px;height:55px"> <img class="png_bg" src="image.jpg" /> </p>
如果图片的大小超过了p的大小,在IE8下面淡隐淡出效果将会失效
BUG3:
网上还差了一种bug,具体没有遇到过,现也贴上:
IE6 IE7 IE8 在 position : relative 时fadeIn() fadeOut() bug 解决方案
先看一个例子
<p class="fadein"> <p> <p>I am going to fade in ;</p> <p>I am going to fade in ;</p> </p> </p> $('.fadein').fadeIn();
以上代码基本上在所有主流浏览器都可以达到预期效果
但是现实是残酷的, 大家的html结构当然不会这么简单。
我们再加一点东东
<style> .relative{position: relative;} </style>
<p class="fadein"> <p class="relative"> <p>I am going to fade in ;</p> <p>I am going to fade in ;</p> </p> </p> $('.fadein').fadeIn();
这个时候在IE 6 78 就会吭爹的事情出现, 动画不出现有木有! 直接show出来有木有!
这是臭名昭著的 IE 大bug: 如果fadeIn的元素的子元素有position属性时 以relative值为最严重 有position属性的元素不会出现fadeIn的效果!
可能的曲线解决方法:
1, 不用position: relative; 这个嘛 有时候可以做到
2,如果1实在做不到, 比如笔者遇到的情况,那就用each()。 你可以一个一个做这个效果, 这个当然是可以做到的, 不过效率太差, 搞不好会挂掉用户的电脑,比如笔者遇到的情况,有几十个上百个子元素 这个方法是万万使不得滴。。
针对性解决办法
我们要在使用position:relative 而且不使用each()的情况下达到这个效果,可以吗?
可以!
既然这是一个bug 那一定就有hack的方法
$('.fadein').css('position', 'relative').fadeIn();
在fadeIn()之前动态的将其position属性改为relative; 会解决IE7下的这个bug
<style> .relative{position: relative; filter: inherit} </style>
在你子元素有position属性的元素加 filter: inherit; 当前元素的第一层子元素也要加。
这两条一结合 IE678 的问题就都解决了
以上就是IE下 jquery的fadeIn与fadeOut方法失效的BUG的详细内容,更多请关注其它相关文章!
上一篇: 路由协议:RIP
下一篇: 一个关于时间有关问题
推荐阅读
-
IE下 jquery的fadeIn与fadeOut方法失效的BUG
-
IE8下String的Trim()方法失效的解决方法_jquery
-
jquery在ie7下选择器的问题导致append失效的解决方法_jquery
-
使用jQuery解决IE与FireFox下createElement方法的差异
-
jquery submit ie6下失效的原因分析及解决方法
-
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
-
使用jQuery解决IE与FireFox下createElement方法的差异
-
笔记:IE下 jquery的fadeIn与fadeOut方法失效的BUG
-
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)_jquery
-
jquery submit ie6下失效的原因分析及解决方法