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 相关文章推荐
select标记美化--JS式插件、后期加载
Apr 01 Javascript
使用js Math.random()函数生成n到m间的随机数字
Oct 09 Javascript
javascript自动生成包含数字与字符的随机字符串
Feb 09 Javascript
详解webpack 多入口配置
Jun 16 Javascript
js实现可以点击收缩或张开的悬浮窗
Sep 18 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
Sep 20 Javascript
使用命令行工具npm新创建一个vue项目的方法
Dec 27 Javascript
Vue 中的compile操作方法
Feb 26 Javascript
微信小程序如何获取用户收货地址
Nov 27 Javascript
layui动态表头的实现代码
Aug 22 Javascript
原生js实现二级联动菜单
Nov 27 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
Oct 27 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
Javascript UrlDecode函数代码
2010/01/09 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
解析javascript 浏览器关闭事件
2013/07/08 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
javascript创建元素和删除元素实例小结
2019/06/19 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
python中列表元素连接方法join用法实例
2015/04/07 Python
Python多线程和队列操作实例
2015/06/21 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
特步官方商城:Xtep
2017/03/21 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
视图的作用
2014/12/19 面试题
幼儿园安全责任书
2014/04/14 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
会计工作态度自我评价
2015/03/06 职场文书
导游词之西安骊山
2019/12/03 职场文书
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android
go goth封装第三方认证库示例详解
2022/08/14 Golang