原生js实现fadein 和 fadeout淡入淡出效果


Posted in Javascript onJune 05, 2014

js里面设置DOM节点透明度的函数属性:filter= "alpha(opacity=" + value+ ")"(兼容ie)和opacity=value/100(兼容FF和GG)。

先来看看设置透明度的兼容性代码:

function setOpacity(ele, opacity) { 
if (ele.style.opacity != undefined) { 
///兼容FF和GG和新版本IE 
ele.style.opacity = opacity / 100; } else { 
///兼容老版本ie 
ele.style.filter = "alpha(opacity=" + opacity + ")"; 
} 
}

关于有的小伙伴这样写:
function setOpacity(ele, opacity) { 
if (document.all) { 
///兼容ie 
ele.style.filter = "alpha(opacity=" + opacity + ")"; 
} 
ele { 
///兼容FF和GG 
ele.style.opacity = opacity / 100; 
} 
}

我想说这样在IE10下运行有问题,点了之后没反应。因为IE10支持opacity属性不支持filter了,这个方法不可取。

fadein 函数代码:

function fadein(ele, opacity, speed) { 
if (ele) { 
var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity; 
v < 1 && (v = v * 100); 
var count = speed / 1000; 
var avg = count < 2 ? (opacity / count) : (opacity / count - 1); 
var timer = null; 
timer = setInterval(function() { 
if (v < opacity) { 
v += avg; 
setOpacity(ele, v); 
} else { 
clearInterval(timer); 
} 
}, 500); 
} 
}

fadeout 函数代码:
function fadeout(ele, opacity, speed) { 
if (ele) { 
var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity || 100; 
v < 1 && (v = v * 100); 
var count = speed / 1000; 
var avg = (100 - opacity) / count; 
var timer = null; 
timer = setInterval(function() { 
if (v - avg > opacity) { 
v -= avg; 
setOpacity(ele, v); 
} else { 
clearInterval(timer); 
} 
}, 500); 
} 
}

下面给一个demo示例:
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title></title> 
<script type="text/javascript" src="fade.js"></script> 
<script type="text/javascript"> window.onload = function () { 

document.getElementById('Button1').onclick = function () { 
fadeout(document.getElementById('DV'), 0, 6000); 
} 
document.getElementById('Button2').onclick = function () { 
fadein(document.getElementById('DV'), 80, 6000); 
} 
} 
</script> 
</head> 
<body> 
<div id="DV" style="background-color: green; width: 400px; height: 400px;"></div> 
<input id="Button1" type="button" value="button" /> 
<input id="Button2" type="button" value="button" /> 
</body> 
</html>

有什么更好的实现方式可以留言。。。
Javascript 相关文章推荐
javascript实现二分查找法实现代码
Nov 12 Javascript
js 连接数据库如何操作数据库中的数据
Nov 23 Javascript
解决js中window.open弹出的是上次的缓存页面问题
Dec 29 Javascript
javascript实现仿腾讯游戏选择
May 14 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
Dec 03 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
Dec 18 Javascript
canvas实现图片根据滑块放大缩小效果
Feb 24 Javascript
JS数组实现分类统计实例代码
Sep 30 Javascript
vue通过style或者class改变样式的实例代码
Oct 30 Javascript
JavaScript定时器常见用法实例分析
Nov 15 Javascript
vue使用axios实现excel文件下载的功能
Jul 16 Javascript
在vue中使用Base64转码的案例
Aug 07 Javascript
javascript的事件触发器介绍的实现
Jun 05 #Javascript
javascript中attribute和property的区别详解
Jun 05 #Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
Jun 05 #Javascript
用js的document.write输出的广告无阻塞加载的方法
Jun 05 #Javascript
javascript数组去重方法终极总结
Jun 05 #Javascript
javascript设计模式之解释器模式详解
Jun 05 #Javascript
javascript监听鼠标滚轮事件浅析
Jun 05 #Javascript
You might like
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
PHP中使用BigMap实例
2015/03/30 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
解决Python3下map函数的显示问题
2019/12/04 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
端口镜像是怎么实现的
2014/03/25 面试题
《骆驼和羊》教学反思
2014/02/27 职场文书
学生检讨书如何写
2014/10/30 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
安全伴我行主题班会
2015/08/13 职场文书
学习心理学心得体会
2016/01/22 职场文书
HTML常用标签超详细整理
2022/03/19 HTML / CSS