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 相关文章推荐
jquery.Jwin.js 基于jquery的弹出层插件代码
May 23 Javascript
使用jQuery清空file文件域的解决方案
Apr 12 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
Aug 13 Javascript
细说javascript函数从函数的构成开始
Aug 29 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
Apr 29 Javascript
javascript insertAfter()定义与用法示例
Jul 25 Javascript
Vue监听数组变化源码解析
Mar 09 Javascript
javascript中json对象json数组json字符串互转及取值方法
Apr 19 Javascript
JavaScript瀑布流布局实现代码
May 06 Javascript
简述vue路由打开一个新的窗口的方法
Nov 29 Javascript
JavaScript实现动态生成表格
Aug 02 Javascript
Javascript confirm多种使用方法解析
Sep 25 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 and xml示例
2006/11/22 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
关于JavaScript的一些看法
2009/05/27 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
js中如何完美的解析数据
2018/03/18 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
Element Backtop回到顶部的具体使用
2020/07/27 Javascript
easy_install python包安装管理工具介绍
2013/02/10 Python
python实现定制交互式命令行的方法
2014/07/03 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
Stella McCartney官网:成衣、包袋、香水、内衣、童装及Adidas系列
2018/12/20 全球购物
宿舍卫生检讨书
2014/01/16 职场文书
机关会计岗位职责
2014/04/08 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
学校节水倡议书
2015/04/29 职场文书
Python基础详解之描述符
2021/04/28 Python
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server
Python Matplotlib绘制动画的代码详解
2022/05/30 Python