原生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 相关文章推荐
Display SQL Server Version Information
Jun 21 Javascript
JQuery开发的数独游戏代码
Oct 29 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
Jan 27 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
Jan 10 Javascript
bootstrap模态框垂直居中效果
Dec 03 Javascript
vue.js开发环境安装教程
Mar 17 Javascript
Vue.js实战之组件之间的数据传递
Apr 01 Javascript
vue axios post发送复杂对象问题
Jun 04 Javascript
原生javascript自定义input[type=radio]效果示例
Aug 27 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
Feb 24 Javascript
JavaScript冒泡算法原理与实现方法深入理解
Jun 04 Javascript
如何在 ant 的table中实现图片的渲染操作
Oct 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框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
apache部署python程序出现503错误的解决方法
2017/07/24 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
详解python中@的用法
2019/03/27 Python
简单了解python反射机制的一些知识
2019/07/13 Python
pycharm导入源码的具体步骤
2020/08/04 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
天游软件面试
2013/11/23 面试题
党的群众路线个人对照检查材料
2014/09/23 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python