原生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 相关文章推荐
图片上传即时显示缩略图的js代码
May 27 Javascript
JS随机漂浮广告代码具体实例
Nov 19 Javascript
一个简单的jquery进度条示例
Apr 28 Javascript
jquery获取checkbox的值并post提交
Jan 14 Javascript
JavaScript 对象字面量讲解
Jun 06 Javascript
使用JS实现图片展示瀑布流效果的实例代码
Sep 12 Javascript
js实现移动端轮播图效果
Dec 09 Javascript
详解webpack import()动态加载模块踩坑
Jul 17 Javascript
vue引入axios同源跨域问题
Sep 27 Javascript
Vue实现回到顶部和底部动画效果
Jul 31 Javascript
javascript canvas API内容整理
Feb 16 Javascript
vue中echarts引入中国地图的案例
Jul 28 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
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
IE 下的只读 innerHTML
2009/08/21 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
javascript call方法使用说明
2010/01/11 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
2016/01/25 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
解决vue addRoutes不生效问题
2020/08/04 Javascript
使用python3+xlrd解析Excel的实例
2018/05/04 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
大四本科生的自我评价
2013/12/30 职场文书
运动会广播稿200米
2014/01/27 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
Python实现byte转integer
2021/06/03 Python
React 高阶组件HOC用法归纳
2021/06/13 Javascript