zoukankan      html  css  js  c++  java
  • LightBox plugin使用心得

    毋庸置疑, LightBox plugin很强大。

    本人在开发CRM系统的时候用到了这个插件,这里分享下本人的应用心得。

    一、lightbox2

    官网:http://www.lokeshdhakar.com/projects/lightbox2/

    1、导入:在<head>标签内加如下代码:

    <script type="text/javascript" src="/plugins/lightbox/js/prototype.js"></script>   

    <script type="text/javascript" src="/plugins/lightbox/js/scriptaculous.js?load=effects"></script>   

    <script type="text/javascript" src="/plugins/lightbox/js/lightbox.js"></script>   

    <link rel="stylesheet" href="/plugins/lightbox/css/lightbox.css" type="text/css" media="screen" />

    很明显,这里用的是prototype。

    2、关联

    ①添加 rel="lightbox" 属性应用到任何链接标记

    <a href="images/image-1.jpg" rel="lightbox" title="my caption">image #1</a>

    ②条件关联

    <script type="text/javascript">

      $(function() {

        $('a[@rel*=lightbox]').lightBox();    // Select all links that contains lightbox in the attribute rel

        $('#gallery a').lightBox();     // Select all links in object with gallery ID

        $('a.lightbox').lightBox();     // Select all links with lightbox class

        $('a').lightBox();                   // Select all links in the page

    });

    </script>

    ③群组关联

    <a href="images/image-1.jpg" rel="lightbox[lightgroup]" title="my caption">image #1</a>

    将rel设置为"lightbox[lightgroup]", lightgroup为群组名称,可自定义,这样,所有rel="lightbox[lightgroup]"的链接就成了一个群组,点击其中一个链接就会有上一页、下一页的显示,如果有的话。

    3、显示大小控制

    Lightbox默认会按图片的实际大小来显示,但有时候图片会很大,从而出现滚动条,显得不大友好。我的处理办法是设置一个最大宽度,和一个最大高度。

    思路:如果图片实际宽度大于最大宽度按最大宽度显示,高度等比缩小,

       如果图片实际高度大于最大高度按最大高度显示,宽度等比缩小。

    实现步骤,改造lightbox.js:

    步骤一:

    在LightboxOptions = Object.extend({}, window.LightboxOptions || {});中加两个扩展参数:maxWidth: 800,maxHeight: 800(大小自己定)

    步骤二:

    将changeImage: function (imageNum) {}函数中的imgPreloader.onload = (function () {})改造成:

    imgPreloader.onload = (function () {

                this.lightboxImage.src = this.imageArray[this.activeImage][0];

                var imgWidth = imgPreloader.width;

                var imgHeight = imgPreloader.height;

                //如果图片实际宽度大于最大宽度按最大宽度显示,高度等比缩小

                if (imgWidth > LightboxOptions.maxWidth) {

                    var ratio = LightboxOptions.maxWidth / imgWidth;

                    imgHeight = imgHeight * ratio;

                    imgWidth = LightboxOptions.maxWidth;

                }

                //如果图片实际高度大于最大高度按最大高度显示,宽度等比缩小

                if (imgHeight > LightboxOptions.maxHeight) {

                    var ratio = LightboxOptions.maxHeight / imgHeight;

                    imgWidth = imgWidth * ratio;

                    imgHeight = LightboxOptions.maxHeight;

                }

                this.lightboxImage.width = imgWidth;

                this.lightboxImage.height = imgHeight;

                this.resizeImageContainer(imgWidth, imgHeight);

            }).bind(this);

    步骤三:容易忽略的地方:

    把lightbox.css中的

    #lightbox img{ auto; height: auto;}

    样式去掉

    简单三步对图片实现限制,不至于太难看。优点不用多说了,但缺点也是显而易见的:那就是这个限制写在了JS中,对所有用到了lightbox的地方都起作用,不够灵活。主要是本人对prototype库不熟悉所致。下面就讲讲我熟悉的JQuery版的lightbox。

    二、jquery-lightbox-0.5

    官网:http://leandrovieira.com/projects/jquery/lightbox/

    1、  导入:在<head>标签内加如下代码:

    <script type="text/javascript" src="js/jquery.js"></script>

    <script type="text/javascript" src="js/jquery.lightbox-0.5.js"></script>

    <link rel="stylesheet" type="text/css" href="css/jquery.lightbox-0.5.css" media="screen" />

     

    2、关联方法同lightbox2

    3、扩展:

    参考:http://www.cnblogs.com/intcry/archive/2010/10/15/2014554.html

    jQuery lightBox插件有一些配置,你可以定义调用它。

    在该配置中,您可以定制您的jQuery lightBox插件 。

    <script type="text/javascript">

        $(function() {

            $('#gallery a').lightBox({

                    overlayBgColor:"#fff",//设置显示背景

            fixedNavigation:false,//是否显示下一页跟上一页的标签

            //imageLoading:'images/lightbox-ico-loading.gif',//设置下载图片

            //imageBtnPrev:'images/lightbox-btn-prev.gif',//设置上一页按钮的图片地址

            //imageBtnNext:'images/lightbox-btn-next.gif',//设置下一页按钮的图片地址

            //imageBtnClose:'images/lightbox-btn-close.gif',//设置关闭按钮的图片地址

            //imageBlank:'images/lightbox-blank.gif',//设置空白的图片地址

            containerBorderSize:10,//设置显示图片边框的宽度

            containerResizeSpeed:2000,//设置显示图片的时间

            txtImage:"图片:",//定义介绍的文字

            txtOf:"/",//定义页数中间的字符

            keyToClose:"s",//设置关闭图片的快捷键

            keyToPrev:"a",//设置上一页的快捷键

            keyToNext:"d",//设置下一页的快捷键

            //imageArray:"",

            activeImage:0,//设置动态显示图片,要用到easing插件

            easing:"easeOutElastic",

            overlayOpacity:0.7//设置背景的透明度 

                   maxWidth: 800,            //最大宽度,自定义,将在下面用到

          maxHeight: 800            //最大高度,同上

         });

     });

    4、图片大小显示控制

    第一步:拿JS开刀

    找到_resize_container_image_box函数,改之。

    function _resize_container_image_box(intImageWidth, intImageHeight) {

                var newWidth = intImageWidth;

                var newHeight = intImageHeight;

                if (newWidth > settings.maxWidth) {

                    var ratio = settings.maxWidth / newWidth;

                    newHeight = newHeight * ratio;

                    newWidth = settings.maxWidth;

                }

                if (newHeight > settings.maxHeight) {

                    var ratio = settings.maxHeight / newHeight;

                    newWidth = newWidth * ratio;

                    newHeight = settings.maxHeight;

                }

                intImageWidth = newWidth;

                intImageHeight = newHeight;

                var intCurrentWidth = $('#lightbox-container-image-box').width();

                var intCurrentHeight = $('#lightbox-container-image-box').height();

                var intWidth = (intImageWidth + (settings.containerBorderSize * 2));

                var intHeight = (intImageHeight + (settings.containerBorderSize * 2));

     

                var intDiffW = intCurrentWidth - intWidth;

                var intDiffH = intCurrentHeight - intHeight;

     

                $('#lightbox-container-image-box').animate({ intWidth, height: intHeight }, settings.containerResizeSpeed, function () { _show_image(); });

                if ((intDiffW == 0) && (intDiffH == 0)) {

                    if ($.browser.msie) {

                        ___pause(250);

                    } else {

                        ___pause(100);

                    }

                }

                $('#lightbox-container-image-data-box').css({ intImageWidth + (settings.containerBorderSize * 2) });

                $('#lightbox-image').css({ intImageWidth, height: intImageHeight });

                $('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ height: intImageHeight + (settings.containerBorderSize * 2) });

            };

    第二步,在页面中加限制:

    $(function () {

                $('#gallery a').lightBox({ maxWidth:500,maxHeight:500});//设置最大宽度和最大高度,数值任你定

            });

    或者在JS中加限制:在settings = jQuery.extend({/*预定义*/}, settings

    );在加两参数maxWidth:500,maxHeight:500,这方法的弊端就不多讲了。

     

    以上是我这次用lightbox的心得,欢迎高手指正。

  • 相关阅读:
    领域驱动设计学习笔记(一 事件总线)
    枚举位预算 (适用于权限和拥有多种枚举值)
    Javascript闭包(狗血剧情,通俗易懂)
    Xml序列化和反序列化
    Javascript轮播 支持平滑和渐隐两种效果(可以只有两张图)
    Git使用教程
    MySQL数据库基本用法-聚合-分组
    MySQL数据库基本用法-查询
    MySQL数据库基本用法
    JS中获取文件点之后的后缀字符
  • 原文地址:https://www.cnblogs.com/acafaxy/p/2095408.html
Copyright © 2011-2022 走看看