修改Jquery. fancybox-1.3.4.js文件,重写_draw函数

Modifying the file jquery.fancybox-1.3.4.js to rewrite _draw function, Jquery

本文关键字:重写 draw 函数 文件 js Jquery fancybox-1 修改      更新时间:2023-09-26

我正在做一个基于fanybox的画廊-实际上我已经修改了字段来实现我需要的,我已经做到了,我发现的最后一个问题是在这部分代码:

} else {
        fx.prop = 0;
        $(fx).animate({prop: 1}, {
            duration : currentOpts.changeSpeed,
            step : _draw,
            complete : finish_resizing
        });

绘制函数在这里,所以你可以看到:

_draw = function(pos) {
            var dim = {
                width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10),
                height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10),
                top : parseInt(final_pos.top, 10),
                left : parseInt(final_pos.width, 10)
            };
            if (typeof final_pos.opacity !== 'undefined') {
                dim.opacity = pos < 0.8 ? 0.8 : pos;
            }
            wrap.css(dim);
            content.css({
                'width' : limit.width - currentOpts.padding * 2,
                'height' : limit.height - (titleHeight * pos) - currentOpts.padding * 2
            });
        },

我的问题是如何修改_draw函数,或者如何为NEXTPREV设置动画函数。同时禁用不透明度。

我需要一个类似于"可滚动"的功能。在fanybox的主图像上(类似于http://jquerytools.org/demos/scrollable/)

所以我就是没法把这件事做完。

有没有其他的方法从花哨的盒子选项?因为我找不到他们。

无论如何,这是原始文件-
http://demo-store.prestashop.com/js/jquery/jquery.fancybox-1.3.4.js

这些是我对line 663所做的更改:

_draw = function(pos) {
            var dim = {
                width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10),
                height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10),
                top : parseInt(final_pos.top, 10),
                left : parseInt(final_pos.width, 10)
            };
            if (typeof final_pos.opacity !== 'undefined') {
                dim.opacity = pos < 0.8 ? 0.8 : pos;
            }

还有这个(但我不认为这影响它):

$('body').append(
        tmp = $('<div id="fancybox-tmp"></div>'),
        loading = $('<div id="fancybox-loading"><div></div></div>'),
        overlay = $('<div id="fancybox-overlay"></div>'),
        limit = $('<div id="limit"></div>')             
);
wraplimit = $('<div id="wraplimit"></div>').append( limit ).appendTo('body');           
thebox = $('<div id="thebox"></div>').append('<div id="comrigtt"></div>').appendTo( overlay )    
wrap = $('<div id="fancybox-wrap"></div>').append().appendTo( limit );
outer = $('<div id="fancybox-outer"></div>')
.append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>')
.appendTo( wrap );

这听起来像你想添加自定义动画的下一个和上一个不同于主动画?您是否检查了http://fancybox.net/api的文档并使用了next和prev命令…

如果你想要的是你在小提琴上发布的效果,那么我建议你使用以下令人讨厌的hack,(或者放下fanybox,然后从盒子里抓一个支持这种效果的)。

1)在触发器上启用fancybox2)使用jQuery或其他在div中创建缩略图,然后将该div附加到已创建的fancybox元素的底部(在body的底部)3)连接您创建的缩略图,以使用现有的fanybox API用于next/prev/specific等。4)避免触及js本身