js如何实现淡入淡出效果


Posted in Javascript onNovember 18, 2020

淡入淡出效果,在日常项目中经常用到,可惜原生JS没有类似的方法,而有时小的页面并不值得引入一个jQuery库,所以就自己写了一个,已封装,有用得着的朋友,可以直接使用。代码中另附有一个设置元素透明度的方法, 是按IE规则(0~100)设置, 若改成标准设置方法(0.00~1.00),,下面使用时请考虑浮点精确表达差值。

参数说明:

fadeIn()与fadeOut()均有三个参数,第一个是事件, 必填;第二个是淡入淡出速度,正整数,大小自己权衡,可选参数;第三个, 是指定淡入淡出到的透明度值(类似于jQuery中的fadeTo()), 0~100的正整数值,也是可选参数。

关键代码:

//淡入效果(含淡入到指定透明度) 
 function fadeIn(elem, speed, opacity){ 
 /* 
 * 参数说明 
 * elem==>需要淡入的元素 
 * speed==>淡入速度,正整数(可选) 
 * opacity==>淡入到指定的透明度,0~100(可选) 
 */ 
 speedspeed = speed || 20; 
 opacityopacity = opacity || 100; 
 //显示元素,并将元素值为0透明度(不可见) 
 elem.style.display = 'block'; 
 iBase.SetOpacity(elem, 0); 
 //初始化透明度变化值为0 
 var val = 0; 
 //循环将透明值以5递增,即淡入效果 
 (function(){ 
 iBase.SetOpacity(elem, val); 
 val += 5; 
 if (val <= opacity) { 
 setTimeout(arguments.callee, speed) 
 } 
 })(); 
 } 
 
 //淡出效果(含淡出到指定透明度) 
 function fadeOut(elem, speed, opacity){ 
 /* 
 * 参数说明 
 * elem==>需要淡入的元素 
 * speed==>淡入速度,正整数(可选) 
 * opacity==>淡入到指定的透明度,0~100(可选) 
 */ 
 speedspeed = speed || 20; 
 opacityopacity = opacity || 0; 
 //初始化透明度变化值为0 
 var val = 100; 
 //循环将透明值以5递减,即淡出效果 
 (function(){ 
 iBase.SetOpacity(elem, val); 
 val -= 5; 
 if (val >= opacity) { 
 setTimeout(arguments.callee, speed); 
 }else if (val < 0) { 
 //元素透明度为0后隐藏元素 
 elem.style.display = 'none'; 
 } 
 })(); 
 }

效果图:

js如何实现淡入淡出效果

js如何实现淡入淡出效果

js如何实现淡入淡出效果

核心代码,大家可以直接复制代码查看效果

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>原生JS实现淡入淡出效果</title> 
<style> 
/*demo css*/ 
#demo div.box {float:left;width:31%;margin:0 1%} 
#demo div.box h2{margin-bottom:10px} 
#demo div.box h2 input{padding:5px 8px;font-size:14px;font-weight:bolder} 
#demo div.box div{text-indent:10px; line-height:22px;border:2px solid #555;padding:0.5em;overflow:hidden} 
</style> 
<script> 
window.onload = function(){ 
 //底层共用 
 var iBase = { 
 Id: function(name){ 
 return document.getElementById(name); 
 }, 
 //设置元素透明度,透明度值按IE规则计,即0~100 
 SetOpacity: function(ev, v){ 
 ev.filters ? ev.style.filter = 'alpha(opacity=' + v + ')' : ev.style.opacity = v / 100; 
 } 
 } 
 //淡入效果(含淡入到指定透明度) 
 function fadeIn(elem, speed, opacity){ 
 /* 
 * 参数说明 
 * elem==>需要淡入的元素 
 * speed==>淡入速度,正整数(可选) 
 * opacity==>淡入到指定的透明度,0~100(可选) 
 */ 
 speedspeed = speed || 20; 
 opacityopacity = opacity || 100; 
 //显示元素,并将元素值为0透明度(不可见) 
 elem.style.display = 'block'; 
 iBase.SetOpacity(elem, 0); 
 //初始化透明度变化值为0 
 var val = 0; 
 //循环将透明值以5递增,即淡入效果 
 (function(){ 
 iBase.SetOpacity(elem, val); 
 val += 5; 
 if (val <= opacity) { 
 setTimeout(arguments.callee, speed) 
 } 
 })(); 
 } 
 
 //淡出效果(含淡出到指定透明度) 
 function fadeOut(elem, speed, opacity){ 
 /* 
 * 参数说明 
 * elem==>需要淡入的元素 
 * speed==>淡入速度,正整数(可选) 
 * opacity==>淡入到指定的透明度,0~100(可选) 
 */ 
 speedspeed = speed || 20; 
 opacityopacity = opacity || 0; 
 //初始化透明度变化值为0 
 var val = 100; 
 //循环将透明值以5递减,即淡出效果 
 (function(){ 
 iBase.SetOpacity(elem, val); 
 val -= 5; 
 if (val >= opacity) { 
 setTimeout(arguments.callee, speed); 
 }else if (val < 0) { 
 //元素透明度为0后隐藏元素 
 elem.style.display = 'none'; 
 } 
 })(); 
 } 
 
 
 var btns = iBase.Id('demo').getElementsByTagName('input'); 
 
 btns[0].onclick = function(){ 
 fadeIn(iBase.Id('fadeIn')); 
 } 
 btns[1].onclick = function(){ 
 fadeOut(iBase.Id('fadeOut'),40); 
 } 
 btns[2].onclick = function(){ 
 fadeOut(iBase.Id('fadeTo'), 20, 10); 
 } 
 
} 
</script> 
</head> 
<body> 
 
<!--DEMO start--> 
<div id="demo"> 
 <div class="box"> 
 <h2><input type="button" value="点击淡入" /></h2> 
 <div id="fadeIn" style="display:none"> 
 <p>三水点靠木</p> 
 </div> 
 <p>三水点靠木是国内专业的网站建设资源、脚本编程学习类网站,提供asp、php、asp.net、javascript、jquery、vbscript、dos批处理、网页制作、网络编程、网站建设等编程资料。</p> 
 </div> 
 
 <div class="box"> 
 <h2><input type="button" value="点击淡出" /></h2> 
 <div id="fadeOut"> 
 <p>三水点靠木</p> 
 </div> 
 <p>三水点靠木是国内专业的网站建设资源、脚本编程学习类网站,提供asp、php、asp.net、javascript、jquery、vbscript、dos批处理、网页制作、网络编程、网站建设等编程资料。</p> 
 </div> 
 
 <div class="box"> 
 <h2><input type="button" value="点击淡出至指定透明度" /></h2> 
 <div id="fadeTo"> 
 <p>三水点靠木</p> 
 </div> 
 <p>三水点靠木是国内专业的网站建设资源、脚本编程学习类网站,提供asp、php、asp.net、javascript、jquery、vbscript、dos批处理、网页制作、网络编程、网站建设等编程资料。</p> 
 </div> 
</div> 
<!--DEMO end--> 
 
</body> 
</html>

以上就是原生js实现淡入淡出效果的全部代码,希望对大家的学习有所帮助。

Javascript 相关文章推荐
常用Extjs工具:Extjs.util.Format使用方法
Mar 22 Javascript
IE不支持getElementsByClassName最终完美解决方案
Dec 17 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
Apr 23 Javascript
js实现的折叠导航示例
Nov 29 Javascript
jquery.cookie用法详细解析
Dec 18 Javascript
javascript实现拖放效果
Dec 16 Javascript
理解JS事件循环
Jan 07 Javascript
jQuery 弹出层插件(推荐)
May 24 Javascript
微信小程序之拖拽排序(代码分享)
Jan 21 Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 Javascript
JS实现常见的查找、排序、去重算法示例
May 21 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
May 10 jQuery
JavaScript数组去重的五种方法
Nov 05 #Javascript
javascript实现tab切换的两个实例
Nov 05 #Javascript
Javascript中的return作用及javascript return关键字用法详解
Nov 05 #Javascript
js实现选中页面文字将其分享到新浪微博
Nov 05 #Javascript
使用JQuery实现的分页插件分享
Nov 05 #Javascript
javascript实现tab切换的四种方法
Nov 05 #Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
Nov 05 #Javascript
You might like
NO3第三帝国留言簿制作过程
2006/10/09 PHP
PHP数组排序函数合集 以及它们之间的联系分析
2013/06/27 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
PHP chr()函数讲解
2019/02/11 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
java、javascript实现附件下载示例
2014/08/14 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
2017/09/30 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
[02:27]2018DOTA2亚洲邀请赛赛前采访-OpTic
2018/04/03 DOTA
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
如何提高JDBC的性能
2013/04/30 面试题
最新党员的自我评价分享
2013/11/04 职场文书
工商管理毕业生推荐信
2013/12/24 职场文书
机修工工作职责
2014/02/21 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
事业单位工作人员年度考核个人总结
2015/02/12 职场文书
2015年助残日活动总结
2015/03/27 职场文书
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技