使用Require.js封装原生js轮播图的实现代码


Posted in Javascript onJune 15, 2017

index.html页面:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>require.js封装轮播图</title>
<style type="text/css">
*{


margin: 0;


padding: 0;


list-style: none;

}

#banner{


width: 830px;


height: 440px;


border: solid 1px;


margin: 50px auto;


position: relative;


overflow: hidden;

}

#banner ul{


position: absolute;


left: 0;


top: 0;

}

#banner ul li{


width: 830px;


height: 440px;


float: left;

}

#banner p{


position: absolute;


left: 50%;


bottom: 10px;


margin-left: -30px;

}

#banner p span{


display: block;


float: left;


width: 15px;


height: 15px;


margin-right: 6px;


background: #ccc;


border-radius: 50%;

}

#banner p .on{


background: red;

}
</style>
<script type="text/javascript" src="require.js" data-main='init'></script>
<!--<script type="text/javascript">

require(['slider'],function(mod){

mod.slide()
})
</script>-->
</head>
<body>

<div id="banner">


<ul>



<li><img src="images/1.jpg"/></li>



<li><img src="images/2.jpg"/></li>


</ul>


<p>



<span class="on"></span>



<span></span>



<span></span>


</p>

</div>
</body>
</html>

get.js代码如下:

define(function(require,exports,module){
exports.getStyle = function (obj,name){


if(obj.currentStyle){



return obj.currentStyle[name];


}else{



return getComputedStyle(obj,false)[name];


};

};
});

init.js代码如下

require(['slider'],function(mod){
mod.slide();
});

slider.js代码如下

define(function(require, exports, module) {
var move = require('StartMove');

var aBtn = document.getElementById('banner').getElementsByTagName('span');

var oUl = document.getElementById('banner').getElementsByTagName('ul')[0];

var aLi = oUl.children;

//三张图片所占的宽度,length返回的是字符串中的字符数


oUl.style.width = aLi.length * aLi[0].offsetWidth + 'px';


exports.slide = function() {



for(var i = 0; i < aBtn.length; i++) {




aBtn[i].index = i;




aBtn[i].onclick = function() {





for(var i = 0; i < aBtn.length; i++) {






aBtn[i].className = '';





}




aBtn[this.index].className = 'on';





move.move(oUl, {





left: -this.index * aLi[0].offsetWidth;




});



};


};

};
});

StartMove.js代码如下

define(function(require, exports, module) {
var get = require('get');

exports.move = function move(obj, json, complete) {


clearInterval(obj.timer);


var complete = complete || {};


complete.dur = complete.dur || 1000;


complete.easing = complete.easing || 'ease-out';


var count = parseInt(complete.dur / 30); //总次数


var start = {}; //{width:300,height:300}


var dis = {};


//{width:300,height:300}


for(var name in json) {



start[name] = parseFloat(get.getStyle(obj, name));



dis[name] = json[name] - start[name];


}


var n = 0; //当前步数


obj.timer = setInterval(function() {


n++;


for(var name in json) {



var a = n / count;



switch(complete.easing) {




case 'linear':




var cur = start[name] + a * dis[name];




break;




case 'ease-in':




var cur = start[name] + Math.pow(a, 3) * dis[name];




break;




case 'ease-out':




var a = 1 - n / count;




var cur = start[name] + (1 - Math.pow(a, 3)) * dis[name];




break;



};



if(name == 'opacity') {





obj.style[name] = cur;





obj.style.filter = 'alpha(' + cur * 100 + ')';




} else {





obj.style[name] = cur + 'px';




};



};



if(n == count) {




clearInterval(obj.timer)




complete.fn && complete.fn();



};


}, 30);

 };
 });

以上所述是小编给大家介绍的使用Require.js封装原生js轮播图,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
浅谈JavaScript之事件绑定
Jul 08 Javascript
jquery获取css中的选择器(实例讲解)
Dec 02 Javascript
JavaScript中ES6 Babel正确安装过程
Jul 18 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
Sep 28 Javascript
javascript+html5+css3自定义提示窗口
Jun 21 Javascript
原生JavaScrpit中异步请求Ajax实现方法
Nov 03 Javascript
vue中过滤器filter的讲解
Jan 21 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
May 13 Javascript
JS删除String里某个字符的方法
Jan 06 Javascript
vue项目初始化到登录login页面的示例
Oct 31 Javascript
node解析修改nginx配置文件操作实例分析
Nov 06 Javascript
javascript实现计算器功能
Mar 30 Javascript
JavaScript实现选中文字提示新浪微博分享效果
Jun 15 #Javascript
详解vue跨组件通信的几种方法
Jun 15 #Javascript
Bootstrap响应式导航由768px变成992px的实现代码
Jun 15 #Javascript
javascript完美实现给定日期返回上月日期的方法
Jun 15 #Javascript
JS自动生成动态HTML验证码页面
Jun 14 #Javascript
自定义vue全局组件use使用、vuex的使用详解
Jun 14 #Javascript
详解AngularJS 模块化
Jun 14 #Javascript
You might like
Win下如何安装PHP的APC拓展
2013/08/07 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
Laravel框架中集成MongoDB和使用详解
2019/10/17 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
Python中的异常处理简明介绍
2015/04/13 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
Python continue继续循环用法总结
2018/06/10 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
Python numpy线性代数用法实例解析
2019/11/15 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
建筑工程专业毕业生自荐信
2013/10/19 职场文书
网站设计师的岗位职责
2013/11/21 职场文书
安全口号大全
2014/06/21 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
在人间读书笔记
2015/06/30 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技