zoukankan      html  css  js  c++  java
  • JQuery插件开发初探——图片轮播

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

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

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

    之前尝试了在div中内嵌img标签的方式,但是左右两侧的翻页按钮不容易摆放,于是采用了3个div的方式,最外面一个大的div,背景图片为照片图片,其中左右各两个小div,放翻页按钮。

    由于开始的时候需要频繁调样式,因此大div中的代码都是写死的,等到调试成功后,再放到js里去append。

    参数中定义了需要展示的照片列表和div的宽高:

    var defaults = {
                height: '300px',
                 '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',
                 '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',
                 '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' + ';  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' + ';  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);
    每一天都是崭新的
  • 相关阅读:
    UVA 12546 LCM Pair Sum
    两两间的距离都是整数的点集
    Codeforces 11.27
    Codeforces 11.27 B
    UVA 105
    打印自身的程序
    Interval DP
    Tree DP
    参加第五次全国工程建设行业信息化建设高峰论坛 (个人的一点感想)
    基础资料分类及清单版本管理
  • 原文地址:https://www.cnblogs.com/dannywang/p/3372687.html
Copyright © 2011-2022 走看看