使用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获取地址栏参数插件(模仿C#)
Oct 26 Javascript
JavaScript var声明变量背后的原理示例解析
Oct 12 Javascript
Node.js中require的工作原理浅析
Jun 24 Javascript
一行命令搞定node.js 版本升级
Jul 20 Javascript
浅谈javascript的Touch事件
Sep 27 Javascript
微信小程序 教程之WXML
Oct 18 Javascript
jQuery Mobile和HTML5开发App推广注册页
Nov 07 Javascript
详解Angular2 之 结构型指令
Jun 21 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
Nov 28 Javascript
jQuery中复合选择器简单用法示例
Mar 31 jQuery
vue+iview分页组件的封装
Nov 17 Vue.js
jquery插件实现搜索历史
Apr 24 jQuery
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
桌面中心(四)数据显示
2006/10/09 PHP
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
python中查看变量内存地址的方法
2015/05/05 Python
python中urlparse模块介绍与使用示例
2017/11/19 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
Python多图片合并PDF的方法
2019/01/03 Python
python enumerate内置函数用法总结
2020/01/07 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
安全责任书范本
2014/04/15 职场文书
支部鉴定材料
2014/06/02 职场文书
企业文化标语大全
2014/06/10 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
幼儿园2016年感恩节活动总结
2016/04/01 职场文书
七年级作文之游记
2019/12/11 职场文书