JQuery插件开发初探——图片轮播

来源:互联网 发布:海牙国际军事法庭 知乎 编辑:程序博客网 时间:2024/05/16 03:58

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

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

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

 

之前尝试了在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);


原创粉丝点击