jQuery封装轮播图插件
// 布局要求,必须有一个容器,图片和两个按钮,布局方式自定,小圆点样式固定
// <div class="all">
// <img src="img/bg1.jpg" >
// <img src="img/bg2.jpg" >
// <img src="img/bg3.jpg" >
// <img src="img/bg4.jpg" >
// <img src="img/bg5.jpg" >
// <input type="button" name="" value="<<" />
// <input type="button" name="" value=">>" />
// </div> // 使用方法的参数
// $(".all").banner({
// imgs: $('.all').find('img'), // 必选,轮播的图片
// prev: $('.all').find('input').eq(0), // 必选,上一页按钮
// next: $('.all').find('input').eq(1), // 必选, 下一页按钮
// points: true, // 可选,小圆点,默认true
// autoplay: true, // 可选, 默认为true,自动轮播
// delay: 300, // 可选,默认为3000
// current: 3, // 可选, 默认是第0张图片显示
// duration: 300 // 可选, 默认为300 -- 动画时长
// }); ;(function($){
"use strict";
class Banner{
constructor(ele,obj) {
// 接受一个元素和一个参数对象
var {imgs,prev,next,points,autoplay,delay,current,duration}=obj;
// 处理数据
this.index=(current||1)-1;
this.img=imgs;
this.prev=prev;
this.next=next;
this.points= points===false?false:true;
this.autoplay= autoplay===false?false:true; // 控制动画时长
if(this.autoplay){
this.delay=delay||1000;
}else{
this.delay=1000000000;
}
this.duration=duration||500;
// 在用户有要求的情况下生成小按钮的容器
if(this.points){
ele.append($("<ul class='banner-ul'>"));
} // 样式,减少用户一些使用的繁琐操作
ele.css({
overflow: "hidden"
})
this.img.css({
position: "absolute",
top: 0,
left: "100%"
})
this.img.eq(this.index).css("left",0);
this.next.css("z-index",34);
this.prev.css("z-index",34); this.ul=ele.children("ul.banner-ul");
this.ele=ele; this.init();
// 根据用户需求判定是否自动轮播
if(this.autoplay)
this.time();
}
// 自动轮播功能
time(){
clearInterval(this.tt);
this.tt=setInterval(()=>{
this.kg=true;
this.init2();
},this.delay)
}
init(){
var that=this;
// 为前一张后一张两个按钮添加事件
this.prev.on("click",function(){
that.kg=false;
that.init2();
});
this.next.on("click",function(){
that.kg=true;
that.init2();
});
// 需要小圆点的情况下生成小圆点
if(this.points){
for(var i=0;i<this.img.length;i++){
this.ul.append($("<li>"));
}
this.li=this.ul.children("li"); // 添加样式
this.ul.css({
position: "absolute",
left:"43%",
display: "flex",
width: "14%",
"justify-content": "space-around",
bottom: "10px",
padding: 0,
})
this.li.css({
display: "block",
width: "40px",
height: "3px",
"z-index":30
})
// 给当前和其他添加样式
this.li.eq(this.index).css("background","red");
this.li.eq(this.index).siblings().css("background","#0ff");
this.init1();
}
}
init1(){
var that=this;
// 给每个小圆点移入事件,鼠标移入时切换图片
this.ul.on("click","li",function(){
if(that.index<$(this).index()){
that.qian=that.index;
that.kg=true;
}else if(that.index==$(this).index()){
return 0;
}else{
that.hou=that.index;
that.kg=false;
}
that.index=$(this).index();
that.move();
});
}
init2(){
// 计算索引
if(this.kg)
if(this.index==this.img.length-1)
{this.index=0;
this.qian=this.img.length-1;}
else
{this.index++;
this.qian=this.index-1}
else
if(this.index==0)
{this.index=this.img.length-1;
this.hou=0;}
else
{this.index--;
this.hou=this.index+1}
this.move();
}
move(){
clearInterval(this.tt);
if(this.points){
// 清理其他小圆点特殊样式
for(var j=0;j<this.li.length;j++)
this.li.eq(j).css("background","#00FFFF");
// 给当前小圆点加特殊样式
this.li.eq(this.index).css("background","red");
}
var w=parseInt(this.img.eq(1).width());
// 动画,轮播图的图片的具体效果
if(this.kg){
this.img.eq(this.qian).css("left",0).stop().animate({left:-1*w},this.duration);
this.img.eq(this.index).css("left",w+"px").stop().animate({left:0},this.duration);
}else{
this.img.eq(this.hou).css("left",0).stop().animate({left:w},this.duration);
this.img.eq(this.index).css("left",-1*w+"px").stop().animate({left:0},this.duration);
}
// 结尾时将清理掉的计时器重新绑定
if(this.autoplay)
clearInterval(this.tt);
this.tt=setInterval(()=>{
this.kg=true;
this.init2();
},this.delay)
}
}
// 绑定banner方法
$.fn.extend({
banner (obj) {
new Banner(this,obj);
}
});
})(jQuery);
jQuery封装轮播图插件的更多相关文章
- jquery, js轮播图插件Swiper3
轮播图插件Swiper3 HTML代码 如果只是简单的使用轮播图,直接复制我的html代码就可以. 如果想要高级一些,就自己去看文档吧 <!DOCTYPE html> <html l ...
- 封装一个简单的原生js焦点轮播图插件
轮播图实现的效果为,鼠标移入左右箭头会出现,可以点击切换图片,下面的小圆点会跟随,可以循环播放(为了方便理解,没有补2张图做无缝轮播).本篇文章的主要目的是分享封装插件的思路. 轮播图我一开始是写成非 ...
- jquery的fadeTo方法的淡入淡出轮播图插件
由于对基于jquery的简单插件开发有了一定的了解,慢慢的也对基于jquery的插件开发有了兴趣,在上班结束之后就研究各种插件的思路逻辑.最近开发了一款基于jquery的fadeTo方法的轮播图插件, ...
- 原生JS面向对象思想封装轮播图组件
原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能 ...
- 学习笔记: js插件 —— SuperSlide 2 (轮播图插件,PC用)
SuperSlide 2 轮播图插件,较老.但还好用. 适用于PC,是绑定到jquery上的方法: $.slide(); 如果在实际中找不到.slide方法,请检查jquery等.js文件的引入次序 ...
- 原生js写一个无缝轮播图插件(支持vue)
轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...
- 图片轮播图插件的使用 unslider!!!
1.百度图片轮播图unslider,第一个就会出现jquery unslider轮播图,点击进去,下载网站提供的文件,解压,内部有我们需要使用的各种js,图片等. 2.在自己的eclipse或者int ...
- 用jQuery实现轮播图效果,js中的排他思想
---恢复内容开始--- jQuery实现轮播图不用单独加载. 思路: a. 通过$("#id名");选择需要的一类标签,获得一个伪数组 b.由于是伪数组的原因,而对数组的处理最多 ...
- 第124天:移动web端-Bootstrap轮播图插件使用
Bootstrap JS插件使用 > 对于Bootstrap的JS插件,我们只需要将文档实例中的代码粘到我们自己的代码中> 然后作出相应的样式调整 Bootstrap中轮播图插件叫作Car ...
随机推荐
- Gradle构建SpringBoot并打包可运行的jar配置
使用Gradle构建项目,继承了Ant的灵活和Maven的生命周期管理,不再使用XML作为配置文件格式,采用了DSL格式,使得脚本更加简洁. 构建环境: jdk1.6以上,此处使用1.8 Gradle ...
- CF883J 2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest - J. Renovation 贪心+树状数组
首先对于一个月的预算,如果非常小的话,我们可以留到后面的 \(a_i\) 最大的月来用,因为 \(a_i\) 越大能够拆建筑的越多. 于是我们把 \(a_i\) 合并给 \(i\) 后面的 \(a\) ...
- hibernate 5原生sql查询测试学习代码
基本查询 import java.util.List; import org.hibernate.SQLQuery; import org.hibernate.Session; import org. ...
- Java web入门之Http请求和响应
三层架构 web层:JSP + Servlet.Struts 2.SpringMVC service层:Spring dao层:JDBC.DBUtils.Hibernate.MyBatis form表 ...
- 爬虫技术:cookies池的维护
一:为什么要维护cookie 1.登录才能爬取内容 2.爬取频繁会被封号. 3.需要维护多个账号的cookie,实现大规模抓取 二:cookies的要求 1.自动登录更新 2.定期筛选验证 3.提供外 ...
- mysql 生成max+1编号
#sql info表插入一条数据,number字段根据info表最大number+1插入,若为初始插入,number为100000#在获取本表number最大值时,mysql不允许直接查询本表获取最大 ...
- Graphics 绘图
Graphics类提供基本绘图方法,Graphics2D类提供更强大的绘图能力. Graphics类提供基本的几何图形绘制方法,主要有:画线段.画矩形.画圆.画带颜色的图形.画椭圆.画圆弧.画多边形等 ...
- C#基础提升系列——C# 泛型
C# 泛型(Generics) 泛型概述 泛型是C#编程语言的一部分,它与程序集中的IL(Intermediate Language,中间语言)代码紧密的集成.通过泛型,我们不必给不同的类型编写功能相 ...
- 线性规划(Simplex单纯形)与对偶问题
线性规划 首先一般所有的线性规划问题我们都可以转换成如下标准型: 但是我们可以发现上面都是不等式,而我们计算中更希望是等式,所以我们引入这个新的概念:松弛型: 很显然我们最后要求是所有的约束左边的变量 ...
- delphi 控件背景透明代码
procedure DrawParentBackground(Control: TControl; DC: HDC; R: PRect = nil; bDrawErasebkgnd: Boolean ...