使用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 相关文章推荐
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
Oct 29 Javascript
Area 区域实现post提交数据的js写法
Apr 22 Javascript
jQuery简单实现验证邮箱格式
Jul 15 Javascript
Vue数据驱动模拟实现4
Jan 12 Javascript
vue.js加载新的内容(实例代码)
Jun 01 Javascript
详解Vue微信公众号开发踩坑全记录
Aug 21 Javascript
基于Vue框架vux组件库实现上拉刷新功能
Nov 28 Javascript
让网站自动生成章节目录索引的多个js代码
Jan 07 Javascript
微信小程序实现渐入渐出动画效果
Jun 13 Javascript
vue实现将一个数组内的相同数据进行合并
Nov 07 Javascript
用JS实现选项卡
Mar 23 Javascript
手写Spirit防抖函数underscore和节流函数lodash
Mar 22 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
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
jQuery学习5 jQuery事件模型
2010/02/07 Javascript
JQuery的一些小应用收集
2010/03/27 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
浅析JS运动
2015/12/28 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
[01:07:34]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第二场 1月9日
2021/03/11 DOTA
python刷投票的脚本实现代码
2014/11/08 Python
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
深入学习Python中的装饰器使用
2016/06/20 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
python各种excel写入方式的速度对比
2020/11/10 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
python实现经纬度采样的示例代码
2020/12/10 Python
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
数控专业个人求职信范例
2013/11/29 职场文书
党员批评与自我批评
2014/02/12 职场文书
吃空饷专项治理工作实施方案
2014/03/04 职场文书
环保专项行动方案
2014/05/12 职场文书
高三霸气励志标语
2014/06/24 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
员工升职自我评价
2019/03/26 职场文书
opencv 分类白天与夜景视频的方法
2021/06/05 Python
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python