使用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实现图片翻页效果
Dec 23 Javascript
JavaScript中奇葩的假值示例应用
Mar 11 Javascript
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
Dec 04 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
Sep 14 Javascript
JS 实现Base64编码与解码实例详解
Nov 07 Javascript
详解ES6中的let命令
Apr 05 Javascript
javascript常用经典算法详解
Jan 11 Javascript
vue.js学习之vue-cli定制脚手架详解
Jul 02 Javascript
angularjs实现天气预报功能
Jun 16 Javascript
jQuery中的类名选择器(.class)用法简单示例
May 14 jQuery
Vue实现菜单切换功能
Nov 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
用PHP制作的意见反馈表源码
2007/03/11 PHP
php继承的一个应用
2011/09/06 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
Javascript Throttle &amp; Debounce应用介绍
2013/03/19 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
Javascrip实现文字跳动特效
2016/11/27 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
基于node搭建服务器,写接口,调接口,跨域的实例
2018/05/13 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
python 容器总结整理
2017/04/04 Python
深入浅析Python的类
2018/06/22 Python
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
采购主管工作职责
2013/12/12 职场文书
北京大学自荐信范文
2014/01/28 职场文书
英语老师推荐信
2014/02/26 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
沙滩主题婚礼活动策划方案
2014/09/15 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
先进工作者事迹材料
2014/12/23 职场文书
校长师德表现自我评价
2015/03/05 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript