Banner插件版
条件:使用JQ。
使用情况:当目标元素调用该插件时,插件产生的元素会替换该目标元素,并且在目标元素位置生成。需要输入一组图片地址数组(对象还没有实现,慢慢改善)默认宽高是600*400,可在后面的参数中自行设置;
CSS部分:
把CSS样式保存在名为Banner的CSS文件中,并且放在CSS文件夹中
* {
margin: 0;
padding: 0;
} #bannerWrap {
position: relative;
overflow: hidden;
} #bannerMiddle {
position: absolute;
top: 0px;
} #bannerMiddle img {
float: left;
} #bannerWrap>a {
position: absolute;
width: 50px;
height: 60px;
text-align: center;
line-height: 60px;
top: 50%;
transform: translateY(-50%);
text-decoration: none;
background-color: rgba(0, 0, 0, 0.3);
color: white;
display: none;
} #bannerWrap>a:nth-of-type(1) {
left: 0px;
} #bannerWrap>a:nth-of-type(2) {
right: 0px;
} #bannerXiabiao{
position: absolute;
bottom: 10px;
height: 30px;
list-style: none;
} #bannerXiabiao>li {
width: 30px;
height: 30px;
float: left;
margin-left: 10px;
border-radius: 50%;
color: white;
background-color: rgba(0, 0, 0, 0.5);
text-align: center;
line-height: 30px;
} #bannerXiabiao>li:nth-child(1) {
display: none;
} #bannerXiabiao .color {
background: red;
}
JS部分
$.fn.extend({
//传入一个图片数组
Banner:function(imgArr,width,height) {
var linkObj=$("<link rel=stylesheet type=text/css href=css/Banner.css>");
$("head").append(linkObj);//动态添加CSS样式
var wrap = $("<div id=bannerWrap><div id=bannerMiddle></div><a href='###'><</a><a href='###'>></a><ul id='bannerXiabiao'></ul></div>");
$(this).after(wrap);
$(this).remove();
var imgageArr = [];//存储加载好了的图片
var loadNum = 0;
var imgWidth = width||600;//有参数输入就自行参数
var imgHeight=height||400;
var middle = $("#bannerMiddle");
var xiabiao = $("#bannerXiabiao");
var wrap = $("#bannerWrap");
wrap.css({height:imgHeight,width:imgWidth});
var move=wrap.children("a");//获取前进后退的按钮
var last = move.eq(0);
var next =move.eq(1);
var index = 1;
var imgNum = imgArr.length + 1; var guoduTimer, autoTimer,clickBolTimer;
var clickBol=true;//点击开关
//图片预加载
for(var i = 0; i < imgArr.length; i++) {
var img = new Image();
img.index = i;
img.src = imgArr[i];
img.onload = function() {
loadNum++;
imgageArr.push(this);
if(loadNum == imgArr.length) {
main();
}
}
}
function main() {
//自动播放
function openAuto() {
autoTimer = setInterval(function() {
index++;
if(index == imgLength) {
index = 1;
middle.css("left", 0);
}
change();
}, 4000)
}
//一次点击之后,两秒内不能点击
function clickBolTime(){
clearTimeout(clickBolTimer);
clickBol=false;
clickBolTimer=setTimeout(function(){
clickBol=true;
},2000)
}
wrap.hover(function() {
move.each(function() {
$(this).css("display", "block");
})
clearInterval(autoTimer);
}, function() {
openAuto();
move.each(function() {
$(this).css("display", "none");
})
})
//获取加载好的图片
function getImg(x) {
for(var i = 0; i < imgageArr.length; i++) {
if(x == imgageArr[i].index) {
return imgageArr[i];
}
}
}
//动态设置图片的宽高,路径
for(var i = 0; i <= imgageArr.length; i++) {
var img = document.createElement("img");
img.style.width=imgWidth+"px";
img.style.height=imgHeight+"px";
var li = $("<li>" + i + "</li>");
if(i == 0 || i == imgageArr.length) {
img.src = getImg(imgageArr.length - 1).src;
} else {
img.src = getImg(i - 1).src;
}
middle.append(img);
xiabiao.append(li);
}
middle.css({
width:imgNum * imgWidth,
height:imgHeight,
left:-imgWidth,
});
xiabiao.width((imgNum - 1) * 40);
var center = (wrap.width() - xiabiao.width()) / 2;//让下标始终是居中的
xiabiao.css("left", center);
var imgLength = middle.children().length;
next.click(function() {
if(clickBol){
index++;
if(index == imgLength) {
index = 1;
middle.css("left", 0);
}
clickBolTime()
change();
}
})
last.click(function() {
if(clickBol){
index--;
if(index < 0) {
index = imgLength - 2;
middle.css("left", -(imgLength - 1) * imgWidth);
}
clickBolTime()
change();
}
})
var lis = xiabiao.children();
lis.eq(1).addClass("color");//默认第一张被选中
lis.click(function() {
if(clickBol){
index = $(this).index()
change();
clickBolTime()
}
})
function change() {
lis.each(function() {
$(this).removeClass();
})
if(index == 0) {
lis.last().addClass("color");
} else {
lis.eq(index).addClass("color");
}
var e = -index * imgWidth;
middle.animate({"left":e},{duration:1000,})
}
openAuto();
//当页面被选择时开启自动播放
window.onfocus=function(){
openAuto();
}
//切换到其他页面时,停止自动播放
window.onblur=function(){
clearInterval(autoTimer);
}
}
},
}
调用例如:$("div").Banner(imgArr,600,400);
Banner插件版的更多相关文章
- js 控制Div循环显示 非插件版
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- VOL.1 利用vmware ThinApp 制作非XP下可以运行的IE6 【无插件版】(windows vista/7/8 x86/x64 )
作为一名前端开发工程师,不免要考虑IE6的兼容性,但是大部分挑剔的同行们估计都不会用XP,所以基本上IE6的兼容性测试,都是使用IE Tester或者虚拟机. IE Tester的话,很多地方模拟的还 ...
- 【小o地图Excel插件版】计算两点间驾车路径,获取途径道路、驾车距离、耗时等信息
小o地图Excel插件版:一款基于Excel软件开发的地图软件,提供基于Excel表格进行地理数据挖掘.地理数据分析.地图绘制.地图图表等功能的工具类软件.具有易用.高效.稳定的特点,能够满足地理数据 ...
- 【小o地图Excel插件版】不止能做图表,还能抓58、大众点评网页数据...
小o地图Excel插件版:一款基于Excel软件开发的地图软件,提供基于Excel表格进行地理数据挖掘.地理数据分析.地图绘制.地图图表等功能的工具类软件.具有易用.高效.稳定的特点,能够满足地理数据 ...
- Postman 安装及使用入门教程 (谷歌浏览器插件版)
postman 在 谷歌浏览器中插件版 http://www.cnblogs.com/mafly/p/postman.html Postman 4.1.2 下载地址: http://files.cnb ...
- Eclipse中使用JRebel实现项目热部署(Maven插件版)
JRebel实现项目热部署(Maven插件版) 热部署,就是在应用运行过程中不进行重启,可直接进行软件升级. 在开发过程中,热部署就是在项目运行过程中变更代码,无需重启服务器即可使代码生效. tomc ...
- js 函数的多图片懒加载(lazy) 带插件版完整解析
前言: 本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽. 本篇文章为您分析一下原生JS实现图片懒加载效果 页面需求 1 ...
- Google浏览器PostMan插件版安装步骤
PostMan插件版安装步骤: 第一步:把下载后的.crx扩展名的离线Chrome插件的文件扩展名改成.zip或者.rar 第二步:右键点击该文件,并使用压缩软件(如winrar.360压缩等)对该压 ...
- OpenResty — Nginx全能插件版
官网: http://openresty.org/ 虽然是中国人做的,但没几个汉字..... 我用Nginx,是这样一个过程: 1. 系统rpm中的nginx,能让其跑起来 2. 玩配置文件 3. 玩 ...
随机推荐
- Mongo基础使用,以及在Express项目中使用Mongoose
MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...
- [iOS]创建一像素的线
float sortaPixel = 1.0/[UIScreen mainScreen].scale; UIView* line = [[UIView alloc]initWithFrame:CGRe ...
- URAL 1827 Indigenous Wars(排序、乱搞)
题意:给一个长度为n数组{a[i]}.有m个操作Ti,Si,Li表示找以Ti值结束,以Si值开始,长度为Li的连续子串.找到后,将区间的答案值设为1.一开始答案值全部为0.最后输出n个答案值. 好久没 ...
- JTextField 限制指定字符不能输入
txtStartDate.addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent e) { int keyChar = e.ge ...
- 关于java中多态的理解
java三大特性:封装,继承,多态. 多态是java的非常重要的一个特性: 那么问题来了:什么是多态呢? 定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行 ...
- html表单提交方式
xml 表单提交方式: * 使用submit提交 <form> 要提交的数据 <input type="submit" /'> </form> ...
- wireshark使用方法总结
Wireshark基本用法 抓取报文: 下载和安装好Wireshark之后,启动Wireshark并且在接口列表中选择接口名,然后开始在此接口上抓包.例如,如果想要在无线网络上抓取流量,点击无线接口. ...
- Windows Task Scheduler Fails With Error Code 2147943785
Problem: Windows Task Scheduler Fails With Error Code 2147943785 Solution: This is usually due to a ...
- 学习微信小程序之css9内边距
padding内边距 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- Axure 自适应视图
假设B为A的子视图 继承: A更新 文字内容.交互事件.禁用: 位置.尺寸.样式.交互样式 时, B都会继承响应更新变化 B更新 文字内容.交互事件.禁用时,A也会更新 B更新 位置.尺寸.样式.交互 ...