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. 玩 ...
随机推荐
- "传成老树白茶"献礼母亲节 邀市民品茗感受茶文化
5月8日下午,传成老树白茶巡回中国公益品鉴会第七十站,走进福州马尾区东方名城传成老树白茶文化馆. 本次品鉴会活动以“感恩母亲节”为主题,以马尾船政文化为背景,邀福州市民一起品鉴白茶,感受中国茶文化. ...
- Mac上搭建Nginx + rtmp
介绍 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网上整理了安装流程,分享给大家并且作备忘. 安装步骤 1.先安装brew: /usr/bin/ru ...
- git常用的命令集合
Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone g ...
- 安装Java的IDE Eclipse时出现java.net.SocketException,出现错误Installer failed,show.log
ERROR: org.eclipse.equinox.p2.transport.ecf code=1002 Unable to read repository at http://download.e ...
- wps恢复经典模式
经典模式 情况一: 恢复的方法:点击红色区域 情况二: 恢复的方法:点击红色区域
- 现有iOS项目集成React Native过程记录
在<Mac系统下React Native环境搭建>配置了RN的开发环境,然后,本文记录在现有iOS项目集成React Native的过程,官方推荐使用Cocoapods,项目一开始也是使用 ...
- 用代码控制鼠标键盘(C#语言)
前些时间想做一个鼠标点击器,用到了这些知识. 下面整理记录一下. ps.感谢各位大神 下面直接上代码 1.鼠标的控制 class MouseMove { #region MouseEvent [Sys ...
- Toad for Sqlserver
# 设置制表符 从sqlserver拷贝的存储过程粘贴到Toad,代码变得不整齐了,这就需要设置下制表符的大小.
- HDU5887 Herbs Gathering(2016青岛网络赛 搜索 剪枝)
背包问题,由于数据大不容易dp,改为剪枝,先按性价比排序,若剩下的背包空间都以最高性价比选时不会比已找到的最优解更好时则剪枝,即 if(val + (LD)pk[d].val / (LD)pk[d]. ...
- 解决Linux不能上网ping:unknown host的问题
修改配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0 vim /etc/sysconfig/network-scripts/ifcfg-eth0 在里面添加 ...