原生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控件的相对独立性
Sep 03 Javascript
JS正则中的RegExp对象对象
Nov 07 Javascript
js中通过split函数分割字符串成数组小例子
Sep 21 Javascript
标题过长使用javascript按字节截取字符串
Apr 24 Javascript
javascript字符串替换函数如何一次性全部替换掉
Oct 30 Javascript
浅谈js多维数组和hash数组定义和使用
Jul 27 Javascript
jquery.Callbacks的实现详解
Nov 30 Javascript
JavaScript基础进阶之数组方法总结(推荐)
Sep 04 Javascript
jQuery事件对象的属性和方法详解
Sep 09 jQuery
如何在vue中使用ts的示例代码
Feb 28 Javascript
vue input实现点击按钮文字增删功能示例
Jan 29 Javascript
JS检测浏览器开发者工具是否打开的方法详解
Oct 02 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 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
Vue.js项目模板搭建图文教程
2017/09/20 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
Python Tkinter简单布局实例教程
2014/09/03 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
一款纯css3实现简单的checkbox复选框和radio单选框
2014/11/05 HTML / CSS
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
五年级数学教学反思
2016/02/16 职场文书