js如何实现淡入淡出效果

淡入淡出效果,在日常项目中经常用到,可惜原生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';
   }
  })();
 } 

效果图:

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<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实现淡入淡出效果的全部代码,希望对大家的学习有所帮助。

(0)

相关推荐

  • js控制淡入淡出示例代码

    相对来说可以让初学者看一下,并不太实用,可能jquery4条语句就能解决,但是原生相对有参照性,了解最终原理才是关键. 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.o

  • 纯js实现图片匀速淡入淡出效果

    图片匀速淡入淡出效果如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>淡入效果</title> <style> * { margin: 0; padding: 0; } div { border: 2px solid #aaa; } img { width: 300px; height:

  • JS实现淡入淡出图片效果的方法分析

    本文实例讲述了JS实现淡入淡出图片效果的方法.分享给大家供大家参考,具体如下: 效果:鼠标移入时,图片由半透明逐渐变成清晰,移出时,由清晰变为半透明 分析:用变量来储存透明度,因为元素.style.alpha不能直接增加或减少 核心代码: window.onload=function(){ var oDiv=document.getElementById("div1"); var timer=null; var alpha=30; oDiv.onmouseover=function()

  • 原生js实现fadein 和 fadeout淡入淡出效果

    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 = opac

  • js实现图片加载淡入淡出效果

    本文实例为大家分享了js图片加载淡入淡出效果展示的具体代码,供大家参考,具体内容如下 HTML代码 首先是图片标记的写法: <img data-src="/path/to/image.jpg" alt=""> 需要将图片的地址放到 data-src 属性里,而src值填写默认的一张图片. CSS代码 所有具有data-src属性的图片,我们将其初始显示状态为不可见,通过透明度来调节: img { opacity: 1; transition: opaci

  • js运动框架_包括图片的淡入淡出效果

    复制代码 代码如下: <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title><font face="Verdana, Geneva, sans-serif"></font>&l

  • 原生js和jquery实现图片轮播淡入淡出效果

    图片轮播有很多种方式,这里采用其中的 淡入淡出形式 js原生和jQuery都可以实现,jquery因为封装了很多用法,所以用起来就简单许多,转换成js使用,其实也就是用js原生模拟出这些用法. 但不管怎样,构造一个最基本的表现层是必须的 简单的图片轮播一般由几个部分构成. 对于淡入淡出式 1.首先是个外围部分(其实也就是最外边的整体wrapper) 2.接着就是你设置图片轮播的地方(也就是一个banner吧) 3.然后是一个图片组(可以用新的div 也可以直接使用 ul-->li形式) 4.然后

  • js实现图片淡入淡出切换简易效果

    本文实例为大家分享了js图片淡入淡出切换详细代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{padding: 0;margin: 0;} ul{overflow: hidden;} li{list-style:

  • JS实现图片延迟加载并淡入淡出效果的简单方法

    话不多说,直接看示例 首先是图片标记的写法 <img data-src="/images/image.jpg" alt=""> 需要将图片的地址放到 data-src 属性里,而src值不需要,直接将src属性去掉. CSS代码 所有具有data-src属性的图片,我们将其初始显示状态为不可见,通过透明度来调节: img { opacity: 1; transition: opacity 0.3s; } img[data-src] { opacity:

  • js淡入淡出的图片轮播效果代码分享

    本文实例讲述了淡入淡出的js图片轮播效果代码.分享给大家供大家参考.具体如下: 运行效果图:----------------------查看效果----------------------- 小提示:浏览器中如果不能正常运行,可以尝试切换浏览模式. 为大家分享的js图片轮播效果代码如下 <html> <head> <title>js图片轮播效果代码</title> <style type="text/css"> table i

随机推荐