JS模拟酷狗音乐播放器收缩折叠关闭效果代码


Posted in Javascript onOctober 29, 2015

本文实例讲述了JS模拟酷狗音乐播放器收缩折叠关闭效果代码。分享给大家供大家参考,具体如下:

这是一款模拟酷狗音乐播放器的关闭特效,采用JavaScript实现,关闭的时候播放界面缩成一条线,然后消失,就像有些电视机突然停电的效果,很有意思的网页动画特效。

运行效果截图如下:

JS模拟酷狗音乐播放器收缩折叠关闭效果代码

在线演示地址如下:

具体代码如下:

<!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=utf-8" />
<title>酷狗音乐播放器的关闭特效,采用JavaScript实现</title>
<style type="text/css">
* {
 padding:0px;
 margin:0px;
}
#outer {
 width:952px;
 height: 640px;
 position:absolute;
 left:100px;
 top:20px; }
#div1 {
 width:952px;
 height: 640px;
 overflow:hidden; 
 position:absolute;font-size:0px;
}
#div1 a {
 position:absolute;
 width:23px;
 height:21px;
 right:5px;
 top:5px;
 display:block; z-index:100; background:url(images/kugou.jpg) no-repeat 957px 645px;}
#div1 a:hover {
 background:url(images/hover.jpg) no-repeat right top;
}
#line {
 height:3px;
 width:952px;
 display:none;
 z-index:100;
 position:absolute;
 left:0px;
 top:0px; font-size:0px;
}
#light{ /*width:50px; height:10px;*/ position:absolute; left:50%; top:50%;/* margin-left:-25px; margin-top:-5px;*/ width:0px; height:0px; filter:alpha(opacity:0);opacity:0;); overflow:hidden;}
</style>
<script type="text/javascript">
function css(obj, attr, value)
{
 if(arguments.length==2)
 {
  if(attr!='opacity')
  {
   return parseInt(obj.currentStyle?obj.currentStyle[attr]:document.defaultView.getComputedStyle(obj, false)[attr]);
  }
  else
  {
   return Math.round(100*parseFloat(obj.currentStyle?obj.currentStyle[attr]:document.defaultView.getComputedStyle(obj, false)[attr]));
  }
 }
 else if(arguments.length==3)
  switch(attr)
  {
   case 'width':
   case 'height':
   case 'paddingLeft':
   case 'paddingTop':
   case 'paddingRight':
   case 'paddingBottom':
   value=Math.max(value,0);
   case 'left':
   case 'top':
   case 'marginLeft':
   case 'marginTop':
   case 'marginRight':
   case 'marginBottom':
    obj.style[attr]=value+'px';
    break;
   case 'opacity':
    obj.style.filter="alpha(opacity:"+value+")";
    obj.style.opacity=value/100;
    break;
   default:
    obj.style[attr]=value;
  }
 return function (attr_in, value_in){css(obj, attr_in, value_in)};
}
var MIAOV_MOVE_TYPE={
 BUFFER: 1,
 FLEX: 2
};//json
function miaovStopMove(obj)
{
 clearInterval(obj.timer);
}
function miaovStartMove(obj, oTarget,iSpeedCtrol, iType, fnCallBack, fnDuring)
{
 var fnMove=null;
 if(obj.timer)
 {
  clearInterval(obj.timer);
 }
 switch(iType)
 {
  case MIAOV_MOVE_TYPE.BUFFER:
   fnMove=miaovDoMoveBuffer;
   break;
  case MIAOV_MOVE_TYPE.FLEX:
   fnMove=miaovDoMoveFlex;
   break;
 }
 obj.timer=setInterval(function (){
  fnMove(obj, oTarget,iSpeedCtrol, fnCallBack, fnDuring);
 }, 30);
}
function miaovDoMoveBuffer(obj, oTarget,iSpeedCtrol, fnCallBack, fnDuring)
{
 var bStop=true;
 var attr='';
 var speed=0;
 var cur=0;
 for(attr in oTarget)
 {
  cur=css(obj, attr);
  if(oTarget[attr]!=cur)
  {
   bStop=false;
   speed=(oTarget[attr]-cur)/iSpeedCtrol;
   speed=speed>0?Math.ceil(speed):Math.floor(speed);
   css(obj, attr, cur+speed);
  }
 }
 if(fnDuring)fnDuring.call(obj);
 if(bStop)
 {
  clearInterval(obj.timer);
  obj.timer=null;
  if(fnCallBack)fnCallBack.call(obj);
 }
}
function miaovDoMoveFlex(obj, oTarget,iSpeedCtrol, fnCallBack, fnDuring)
{
 var bStop=true;
 var attr='';
 var speed=0;
 var cur=0;
 for(attr in oTarget)
 {
  if(!obj.oSpeed)obj.oSpeed={};
  if(!obj.oSpeed[attr])obj.oSpeed[attr]=0;
  cur=css(obj, attr);
  if(Math.abs(oTarget[attr]-cur)>=1 || Math.abs(obj.oSpeed[attr])>=1)
  {
   bStop=false;
   obj.oSpeed[attr]+=(oTarget[attr]-cur)/iSpeedCtrol;
   obj.oSpeed[attr]*=0.7;
   css(obj, attr, cur+obj.oSpeed[attr]);
  }
 }
 if(fnDuring)fnDuring.call(obj);
 if(bStop)
 {
  clearInterval(obj.timer);
  obj.timer=null;
  if(fnCallBack)fnCallBack.call(obj);
 }
}
</script>
<script type="text/javascript">
window.onload=function(){
 var oDiv1 = document.getElementById('div1');
 var oAbtn = oDiv1.getElementsByTagName('a')[0];
 var oImg1 = document.getElementById('img1');
 var oImg2 = document.getElementById('img2');
 var oImg3 = document.getElementById('img3');
 var oLine = document.getElementById('line');
 var oLight = document.getElementById('light');
 oAbtn.onclick=function(){
  miaovStartMove(oDiv1, {height:3,marginTop:315},1.5, MIAOV_MOVE_TYPE.BUFFER,function(){
   oImg1.style.display='none';
   oLine.style.display='block';
   miaovStartMove(oDiv1, {width:0,marginLeft:476},2, MIAOV_MOVE_TYPE.BUFFER);
   miaovStartMove(oLine, {width:0},2, MIAOV_MOVE_TYPE.BUFFER);
   miaovStartMove(oImg2, {width:0},2, MIAOV_MOVE_TYPE.BUFFER,function(){
    miaovStartMove(oImg3, {width:200,height:10},1, MIAOV_MOVE_TYPE.BUFFER);
    miaovStartMove(oLight, {width:200,height:10,marginLeft:-100,marginTop:-5,opacity:100},1, MIAOV_MOVE_TYPE.BUFFER,function(){
     miaovStartMove(oLight, {opacity:0},1, MIAOV_MOVE_TYPE.BUFFER);
     });
    });
   });
  }
}
</script>
</head>
<body>
<div id="outer">
 <div id="light"><img id="img3" src="images/line1.png" style="width:0px; height:0px;"/></div>
 <div id="div1">
 <img id="img1" src="images/kugou.jpg" style="height:640px; width:952px; z-index:-3;"/>
 <a href="#"></a>
 <div id="line"> 
 <img id="img2" src="images/line.png" style=" width:952px; height:3px;" />
 </div>
 </div>
</div>
</body>
</html>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
用javascript实现自定义标签
May 08 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
Nov 22 Javascript
基于js与flash实现的网站flv视频播放插件代码
Oct 14 Javascript
简介JavaScript中Math.cos()余弦方法的使用
Jun 15 Javascript
JavaScript原生对象常用方法总结(推荐)
May 13 Javascript
JS对象创建的几种方式整理
Feb 28 Javascript
js简单实现网页换肤功能
Apr 07 Javascript
JS倒计时实例_天时分秒
Aug 22 Javascript
jquery实现左右轮播图效果
Sep 28 jQuery
详解用Node.js实现Restful风格webservice
Sep 29 Javascript
vue-router 源码实现前端路由的两种方式
Jul 02 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
Sep 30 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
Oct 29 #Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
Oct 29 #Javascript
JavaScript操作URL的相关内容集锦
Oct 29 #Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
Oct 29 #Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
Oct 28 #Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
Oct 28 #Javascript
自己动手写的jquery分页控件(非常简单实用)
Oct 28 #Javascript
You might like
Yii分页用法实例详解
2014/12/04 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
php中如何执行linux命令详解
2018/11/06 PHP
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
2015/02/13 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
Python采用raw_input读取输入值的方法
2014/08/18 Python
Python 装饰器深入理解
2017/03/16 Python
django 创建过滤器的实例详解
2017/08/14 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
python 内置模块详解
2019/01/01 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
KOHLER科勒美国官网:国际著名卫浴橱柜领先品牌
2020/06/27 全球购物
小学生教师节演讲稿
2014/09/03 职场文书
大学生党员自我评价
2015/03/04 职场文书