使用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 到 JQuery (1)学习小结
Feb 12 Javascript
JQuery UI皮肤定制
Jul 27 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
Feb 25 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
Jan 23 Javascript
jQuery自动添加表单项的方法
Jul 13 Javascript
jquery实现的判断倒计时是否结束代码
Feb 05 Javascript
js实现加载更多功能实例
Oct 27 Javascript
基于IView中on-change属性的使用详解
Mar 15 Javascript
javaScript把其它类型转换为Number类型
Oct 13 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
Feb 27 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
Oct 26 Javascript
vscode中使用npm安装babel的方法
Aug 02 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
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
php算法实例分享
2015/07/14 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
某人初学javascript的时候写的学习笔记
2010/12/30 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
2012/12/06 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
JavaScript DOM基础
2015/04/13 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
Python人脸识别初探
2017/12/21 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
Python requests接口测试实现代码
2020/09/08 Python
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
好邻里事迹材料
2014/01/16 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
岗位竞聘演讲稿范文
2014/04/24 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
大学运动会加油稿
2015/07/22 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server
Python中的嵌套循环详情
2022/03/23 Python