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 相关文章推荐
document.getElementById的简写方式(获取id对象的简略写法)
Sep 10 Javascript
固定背景实现的背景滚动特效示例分享
May 19 Javascript
举例讲解JavaScript substring()的使用方法
Nov 09 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
Aug 24 Javascript
BootstrapValidator超详细教程(推荐)
Dec 07 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
Jun 13 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
Aug 24 Javascript
Vue表单demo v-model双向绑定问题
Jun 29 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
Sep 03 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
Dec 06 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
Feb 01 Javascript
关于angular引入ng-zorro的问题浅析
Sep 09 Javascript
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
Windows下PHP5和Apache的安装与配置
2006/09/05 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
9个实用的PHP代码片段分享
2015/01/22 PHP
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
js不是基础的基础
2006/12/24 Javascript
JavaScript中的集合及效率
2010/01/08 Javascript
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
Python使用matplotlib绘制动画的方法
2015/05/20 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
计算机专业毕业生推荐信
2013/11/25 职场文书
实习教师自我鉴定
2013/12/12 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
模范教师材料大全
2014/12/16 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电