使用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 相关文章推荐
基于JQuery的cookie插件
Apr 07 Javascript
js change,propertychange,input事件小议
Dec 20 Javascript
Jquery动态添加及删除页面节点元素示例代码
Jun 16 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
Sep 06 Javascript
JavaScript中的splice方法用法详解
Jul 20 Javascript
完美的js div拖拽实例代码
Sep 24 Javascript
jQuery 获取select选中值及清除选中状态
Dec 13 Javascript
详解基于angular路由的requireJs按需加载js
Jan 20 Javascript
原生JavaScript实现Tooltip浮动提示框特效
Mar 07 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
Jun 28 Javascript
详解Vue双向数据绑定原理解析
Sep 11 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
May 01 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知识收集
2012/08/20 PHP
php缓存技术详细总结
2013/08/07 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
event.srcElement+表格应用
2006/08/29 Javascript
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
JS中的函数与对象的创建方式
2019/05/12 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
对numpy中的数组条件筛选功能详解
2018/07/02 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
Python字符串对象实现原理详解
2019/07/01 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
小饰品店的创业计划书范文
2013/12/28 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
中考标语大全
2014/06/05 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
党支部意见范文
2015/06/02 职场文书
公司员工管理制度
2015/08/04 职场文书
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python