原生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 相关文章推荐
cssQuery()的下载与使用方法
Jan 12 Javascript
ExtJS Store的数据访问与更新问题
Apr 28 Javascript
UserData用法总结 lanyu出品
Jul 01 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
Jan 17 Javascript
javascript的回调函数应用示例
Feb 20 Javascript
JavaScript获取Url里的参数
Dec 18 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
Dec 20 Javascript
jQuery基于Ajax方式提交表单功能示例
Feb 10 Javascript
js删除数组中的元素delete和splice的区别详解
Feb 03 Javascript
深入理解Vue Computed计算属性原理
May 29 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
Jun 28 Javascript
js中arguments对象的深入理解
May 14 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数字格式化
2006/12/06 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
PHP将字符串首字母大小写转换的实例
2017/01/21 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
让广告代码不再影响你的网页加载速度
2006/07/07 Javascript
javascript 限制输入脚本大全
2009/11/03 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
python中的对象拷贝示例 python引用传递
2014/01/23 Python
python实现八大排序算法(2)
2017/09/14 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
python访问hdfs的操作
2020/06/06 Python
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
军训鉴定表自我鉴定
2014/02/13 职场文书
学校后勤岗位职责
2014/02/19 职场文书
幼师求职自荐信
2014/05/31 职场文书
同志主要表现材料
2014/08/21 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
戒赌保证书
2015/05/11 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
民事纠纷协议书
2016/03/23 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
MySQL Server 层四个日志
2022/03/31 MySQL