原生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 相关文章推荐
直接生成打开窗口代码,不必下载
May 14 Javascript
jquery select(列表)的操作(取值/赋值)
Mar 16 Javascript
js通过八个点 拖动改变div大小的实现方法
Mar 05 Javascript
基于jquery实现的自动补全功能
Mar 12 Javascript
Javascript中的Prototype到底是什么
Feb 16 Javascript
JS+Canvas绘制时钟效果
Aug 20 Javascript
使用FileReader API创建Vue文件阅读器组件
Apr 03 Javascript
javascript中toFixed()四舍五入使用方法详解
Sep 28 Javascript
微信小程序动画(Animation)的实现及执行步骤
Oct 28 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
Nov 26 Javascript
JS实现的自定义map方法示例
May 17 Javascript
vue实现树形结构样式和功能的实例代码
Oct 15 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
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
详解vue中axios的封装
2018/07/18 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
Python字符串的一些操作方法总结
2019/06/10 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
Vertbaudet西班牙网上商店:婴儿服装、童装、母婴用品和儿童家具
2019/10/16 全球购物
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
医院院务公开实施方案
2014/05/03 职场文书
设计顾问服务计划书
2014/05/04 职场文书
入党推优材料
2014/06/02 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
入党现实表现材料
2014/12/23 职场文书
个人总结格式范文
2015/03/09 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技