function Banner() {
var self = this;
self.countLi = $('.banner-group .bannerUl li').length;
self.bannerUl = $('.banner-group .bannerUl');
self.bannerGroup = $('.banner-group');
self.arrow = $('.arrow');
self.leftarrow = $('.arrow-left');
self.rightarrow = $('.arrow-right');
self.bannerControl = $('.bannerControl');
self.index = 1;
} Banner.prototype.animate = function(){
var self = this;
self.bannerUl.animate({'left':-798*self.index},500);
var index = self.index;
if (index===0){
index = self.countLi-1;
}else if(index === self.countLi+1){
index = 0
}else {
index = self.index-1;
}
self.bannerControl.children('li').eq(index).css('background-color','white').siblings('li').css('background-color','');
}; //初始化小圆点
Banner.prototype.bannerInit = function () {
var self = this;
self.bannerUl.css({'left':-798});
self.bannerUl.css('width',798*(self.countLi+2));
self.bannerControl.css('width',12*self.countLi+20*self.countLi);
for (i=0;i<self.countLi;i++){
var cirle = $('<li></li>');
self.bannerControl.append(cirle);
if(i===0){
self.bannerControl.children('li').eq(0).css('background-color','white');
}
}
var first = self.bannerUl.children('li').eq(0).clone();
var last = self.bannerUl.children('li').eq(self.countLi-1).clone();
self.bannerUl.append(first);
self.bannerUl.prepend(last);
}; //实现轮播图自动轮播
Banner.prototype.loop = function() {
var self = this;
self.timer = setInterval(function () {
if (self.index>=self.countLi+1){
self.bannerUl.css({'left':-798});
self.index=2;
}else {
self.index++;
}
self.animate();
},1000);
}; // 监听鼠标是否在轮播图上面
Banner.prototype.listenHover = function(){
var self = this;
self.bannerGroup.hover(function () {
clearInterval(self.timer);
self.listenArrow(true);
}, function () {
self.loop();
self.listenArrow(false);
})
}; //监听箭头隐藏事件
Banner.prototype.listenArrow = function(isshow){
var self = this;
if (isshow){
self.arrow.show();
}else {
self.arrow.hide();
}
};
//监听箭头点击事件
Banner.prototype.clickArrow = function () {
var self = this;
self.rightarrow.click(function () {
if(self.index>=self.countLi+1){
self.bannerUl.css({'left':-798});
self.index=2;
}else {
self.index++;
}
self.animate();
});
self.leftarrow.click(function () {
if(self.index===0){
self.bannerUl.css({'left':-self.countLi*798});
self.index = self.countLi-1;
}else {
self.index--
}
self.animate();
})
}; //小圆点控制轮播图
// Banner.prototype.bannerControlUl = function(){
// var self = this;
// self.bannerControl.children('li').eq(self.index+1).css('background-color','white').siblings('li').css('background-color','');
// }; //小圆点点击事件
Banner.prototype.clickControl = function () {
var self = this;
self.bannerControl.children('li').each(function (index,obj) {
$(obj).click(function () {
self.animate();
self.bannerControl.children('li').eq(index).css('background-color','white').siblings('li').css('background-color','');
})
})
}; Banner.prototype.run = function () {
var self = this;
self.loop();
self.listenArrow(false);
self.listenHover();
self.clickArrow();
self.bannerInit();
self.clickControl();
};
$(function () {
var banner = new Banner();
banner.run();
});

轮播图js编写的更多相关文章

  1. 轮播图--JS手写

    轮播图基本每个网站都会有,也有很多的JQuery插件可以用,这里是用JS代码写的. @{ Layout = null; } <!DOCTYPE html> <html> < ...

  2. 轮播图--js课程

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 轮播图js版&jQ版

    JS版轮播图 html部分和css部分自己任意定 主要构成: 1,一个固定的框 超出框的部分隐藏 2,几张图片float:left 3,下部下原点,点击切换,切换到不同的张都有红色显示 4,左右两个大 ...

  4. 小米官网轮播图js+css3+html实现

    官网轮播: 我的轮播: 重难点: 1.布局 2.图片和右下角小圆点的同步问题 3.setInterval定时器的使用 4.淡入淡出动画效果 5.左右箭头点击时,图片和小圆点的效果同步 6.另一种轮播思 ...

  5. 转:大气炫酷焦点轮播图js特效

    使用方法 Step 1. 在html的标签内引入相关文件 <script type="text/javascript" src="js/myfocus-2.0.0. ...

  6. banner轮播图js

    例子1: if(!$('.side_ul ul').is(":animated")){            var wli = $('.side_ul li').width()+ ...

  7. 简单介绍无限轮播图,js源代码

    无限轮播图js源代码,今天介绍一下用js简单的编写无限轮播图 <!DOCTYPE html> <html>   <head>     <meta charse ...

  8. App轮播图

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. js编写轮播图,广告弹框

    1.轮播图 js编写轮播图,需要用到setInterval(计时器):先给一个div,里面放轮播图的图片,将轮播图的图片明明为相同样式的:如:banner1.jpg,banner2.jpg,banne ...

随机推荐

  1. Java限制可以重入次数的锁

    完全 模仿ReentrantLock, 通过继承 java.util.concurrent.locks.Lock , 内置 AbstractQueuedSynchronizer 实现类,限制可以重入次 ...

  2. 收藏 —— 教你阅读Python开源项目

    https://zhuanlan.zhihu.com/p/22275595?refer=python-cn

  3. shell脚本运行java程序jar

    在UBuntu上部署项目的时候,我们往往通过一段shell来启动程序,甚至是通过crontab定时任务来定时的调用java程序,但是很奇怪的一个问题就是,比如我写了一个如下的shell脚本: #!/b ...

  4. 【原】The Linux Command Line - Redirection

    ● cat - Concatenate files● sort - Sort lines of text● uniq - Report or omit repeated lines● grep - P ...

  5. 关于HashMap和HashTable.md

    目录 先来些简单的问题 你用过HashMap吗?" "什么是HashMap?你为什么用到它?" "你知道HashMap的工作原理吗?" "你 ...

  6. JAVA字符串类

    一.字符串类String1.String是一个类,位于java.lang包中2.创建一个字符串对象的2种方式: String 变量名=“值”; String 对象名=new String(“值”);3 ...

  7. 《CSAPP》符号和符号表

    符号和符号表 每个可重定位目标模块m都有一个符号表,它包含m所定义和引用的符号的信息. 有三种不同的符号: 由m定义并能被其他模块引用的全局符号.对应非静态的C函数以及不带C static属性的全局变 ...

  8. extJs学习的资源

    http://www.qeefee.com/zt-extjs   Ext JS 6 入门学习资料大全(2016-12-14)   cddnExtJS学习:http://blog.csdn.net/co ...

  9. 好看的alert弹出框sweetalert

    转载:https://www.cnblogs.com/lamp01/p/7215408.html

  10. react项目的react-router-dom路由的使用

    现在测试一下react-router-dom路由的使用,首先在App.js这个文件搭配路由 import React, { Component } from 'react'; import {Link ...