原生JS实现风箱式demo,并封装了一个运动框架(实例代码)

 更新时间:2016年07月22日 08:36:18   投稿:jingxian  
下面小编就为大家带来一篇原生JS实现风箱式demo,并封装了一个运动框架(实例代码)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

声明,该DEMO依托于某个培训机构中,非常感谢这个培训结构。话不多说,现在开始改demo的制作。

首先,在前端的学习过程中,轮播图是我们一定要学习的,所以为了更加高效的实现各种轮播图,封装了一个运动的框架。

function getStyle(obj,attr) {
  if(obj.currentStyle){
    return obj.currentStyle[attr];//为了获取IE下的属性值
  }else{
    return window.getComputedStyle(obj,null)[attr];//为了获取W3C浏览器下的属性值
  }
}

function animate(obj,json){
  clearInterval(obj.timer);
  obj.timer = setInterval(function () {
    var flag = true;
    var current = 0;
    for(var attr in json){
      if(attr == 'opacity'){
        current = parseInt(getStyle(obj,attr)*100);
      }else{
        current = parseInt(getStyle(obj,attr));
      };

      var step = (json[attr] - current) / 10;
      step = step > 0 ? Math.ceil(step) : Math.floor(step);
      //先判断属性是否为透明度
      if(attr == 'opacity'){
        //首先判断浏览器是否支持opacity
        if('opacity' in obj.style){
          obj.style.opacity = (current + step) / 100;
        }else{
          obj.style.filter = 'alpha(opacity = ' + (current + step) + ')';
        }
      //再判断属性是否为z-index
      }else if(attr == 'zIndex'){
        obj.style.zIndex = json[attr];
      //最后再判断
      }else{
        obj.style[attr] = current + step + 'px';
      }

      if(current != json[attr]){
        flag = false;
      }
    }

    if(flag){
      clearInterval(obj.timer);
    }
  },5);
}

在该框架中兼容了不同的浏览器,并且允许传入opacity和z-index这样的属性,当然,像width,height,left,right这样常见的属性是必不可少的。利用该框架,可以实现非常棒的效果。所以现在开始正式做该DEMO。

首先是index.html的制作。

<div id="box">
  <ul>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</div>

index.html的制作非常的简单,我们会将图片作为li的背景图片在javascript中进行插入。之后,我们进行CSS样式的调节。

*{
    margin:0px;
    padding:0px;
  }
  #box{
    width:1300px;
    height:400px;
    margin:100px auto;
    overflow: hidden;
  }
  #box ul{
    height:400px;
    width:1300px;
  }
  #box ul li{
    width:240px;
    height:400px;
    float:left;
    overflow: hidden;
  }

javascript的代码如下:

window.onload = function () {
    var box = document.getElementById('box');
    var aLi = box.children[0].children;
    for(var i=0;i<aLi.length;i++){
      aLi[i].style.backgroundImage = 'url(' + 'images/' + (i + 1) + '.jpg';
      aLi[i].onmouseover = function(){
        for(var i=0;i<aLi.length;i++){
          animate(aLi[i],{width:100});
        }
        animate(this,{width:800});
      };
      aLi[i].onmouseout = function(){
        for(var i=0;i<aLi.length;i++){
          animate(aLi[i],{width:240});
        }
      }
    }
  }

这样使用原生JS实现的风箱效果demo就实现了,当然,还可以利用封装好的animate框架实现类似网易的轮播图效果。

以上这篇原生JS实现风箱式demo,并封装了一个运动框架(实例代码)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JavaScript类的继承方法小结【组合继承分析】

    JavaScript类的继承方法小结【组合继承分析】

    这篇文章主要介绍了JavaScript类的继承方法,结合实例形式总结分析了JavaScript继承的概念、原理及组合继承相关实现技巧,需要的朋友可以参考下
    2018-07-07
  • 微信企业号开发之微信考勤百度地图定位

    微信企业号开发之微信考勤百度地图定位

    本文给大家介绍微信企业号开发之微信考勤百度地图定位,有需要的朋友参考下本篇文章
    2015-09-09
  • three.js如何实现3D动态文字效果

    three.js如何实现3D动态文字效果

    这篇文章主要给大家介绍了关于three.js如何实现3D动态文字效果的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • JS实现普通轮播图特效

    JS实现普通轮播图特效

    这篇文章主要为大家详细介绍了JS实现普通轮播图特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • 浅谈js里面的InttoStr和StrtoInt

    浅谈js里面的InttoStr和StrtoInt

    下面小编就为大家带来一篇浅谈js里面的InttoStr和StrtoInt。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • JavaScript基础语法之js表达式

    JavaScript基础语法之js表达式

    这篇文章主要介绍了JavaScript基础语法之js表达式 的相关资料,需要的朋友可以参考下
    2016-06-06
  • JavaScript的setter与getter方法

    JavaScript的setter与getter方法

    这篇文章主要为大家详细介绍了JavaScript的setter与getter方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • 详解js几个绕不开的事件兼容写法

    详解js几个绕不开的事件兼容写法

    本篇文章主要介绍了详解js几个绕不开的事件兼容写法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • JS+css 图片自动缩放自适应大小

    JS+css 图片自动缩放自适应大小

    编辑器上传的图片太大了,把FF和IE撑的走形,所以希望图片在某些页面里要有固定大小,如果需要某个范围,用getElementByname来设定,也是一个道理:
    2013-08-08
  • 前端导航栏不变切换局部页面的3种方法

    前端导航栏不变切换局部页面的3种方法

    在开发网页的过程中,经常需要实现导航菜单的切换,下面这篇文章主要给大家介绍了关于前端导航栏不变切换局部页面的3种方法,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-12-12

最新评论