在熟悉了插件开发的结构以后,自己尝试着做了一个稍微复杂一点的小功能:图片轮播插件。

由于之前使用的一款图片轮播插件,性能不高,页面加载的时候需要载入全部的图片,因此速度很慢。

通过自己做这个小插件,能控制一下图片的加载,每次只加载一张图片。当然翻转的特效肯定没有人家的绚丽。

之前尝试了在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插件开发初探——图片轮播的更多相关文章

  1. jQuery轻量级京东图片轮播代码等

    http://sc.chinaz.com/jiaoben/jiaodiantu.html jQuery轻量级京东图片轮播代码   查看全图点击预览 顶(17)踩(4)报错评论(0)下载地址 更新时间: ...

  2. 使用javascript,jquery实现的图片轮播功能

    使用javascript,jquery实现的图片轮播功能本功能采用最基础的javascript和一些简单的jquery技术实现,易理解,以修改使用,代码简易,适合刚开始接触到网站开发的朋友们参考.可以 ...

  3. 纯javaScript、jQuery实现个性化图片轮播

    纯javaScript实现个性化图片轮播 轮播原理说明<如上图所示>: 1. 画布部分(可视区域)属性说明:overflow:hidden使得超出画布部分隐藏或说不可见.position: ...

  4. JQuery slidebox实现图片轮播

    jQuery图片轮播(焦点图)插件jquery.slideBox,简单设置下参数就可以多个多种动画效果,左右,上下,速度,还可指定默认显示第N张,点击的按钮在现代浏览中可以实现圆形或圆角效果,插件代码 ...

  5. JQuery插件之图片轮播插件–slideBox

    来源:http://www.ido321.com/852.html 今天偶然发现了一个比较好用的图片轮播插件—slideBox 先看看效果:http://slidebox.sinaapp.com/ 代 ...

  6. js/jquery中实现图片轮播

    一,jquery方法 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&qu ...

  7. JQuery简单实现图片轮播效果

    很多页面都需要用到界面轮播,但是用原生js相对来说比较复杂,用jQuery实现效果比较迅速,写个简单的demo 1.首先在HTML页面要放置轮播图案位置插入div,这里写了轮播图片数量为3张,所以定义 ...

  8. jquery视频展示 图片轮播

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Jquery实现简单图片轮播

    html代码: <div class="show"> <div class="left"> <div class="sh ...

随机推荐

  1. Arduino 数码管LED驱动 数组法

    上个样例讲到驱动LED数码管,採用一种最直接的方案,对每一个LED进行高低电平的控制,这种长处是每一个LED都是受控可检的,避免了因为短路造成的假象,但对于数字变化来说,写起来就很冗余,因此这次尝试用 ...

  2. WPF中的三维空间(1)

    原文:WPF中的三维空间(1) WPF中可以创建三维几何图形,支持3D对象的应用,支持从3D Max等软件将3D文件obj导入设计中,但是目前还不支持将材质同时导入,这样需要在WPF中对3D对象重新设 ...

  3. win8/win10/win2012r2 存储池 冗余分析

    StorageSpace:a. Simple,相当于RAID0,无冗余,不考虑b. Two-way Mirror,双重镜像,至少2块盘,性能单盘,可以坏一块盘c. Three-way Mirror,三 ...

  4. 【LeetCode】Triangle 解决报告

    [称号] Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjac ...

  5. Android自带样式

    Android系统自带样式: android:theme="@android:style/Theme.Dialog" 将一个Activity显示为对话框模式 android:the ...

  6. 关于WCF的引用,添加服务和添加web服务的区别

    原文:关于WCF的引用,添加服务和添加web服务的区别 本章内容主要是根据我做的实验来阐述这2种添加服务针对WCF的不同之处,我们按照示例一步一步来看. 如下是工程的结构: 该WCF服务是通过控制台程 ...

  7. C# 开机自动启动程序

    原文:C# 开机自动启动程序 新建一个winform拖一个checkbox进来.. 然后设置它的changed事件. 已经测试过,可以直接复制使用. private void checkBox1_Ch ...

  8. [Ext JS 4] 实战Chart 协调控制(单一的坐标,两个坐标)

    前言

  9. python在windows通过安装模块错误

    我的环境是win7+vs2013+python3.2,他们是32地点 windows通过安装模块错误 1)Unable to find vcvarsall.bat : 打开"<pyth ...

  10. LINQ之路(3):LINQ扩展

    本篇文章将从三个方面来进行LINQ扩展的阐述:扩展查询操作符.自定义查询操作符和简单模拟LINQ to SQL. 1.扩展查询操作符 在实际的使用过程中,Enumerable或Queryable中的扩 ...