JQuery插件开发初探——图片轮播
在熟悉了插件开发的结构以后,自己尝试着做了一个稍微复杂一点的小功能:图片轮播插件。
由于之前使用的一款图片轮播插件,性能不高,页面加载的时候需要载入全部的图片,因此速度很慢。
通过自己做这个小插件,能控制一下图片的加载,每次只加载一张图片。当然翻转的特效肯定没有人家的绚丽。
之前尝试了在div中内嵌img标签的方式,但是左右两侧的翻页按钮不容易摆放,于是采用了3个div的方式,最外面一个大的div,背景图片为照片图片,其中左右各两个小div,放翻页按钮。
由于开始的时候需要频繁调样式,因此大div中的代码都是写死的,等到调试成功后,再放到js里去append。
参数中定义了需要展示的照片列表和div的宽高:
var defaults = {
            height: '300px',
            width: '1000px',
            imgs: ['images/photo/1.JPG', 'images/photo/2.JPG', 'images/photo/3.JPG', 'images/photo/4.JPG', 'images/photo/5.JPG']
        };
图片拉伸用了比较新的CSS属性:"background-size", '100% 100%'
核心思想就是每次随机一直图片作为背景,随机的原则是不和上一张重复。
以下是完整的js代码:
/***************************************************
* DannyImagesShow
* 图片轮播
* Ver:1.0
* Author:DannyWang
* Date:2013-10-15
* 图片轮播
Example:
var opt = {
height: '500px',
width: '100%',
imgs: ['images/photo/6.JPG', 'images/photo/7.JPG', 'images/photo/8.JPG', 'images/photo/9.JPG']
};
$("#imgDiv").dannyImagesShow(opt);
****************************************************/
(function ($) {
$.fn.dannyImagesShow = function (options) {
//定义默认值
var defaults = {
height: '300px',
width: '1000px',
imgs: ['images/photo/1.JPG', 'images/photo/2.JPG', 'images/photo/3.JPG', 'images/photo/4.JPG', 'images/photo/5.JPG']
};
//合并用户自定义属性,默认属性
var options = $.extend(defaults, options);
var gNumber=0;
this.each(function () {
var imgDiv = $(this);
imgDiv.css("height", options.height);
imgDiv.css("width", options.width);
imgDiv.css("background-image", 'url("' + options.imgs[1] + '")');
imgDiv.css("background-position", 'center');
imgDiv.css("background-size", '100% 100%'); var pagerHTML = '';
pagerHTML += '<div id="leftbar" style="float: left; height: ' + (options.height.replace('px', '') - (options.height.replace('px', '') / 2 - 15)) + 'px' + '; width: 30px; padding-left:10px; padding-top: ' + (options.height.replace('px', '') / 2 - 15) + 'px' + ';">';
pagerHTML += '<a id="leftbarButton" class="left">prev</a>';
pagerHTML += '</div>';
pagerHTML += '<div id="rightbar" style="float: right; height: ' + (options.height.replace('px', '') - (options.height.replace('px', '') / 2 - 15)) + 'px' + '; width: 30px;padding-right:10px; padding-top: ' + (options.height.replace('px', '') / 2 - 15) + 'px' + ';">';
pagerHTML += '<a id="rightbarButton" class="right">next</a>';
pagerHTML += '</div>'; imgDiv.append(pagerHTML); var btnPrev = $(".left");
var btnNext = $(".right"); btnPrev.click(function () {
var n = getImagesNum(1, options.imgs.length);
while (n === gNumber) {
n = getImagesNum(1, options.imgs.length);
}
gNumber = n;
$("#imgDiv").hide();
imgDiv.css("background-image", 'url("' + options.imgs[n - 1] + '")');
$("#imgDiv").slideDown();
}); btnNext.click(function () {
var n = getImagesNum(1, options.imgs.length);
while (n === gNumber) {
n = getImagesNum(1, options.imgs.length);
}
gNumber = n;
$("#imgDiv").hide();
imgDiv.css("background-image", 'url("' + options.imgs[n - 1] + '")');
$("#imgDiv").slideDown();
}); $("#leftbar").bind("mouseover", function () {
$("#leftbarButton").show();
});
$("#leftbar").bind("mouseout", function () {
$("#leftbarButton").hide();
}); $("#rightbar").bind("mouseover", function () {
$("#rightbarButton").show();
});
$("#rightbar").bind("mouseout", function () {
$("#rightbarButton").hide();
}); $(".left").hide();
$(".right").hide();
}); //获取随机数
var getImagesNum = function (under, over) {
switch (arguments.length) {
case 1: return parseInt(Math.random() * under + 1);
case 2: return parseInt(Math.random() * (over - under + 1) + under);
default: return 0;
}
}
}
})(jQuery);
JQuery插件开发初探——图片轮播的更多相关文章
- jQuery轻量级京东图片轮播代码等
		http://sc.chinaz.com/jiaoben/jiaodiantu.html jQuery轻量级京东图片轮播代码 查看全图点击预览 顶(17)踩(4)报错评论(0)下载地址 更新时间: ... 
- 使用javascript,jquery实现的图片轮播功能
		使用javascript,jquery实现的图片轮播功能本功能采用最基础的javascript和一些简单的jquery技术实现,易理解,以修改使用,代码简易,适合刚开始接触到网站开发的朋友们参考.可以 ... 
- 纯javaScript、jQuery实现个性化图片轮播
		纯javaScript实现个性化图片轮播 轮播原理说明<如上图所示>: 1. 画布部分(可视区域)属性说明:overflow:hidden使得超出画布部分隐藏或说不可见.position: ... 
- JQuery  slidebox实现图片轮播
		jQuery图片轮播(焦点图)插件jquery.slideBox,简单设置下参数就可以多个多种动画效果,左右,上下,速度,还可指定默认显示第N张,点击的按钮在现代浏览中可以实现圆形或圆角效果,插件代码 ... 
- JQuery插件之图片轮播插件–slideBox
		来源:http://www.ido321.com/852.html 今天偶然发现了一个比较好用的图片轮播插件—slideBox 先看看效果:http://slidebox.sinaapp.com/ 代 ... 
- js/jquery中实现图片轮播
		一,jquery方法 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&qu ... 
- JQuery简单实现图片轮播效果
		很多页面都需要用到界面轮播,但是用原生js相对来说比较复杂,用jQuery实现效果比较迅速,写个简单的demo 1.首先在HTML页面要放置轮播图案位置插入div,这里写了轮播图片数量为3张,所以定义 ... 
- jquery视频展示 图片轮播
		<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ... 
- Jquery实现简单图片轮播
		html代码: <div class="show"> <div class="left"> <div class="sh ... 
随机推荐
- Java中动态代理技术生成的类与原始类的区别
			用动态代理的时候,对它新生成的类长什么样子感到好奇.有幸通过一些资料消除了心里的疑惑. 平时工作使用的Spring框架里面有一个AOP(面向切面)的机制,只知道它是把类重新生成了一遍,在切面上加上了后 ... 
- 实验数据结构——KMP算法Test.ming
			翻译计划 小明初学者C++,它确定了四个算术.关系运算符.逻辑运算.颂值操作.输入输出.使用简单的选择和循环结构.但他的英语不是很好,记住太多的保留字,他利用汉语拼音的保留字,小屋C++,发明 ... 
- newinstance()和new有什么区别?(转)
			在初始化一个类,生成一个实例的时候:newInstance() 和 new 有什么区别? 用newInstance与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制,那么为什么会有 ... 
- 数据收集程序一般建筑(C++ ACE达到)
			数据收集程序一般功能 经socket数据的接收的另一侧.端方能够访问智能电表采集器,你可曾与计算机之间的通信的通信协议(你良好的一致性是谁client,谁是服务端,即数据流) 为收集程序要求 可扩展: ... 
- 卓尼斯ZT-180点评
			卓尼斯ZT-180点评 ——我们出差,使用10”上网本发布,没有图片.并写冲忙.遗憾的不足之处. 一.购买 1.由于旅游.不想拿那台14"笔记本,台平板电脑.当时,选择的对象有维智A8 ... 
- RH033读书笔记(12)-Lab 13 Finding and Processing Files
			Sequence 1: Using find Scenario: Log in as user student. Devise and execute a find command that prod ... 
- 旧Mj下拉刷新 An instance 0xca90200 of class UITableView was deallocated while key value observers were s
			An instance 0xca90200 of class UITableView was deallocated while key value observers were still regi ... 
- JProgressBar的一个框架
			Frame: package swing.progress; import java.awt.BorderLayout; import java.awt.Frame; import java.awt. ... 
- android 处理器crash刊物
			日志记录程序是为了方便各种异常情况,为了方便日后的维修方案进行维修,程序无法百分百健康,完美,有必要保存在日志中代码.易于维护.Java了一个接口UncaughtExceptionHandler,Th ... 
- 【IPC第二个进程间通信】管道Pipe
			IPC进程间通信+管道Pipe IPC(Inter-Process Communication,进程间通信). 管道用于进程间共享数据,事实上质是共享内存 ... 
