web-dev-qa-db-ja.com

ファンシーボックスを上に配置する方法

デフォルトでファンシーボックスを上から100pxに配置する方法は、中央揃えです。

そのためのAPI設定はないと思います。誰かが実際のスクリプトでそれを行うのを手伝ってくれる?.

16
Nizam
$.fancybox({
   'width'     : 620,
   'height'    : 490,
   'speedIn'    :600,
   'speedOut'   :200,
   'onComplete': function() {
      $("#fancybox-wrap").css({'top':'20px', 'bottom':'auto'});
   }
});
13
ziasumo

私が働いた解決策は、次のようにラッパーをスタイリングすることでした:

#fancybox-wrap {
  position: absolute;
  top: 100px !important;
}

それが役に立てば幸い!

21
jede

FancyBox 2では、_topRatio : 0_を使用します。これにより、fancyBoxを上部に移動し、jQuery().css()を使用して、必要な場所に配置します。例:

_$("#myfancy").fancybox({
    wrapCSS     : 'fancybox-custom',
    maxWidth    : 500,
    maxHeight   : 360,
    fitToView   : false,
    width       : '85%',
    height      : '95%',
    autoSize    : false,
    openEffect  : 'fade',
    openSpeed   : 'slow',
    closeEffect : 'fade',
    modal       : true,
    closeSpeed  : 'slow',
    topRatio    : 0,
    helpers         : {
        overlay     : {
            css     : {
                'background-color' : '#fff'
            }
        }
    }
}).trigger('click');
jQuery('.fancybox-wrap').css('margin-top', '120px');
_
5
Javier

scrollTopページ。

$.fancybox({
       'width'     : 620,
       'height'    : 490,
       'speedIn'    :600,
       'speedOut'   :200,
       'onComplete': function() {
          $(document).scrollTop(0);
          $("#fancybox-wrap").css({'top':'20px', 'bottom':'auto'});
       }
    });
4
lqthang86

Fancyboxを少し高い位置に配置したい場合は、このパラメーター「topRatio」を使用できます。ドキュメントは http://fancyapps.com/fancybox/#docs で確認できます。

3
user510566

これは機能します。 fancybox cssを読み込んだ後でスタイルを追加するだけです。これはどんな動きにも優先します。

<link rel="stylesheet" type="text/css" href="../css/fancybox/jquery.fancybox-1.3.4.css" media="screen" >
<style type="text/css">div#fancybox-wrap {top:100px !important;}</style>

ソース

http://groups.google.com/group/fancybox/browse_thread/thread/b874901b11414835/111301916450df93?lnk=gst&q=top#111301916450df9

3
pocketasez
$('.fancybox').fancybox({
    topRatio: 0, 
    afterShow: function(){
        $(".fancybox-wrap").css({"top":0, "margin":"100px 0 0"});
    }
});
2

2つの方向からの攻撃ですが、絶対ではなく「固定」の位置を使用すると、スクロールが無効になり、フレームがページから移動するのを防ぎます

内部CSS:

.fancybox-wrap { position:fixed !important; top: 100px !important; };

fancyBox jQuery:

onComplete  : function(){
        $('.fancybox-wrap').css({'position':'fixed', 'top':'100px'});
    }
1
Jonathan Green

上記のコードを少し調整しました。そして、それは私にとってはうまくいきます。

<script type="text/javascript">
    $(document).ready(function() {
         $('a.fancybox').each(function(){
            var fWidth = parseInt($(this).attr('href').match(/width=[0-9]+/i)[0].replace('width=',''));
            var fHeight = parseInt($(this).attr('href').match(/height=[0-9]+/i)[0].replace('height=',''));
            var posTop = parseInt($(this).attr('href').match(/top=[0-9]+/i)[0].replace('top=',''));
            var posLeft = parseInt($(this).attr('href').match(/left=[0-9]+/i)[0].replace('left=',''));
            var marLeft = parseInt($(this).attr('href').match(/marleft=[0-9]+/i)[0].replace('marleft=',''));
            $(this).fancybox({'type':'iframe','transitionIn':'elastic','transitionOut':'elastic','width':fWidth,'height':fHeight,onStart: function () {
        //create a style that will position the fancy box relative to the element that clicked it.
            var leftT=posLeft;
            var topT=posTop;
            var style = document.createElement('style');
            style.type = 'text/css';
            style.innerHTML = '.shekhar{ top: ' + topT + 'px !important; left: ' + leftT + '% !important; margin-left: -' + marLeft + 'px !important;  }';
            document.getElementsByTagName('head')[0].appendChild(style);
            $('#fancybox-wrap').addClass("shekhar");
            }
            });
      }); 
    });
</script>

HTMLはこちら:

<ul>
    <li><a class="fancybox" href="http://iacampaigns.co.in/fiama/WAP/index.html?iframe&width=100&height=100&top=100&left=50&marleft=200">Iframe</a></li>
    <li><a class="fancybox" href="http://iacampaigns.co.in/fiama/WAP/index.html?iframe&width=200&height=200&top=100&left=50&marleft=100">Iframe</a></li>
  </ul>
1
shekhar

V2を使用している場合、以下のヘルパーメソッドがモバイルデバイスでトリックを実行します。

$('.fancybox_success').fancybox({
    afterShow: function () {
        if ($portWidth <= $mobileBreakpoint) {
            $('html,body').animate({ scrollTop: 0 }, 'slow');
        }
    },...
1
Ben Sewards

使用しているfancyboxのバージョンが2.xxxかどうかはわかりませんが、この場合、次のようにデフォルトのマージンを設定できます。

$("#myfancy").fancybox({
margin     : [100, 0, 20, 0],
...

ここで、マージンはラッパーの位置(px)を設定します(配列の最初の数値はTOPです)

1

ために fancyBox 2.0以降、このドキュメントで言及 http://fancyapps.com/fancybox/#docs

margin:ビューポートとfancyBoxの間の最小スペース。配列として設定できます-[上、右、下、左]。コンテンツの寸法がビューポートを超える場合、右と下のマージンは無視されます
整数、配列;デフォルト値:20

例:

$('.fc-event').fancybox({
    autoCenter: true,
    margin: [100, 0, 0, 0], // [top, right, bottom, left]
    type: 'ajax',
1
illusionist

私はfancyboxを自分で使用したことがありませんが、centerOnScrollをfalseに設定し、CSSで#fancybox-wrapを配置する必要があるように見えますが、適切だと思います。

0
joeynelson

これは私にとってはうまくいきます

<script>
    $.fancybox({
       'width'     : 620,
       'height'    : 490,
       'speedIn'    :600,
       'speedOut'   :200,
                'onStart' :function()
                {

                        $("#fancybox-wrap").addClass('my_class');
                },
    });
</script>
    <style>
    .my_class{top:20px !important; }
    </style>
0
sandeep kumar

2つの考えられる問題:

  1. Fancyboxは絶対位置またはZ-indexを取得していません。解決策:絶対位置のラッパーに!importantを追加します。
  2. それらの下のDivも絶対位置または正のZインデックスを持っています。解決策:固定位置またはdivの下に相対的な位置を指定し、負のz-indexを調整または追加します。
0
AaSh1010

Fancyboxライブラリを変更しました

バージョン:1.3.4(11/11/2010)

この作業を行うため:

ファイルjquery.fancybox.jsで行を見つけます:

    $.fancybox.center = function() {

このスコープで見つける:

     wrap
        .stop()
        .animate({
            'top' : parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - content.height() - 40) * 0.5) - currentOpts.padding)),

それを次のように変更します。

    var topFromOptions = parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - content.height() - 40) * 0.5) - currentOpts.padding));
    if (currentOpts.top) {
        topFromOptions = currentOpts.top;
    }
    wrap
        .stop()
        .animate({
            'top' : topFromOptions,

セレクタパスオプションのfancyboxを取り消すとき(たとえば):

top: '100px' 

またはあなたが望むものは何でも:)

$('#fancybox-selector').fancybox({ 
    top: '20px',
    // transitionOut:'elsatic'
});
0
Mr.TK
    //pass in the id of the link that was clicked and set the width and height for the iframe
    $.fn.fancybox_new = function (options) {
        for (i = 0; i < this.length; i++) {
            options._id = $(this[i]).attr("id");
            switch (options._id) {
                case "elementid": //set window size based on id
                    options.width = 375;
                    options.height = 190;
                    break;
            }
            $(this[i]).fancybox(options);
        }
    };

    $("a[rel*=formWin]").fancybox_new({
        onStart: function () {
            //create a style that will position the fancy box relative to the element that clicked it.
            if (this._id != "" && !$(this).hasClass(this._id)) {
                var style = document.createElement('style');
                var pos = $("#" + this._id).position();
                var mRight = parseInt($("#" + this._id).css("margin-right").replace("px")) + parseInt($("#" + this._id).css("padding-right").replace("px")) + parseInt($("#" + this._id).css("margin-left").replace("px")) + parseInt($("#" + this._id).css("padding-left").replace("px"));
                var mTop = parseInt($("#" + this._id).css("margin-top").replace("px", "")) + parseInt($("#" + this._id).css("padding-top").replace("px", "")) + parseInt($("#" + this._id).css("margin-bottom").replace("px", "")) + parseInt($("#" + this._id).css("padding-bottom").replace("px", ""));
                style.type = 'text/css';
                style.innerHTML = '.' + this._id + ' { top: ' + (pos.top + $("#" + this._id).height() + mTop) + 'px !important; right: ' + ($("body").width() - pos.left - $("#" + this._id).width() - mRight).toString() + 'px !important; left:auto !important; }';
                document.getElementsByTagName('head')[0].appendChild(style);
                $('#fancybox-wrap').addClass(this._id);
            }
        }
    });
0
Anthony R