`
taody
  • 浏览: 100085 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

javascript实现IE、Firefox兼容的图片渐变功能

 
阅读更多

欢迎访问我的java技术交流社区资源论坛http://www.javadt.com
该文章转自
javascript实现IE、Firefox兼容的图片渐变功能

 
需求:由于某网站需要实现图片播放器功能,图片跳动显示效果不是很好,所以mark想如果图片渐变显示,效果应该会不错,所以今天花了一点时间来实现。
 
过程:好久没写过代码了,特别是JS代码,以前也很少写,今天下午搞起来真是头痛,只能找找各位朋友的资料,边学边做,最终还是初步实现。
 
涉及知识点:
1。javascript中滤镜filter使用
2。IE、Firefox兼容问题处理
3。Firefox中如何延时处理
 
问题所在
滤镜filter,在IE 4.0的时候已经开始采用,到5.0后功能越来越多,具体功能请各位朋友自己搜寻一下资料,这里不多说了。滤镜filter主要是在IE使用,这样出现了Firefox里不能使用,所以当mark看到Firefox可以设置图片的透明度时,想到可以通过时间控制来实现渐变效果,这又产生了如何进行时间控制的问题。
 
解决过程:
1。测试IE下滤镜filter的正常使用
a) 在图片中添加滤镜: <img src="1.jpg" id="myid" style="filter:blendTrans(Duration=2);">
代码解释:blendTrans:滤镜中的一种,产生淡入淡出的效果;Duration=2:设置变换时间,如设置2秒,即图片会在2秒内完全显示。
b) 获取图片对象:var img = document.getElementById('myid');;
c)使用显示:img.filters[0].Apply();img.filters[0].Play();
代码解释:filters[0]为获取定义的第一个滤镜,Apply()为转换被应用,Play()开始执行
主要代码:
<img src="1.jpg" id="myid" style="filter:blendTrans(Duration=2);">
<script language="javascript">
var img = document.getElementById('myid');
var i=1;
img.filters[0].Apply();
img.filters[0].Play();
}
</script>
 
2.IE、Firefox兼容问题处理
当你在Firefox里执行上述代码时,会发现图片不会有渐变效果,这时候只有想点办法来模拟了。
a)使用style.MozOpacity来设置图片透明度:
var img = document.getElementById('myid');
img.style.MozOpacity=0.1;
代码解释:style.MozOpacity为Firefox使用的设置样式透明度属性,IE对应的是alpha.opacity;
          0.1为90%的透明,1为0%的透明,即完全不透明。
b)剩下是怎样通过时间控制图片不同透明度显示的问题了。
 
3.Firefox中如何延时处理
a)使用setTimeout(表达式,延时时间)在执行时,是在载入后延迟指定时间后,去执行一次表达式,次数只有一次,延时时间的单位为毫秒。
如:var i=0; setTimeout(function(){i+=1;alert(i);},1000);,这样会每一秒会弹出提示框显示1.2.3....
b)使用setTimeout可以延时处理了,但setTimeout只会执行一次,那表示你只有一次机会,但是现在要模拟动画片显示的效果,怎样实现呢?
这时候mark发现setTimeout时可以嵌套使用的,那就OK了,可以解决的。
定义函数并嵌套使用:
this.go1 = function(){//定义函数
 img.style.MozOpacity=i*0.025;//页面跳转
 i++;
 if(i==40){return;}
 setTimeout(function(){this.go1();},50);//50毫秒后执行函数go1
}
外部调用:setTimeout(function(){this.go1();},1);//1毫秒后执行函数go1
代码解释:这里要注意嵌套使用时需要跳出来,如果不是就会出现死循环,if(i==300){return;};
          i为图片渐变显示的次数,0.025为每次渐变增加的显示度,当i=40时,刚好用了2秒(40*50毫秒),显示度为1,完全不透明显示。

主要代码:
<img src="1.jpg" id="myid" style="filter:blendTrans(Duration=2);">
<script language="javascript">
var img = document.getElementById('myid');
var i=1;
this.go1 = function(){//定义函数
img.style.MozOpacity=i*0.025;//设置透明度
i++;
 if(i==40){
  return;
 }
 setTimeout(function(){this.go1();},50);//1秒后执行函数go
}
</script>
 
4。到目前为止,IE和Firefox可以单独处理,现在只要判断一下客户端使用的是什么浏览器,整合一下就OK了
主要代码:
<img src="1.jpg" id="myid" style="filter:blendTrans(Duration=2);">
<img src="2.jpg" id="myid2" style="filter:blendTrans(Duration=2);">//用于IE和FF的显示对比
<script language="javascript">
var IEFF = navigator.userAgent.indexOf("MSIE")>0? 1: 0; 
var img = document.getElementById('myid');
var img2 = document.getElementById('myid2');
var i=1;
if(IEFF==0){//FF
 this.go1 = function(){//定义函数
  img.style.MozOpacity=i*0.025;
  i++;
  if(i==40){
   return;
  }
  setTimeout(function(){this.go1();},50);
 }
 setTimeout(function(){this.go1();},1);
}else{//IE
 img.filters[0].Apply();
 img.filters[0].Play();
 img2.filters[0].Apply();
 img2.filters[0].Play();
}
</script>
 
5。测试
mark的测试环境:
windows xp;
IE 7.0;
Firefox 8.01
测试中会看到IE中1.jpg和2.jpg都会渐变显示,2秒出来,而在Firefox中,1.jpg会渐变显示,而2.jpg没此效果。
本文由mark编写,转载请注明:转载自ajava.org。
本人水平有限,可能其中有错漏或更好的办法处理,欢迎指正。其他浏览器的图片渐变显示,还需要各位朋友来写,欢迎各位朋友到ajava交流技术、生活点滴。
 
分享到:
评论

相关推荐

    javascript日历控件 兼容ie firefox opera

    鉴于IE、Firefox和Opera在JavaScript实现上的差异,开发兼容这些浏览器的日历控件需要处理各种浏览器的特性和兼容性问题。例如,IE对某些DOM操作和CSS属性的支持不同于Firefox和Opera,因此,开发者可能需要使用...

    IE与Firefox的CSS兼容大全.rar

    其次,Firefox通常对CSS3新特性支持较好,如圆角`border-radius`、阴影`box-shadow`、渐变`linear-gradient`等,而IE则需要特定的滤镜(如`-ms-filter`或`filter`)来实现这些效果。同时,Firefox支持`calc()`函数...

    Firefox和IE兼容参考

    在网页开发过程中,Firefox(火狐浏览器)和Internet Explorer(IE浏览器)的兼容性问题一直是一大挑战。这两个浏览器在解析HTML、CSS以及JavaScript时有着不同的实现方式,导致某些代码在Firefox下正常运行,但在IE...

    JavaScript画线,画图兼容FireFox,IE等浏览器

    本主题主要探讨如何使用JavaScript实现跨浏览器的画线和画图功能,特别是兼容Firefox和IE等主流浏览器。 首先,JavaScript本身并不直接支持 canvas 元素的低级图形操作。canvas 是HTML5引入的一个元素,提供了在...

    JS实现图片渐变

    本文将对 JS 实现图片渐变的知识点进行详细讲解,包括 JavaScript 中滤镜 filter 的使用、IE 和 Firefox 的兼容问题处理、Firefox 中的延时处理等。 一、JavaScript 中滤镜 filter 的使用 滤镜 filter 是一种常用...

    css在firefox IE的兼容性(案例分析及解决方案)

    在网页开发过程中,CSS(层叠样式表)的兼容性问题常常是开发者面临的挑战,特别是在处理Firefox和Internet Explorer(IE)这两个浏览器时。Firefox和IE对CSS的理解和执行方式存在差异,导致某些样式在其中一个...

    浏览器兼容(支持IE和firefox)

    6. **CSS3属性**:如渐变、阴影、圆角等在IE6和Firefox早期版本中不支持,需要使用图片或者渐进增强的方式来实现。 7. **PNG透明度**:IE6不支持PNG24位的透明,需要使用`AlphaImageLoader`滤镜解决。 8. **事件...

    div+css 完全兼容 样式兼容性 ie6 ie7 IE8 IE9 和firefox方法

    然而,由于不同浏览器对CSS标准的支持程度不一,尤其是在IE6、IE7、IE8、IE9和Firefox之间存在兼容性问题,开发者需要采取特殊策略来确保页面在这些浏览器上正常显示。本文将深入探讨如何实现`div+css`的完全兼容。 ...

    CSS兼容IE和Firefox的技巧集合.rar

    5. CSS3属性兼容:如圆角、阴影、渐变等CSS3特性,IE9及以下版本需要使用专有的 `-ms-` 前缀,而Firefox则需要 `-moz-`。使用autoprefixer工具可以帮助自动添加这些前缀。 6. Flexbox和Grid布局:IE10及以下版本对...

    CSS兼容IE和Firefox的技巧集合

    然而,由于不同的浏览器对CSS规范的实现存在差异,特别是Internet Explorer(IE)与Firefox,开发者常常面临兼容性问题。本文将深入探讨解决CSS在IE和Firefox之间兼容性问题的一些关键技巧。 首先,理解盒模型差异...

    网页模式对话框效果,兼容IE6,7,8,firefox

    4. **事件处理**:在Firefox和其他现代浏览器中,可以通过`Esc`键关闭模态对话框,但在IE6-8中可能需要编写额外的代码来实现这一功能。此外,确保点击对话框外部不会关闭对话框也是关键。 5. **遮罩层**:模态...

    javascript和css在IE和Firefox中的不同点

    JavaScript 和 CSS 在不同的浏览器上,特别是 Internet Explorer (IE) 和 Mozilla Firefox 之间存在一些差异,这些差异主要体现在解析规则、实现细节以及某些功能的支持上。理解这些差异对于编写跨浏览器兼容的代码...

    解决CSS在IE与火狐下的兼容问题

    然而,由于不同浏览器的解析方式存在差异,尤其是在Internet Explorer(IE)和Firefox之间,CSS兼容性问题时常困扰着开发者。本文将深入探讨如何解决CSS在IE与Firefox下的兼容问题,帮助你的网页在各种浏览器中展现...

    CSS在ie firefox中 样式问题

    然而,由于各个浏览器对CSS规范的实现存在差异,尤其是IE(Internet Explorer)和Firefox,开发者经常面临样式兼容性问题。本文将深入探讨在IE和Firefox中常见的CSS样式问题及其解决方案。 1. **盒模型差异** - IE...

    jquery插件实现图片渐变切换,焦点图代码.rar

    至于兼容性问题,描述中提到该解决方案在Firefox和Chrome下可能存在问题,而在IE下加载较慢。这通常是由于浏览器对某些JavaScript特性的支持程度不同导致的。为了解决这些问题,我们可以采用以下策略: 1. 使用...

    Banner广告图片 (兼容IE6-IE10 火狐 谷歌等浏览器的)

    这篇内容主要关注的是如何创建一个适用于多种浏览器的Banner广告图片,包括了较老版本的Internet Explorer(从IE6到IE10),以及Firefox和Google Chrome等现代浏览器。在Web开发中,考虑到不同浏览器对某些CSS、...

    javascript支持IE和firefox(FF)的渐变透明效果

    标题和描述中提到的焦点是JavaScript实现的跨浏览器渐变透明效果,特别是针对Internet Explorer(IE)和Firefox(FF)这两种浏览器。渐变透明是一种视觉效果,可以使元素从完全不透明逐渐变为半透明或从半透明过渡到...

    IE/FF兼容问题

    - "JavaScript常用浏览器对象.mht"和"JS的IE和Firefox兼容性汇编.mht"可能包含了针对不同浏览器的JavaScript对象和兼容性解决方案的详细信息,如navigator对象、window对象等。 - "Javascript document对象详解....

    jquery实现图片渐变切换兼容ie6/Chrome/Firefox

    4. 代码的兼容性处理:从描述中我们可以知道,这段代码需要兼容IE6、Chrome和Firefox三种浏览器。在实现中,作者可能需要对不同浏览器的兼容性问题进行处理,以保证在各种浏览器中都能正常显示效果。 5. HTML和CSS的...

    兼容IE的C3

    IE(Internet Explorer)浏览器,尽管在现代已经逐渐被Chrome、Firefox等其他浏览器取代,但在过去很长一段时间内,尤其是IE8及以下版本,其对CSS3新特性的支持并不完善。"兼容IE的C3"是一个解决此类问题的技术方案...

Global site tag (gtag.js) - Google Analytics