最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

IE下jquery的fadeIn与fadeOut方法失效的BUG

来源:懂视网 责编:小采 时间:2020-11-27 20:17:41
文档

IE下jquery的fadeIn与fadeOut方法失效的BUG

IE下jquery的fadeIn与fadeOut方法失效的BUG:BUG1:绝对定位嵌套绝对定位这个问题遇到过好多次,因为没有做笔记,所以每次遇到这个问题都要研究半天。好记性不如烂笔头,这话一点没错。<p id="show_list"> <p class="" val="0">
推荐度:
导读IE下jquery的fadeIn与fadeOut方法失效的BUG:BUG1:绝对定位嵌套绝对定位这个问题遇到过好多次,因为没有做笔记,所以每次遇到这个问题都要研究半天。好记性不如烂笔头,这话一点没错。<p id="show_list"> <p class="" val="0">

BUG1:绝对定位嵌套绝对定位

这个问题遇到过好多次,因为没有做笔记,所以每次遇到这个问题都要研究半天。好记性不如烂笔头,这话一点没错。

<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 的问题就都解决了

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

IE下jquery的fadeIn与fadeOut方法失效的BUG

IE下jquery的fadeIn与fadeOut方法失效的BUG:BUG1:绝对定位嵌套绝对定位这个问题遇到过好多次,因为没有做笔记,所以每次遇到这个问题都要研究半天。好记性不如烂笔头,这话一点没错。<p id="show_list"> <p class="" val="0">
推荐度:
标签: 失效 IE bug
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top