使用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 相关文章推荐
HTML中Select不用Disabled实现ReadOnly的效果
Apr 07 Javascript
在JavaScript中处理字符串之link()方法的使用
Jun 08 Javascript
浅析Node.js中的内存泄漏问题
Jun 23 Javascript
jQuery实现两款有动画功能的导航菜单代码
Sep 16 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
Nov 23 Javascript
JavaScript计划任务后台运行的方法
Dec 18 Javascript
Bootstrap Paginator分页插件使用方法详解
May 30 Javascript
详解Angular2中的编程对象Observable
Sep 17 Javascript
vue.js移动数组位置,同时更新视图的方法
Mar 08 Javascript
微信小程序自定义弹窗wcPop插件
Nov 19 Javascript
微信小程序3种位置API的使用方法详解
Aug 05 Javascript
2分钟实现一个Vue实时直播系统的示例代码
Jun 05 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
2007/09/24 PHP
PHP之数组学习
2011/05/29 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
python中关于日期时间处理的问答集锦
2013/03/08 Python
Python中isnumeric()方法的使用简介
2015/05/19 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
如何利用python查找电脑文件
2018/04/27 Python
利用python画出折线图
2018/07/26 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
python写程序统计词频的方法
2019/07/29 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
python读文件的步骤
2019/10/08 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
美国著名的团购网站:Woot
2016/08/02 全球购物
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
体育教育个人自荐信范文
2013/12/01 职场文书
写给女生的道歉信
2014/01/14 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
食品安全汇报材料
2014/08/18 职场文书
论群众路线学习笔记
2014/11/06 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript