使用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 相关文章推荐
js类中获取外部函数名的方法与代码
Sep 12 Javascript
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
Oct 25 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
Oct 26 Javascript
JavaScript Distilled 基础知识与函数
Apr 07 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
Mar 21 Javascript
JavaScript SetInterval与setTimeout使用方法详解
Nov 15 Javascript
SWFObject基本用法实例分析
Jul 20 Javascript
jquery实现可自动判断位置的弹出层效果代码
Oct 12 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
May 11 Javascript
详解js几个绕不开的事件兼容写法
Aug 30 Javascript
详解VUE单页应用骨架屏方案
Jan 17 Javascript
JS实现页面侧边栏效果探究
Jan 08 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
PHP5 面向对象程序设计
2008/02/13 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
python修改FTP服务器上的文件名
2019/09/11 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
《一株紫丁香》教学反思
2014/02/19 职场文书
推荐信模板
2014/05/09 职场文书
个人党性锻炼总结
2015/03/05 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
离职证明范本
2015/06/12 职场文书
英文投诉信格式
2015/07/03 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
Pandas加速代码之避免使用for循环
2021/05/30 Python
Golang中channel的原理解读(推荐)
2021/10/16 Golang