Лайтбокс, плавающая кнопка закрытия за пределами iFrame

Эй, я решил переформулировать этот вопрос (вместо создания нового)...

У меня есть Lightbox (Colorbox), который открывает iFrame с базовым содержимым HTML. Собственно, вот картинка: http://demo.squeezedigital.com/barrie-test/lightbox-help.gif

Я бы хотел, чтобы кнопка закрытия находилась там, где находится пустое белое поле.

CSS Lightbox (Colorbox) выглядит следующим образом, ничего из того, что я делаю, не работает. :(

(Файл Colorbox JS можно найти здесь: http://colorpowered.com/colorbox/)

#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative; overflow:hidden; }
#cboxLoadedContent{overflow:hidden;}
#cboxLoadedContent iframe{display:block; width:100%; height:100%; border:0;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}

#cboxOverlay{background:#890000;}

#colorBox{}
    #cboxTopLeft{width:25px; height:25px; background:url(border1.png) 0 0 no-repeat;}
    #cboxTopCenter{height:25px; background:url(border1.png) 0 -50px repeat-x;}
    #cboxTopRight{width:25px; height:25px; background:url(border1.png) -25px 0 no-repeat;}
    #cboxBottomLeft{width:25px; height:25px; background:url(border1.png) 0 -25px no-repeat;}
    #cboxBottomCenter{height:25px; background:url(border1.png) 0 -75px repeat-x;}
    #cboxBottomRight{width:25px; height:25px; background:url(border1.png) -25px -25px no-repeat;}
    #cboxMiddleLeft{width:25px; background:url(border2.png) 0 0 repeat-y;}
    #cboxMiddleRight{width:25px; background:url(border2.png) -25px 0 repeat-y;}
    #cboxContent{background:#ab0a0e;}
        #cboxLoadedContent{margin-bottom:0px;}
        #cboxTitle{position:absolute; bottom:0px; left:0; text-align:center; width:100%; color:#999;}
        #cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999;}
        #cboxSlideshow{position:absolute; bottom:0px; right:42px; color:#444;}
        #cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;}
        #cboxNext{position:absolute; bottom:0px; left:63px; color:#444;}
        #cboxLoadingOverlay{background:url(loading.gif) 5px 5px no-repeat #fff;}
        /* THE CLOSE BUTTON */
        #cboxClose{position:absolute; top: 10px; right:10px; display:block; color:#000; z-index: 20; display: block; padding-top: 8px; padding-right: 8px; background-image: url(close-button.png); width: 83px; height: 25px;}

/* IE FIXES */
.cboxIE #cboxTopLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=internet_explorer/borderTopLeft.png, sizingMethod='scale');}
.cboxIE #cboxTopCenter{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=internet_explorer/borderTopCenter.png, sizingMethod='scale');}
.cboxIE #cboxTopRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=internet_explorer/borderTopRight.png, sizingMethod='scale');}
.cboxIE #cboxBottomLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=internet_explorer/borderBottomLeft.png, sizingMethod='scale');}
.cboxIE #cboxBottomCenter{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=internet_explorer/borderBottomCenter.png, sizingMethod='scale');}
.cboxIE #cboxBottomRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=internet_explorer/borderBottomRight.png, sizingMethod='scale');}
.cboxIE #cboxMiddleLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=internet_explorer/borderMiddleLeft.png, sizingMethod='scale');}
.cboxIE #cboxMiddleRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=internet_explorer/borderMiddleRight.png, sizingMethod='scale');}

person Barrie Reader    schedule 21.05.2010    source источник
comment
хороший лайтбокс - хорошо, что он позволяет вам вырваться из iFrames!   -  person Ryano    schedule 21.05.2010


Ответы (3)


Вставьте кнопку в HTML лайтбокса (проверьте файлы скрипта, она должна быть там).

person Alon    schedule 22.05.2010
comment
я перефразировал этот вопрос - person Barrie Reader; 24.05.2010

вздох, так что я наконец-то заработал.

Оказывается, в файле jQuery.Colorbox.js есть раздел:

$content = $div("Content").append(
            $loaded = $div("LoadedContent").css({width: 0, height: 0}),
            $loadingOverlay = $div("LoadingOverlay"),
            $loadingGraphic = $div("LoadingGraphic"),
            $title = $div("Title"),
            $current = $div("Current"),
            $slideshow = $div("Slideshow"),
            $next = $div("Next"),
            $prev = $div("Previous"),
            $close = $div("Close") //This is the problem
        );

Я просто изменил код на:

$content = $div("Content").append(
                $loaded = $div("LoadedContent").css({width: 0, height: 0}),
                $loadingOverlay = $div("LoadingOverlay"),
                $loadingGraphic = $div("LoadingGraphic"),
                $title = $div("Title"),
                $current = $div("Current"),
                $slideshow = $div("Slideshow"),
                $next = $div("Next"),
                $prev = $div("Previous"),
                $close = $div("") //Removed the Close class on the Div
            );
    $content = $div("body").append( 
                $close = $div("Close") //Append Close button to Body, not Content
            );

В любом случае ура люди.

person Barrie Reader    schedule 24.05.2010
comment
облом, поэтому сам colorbox пришлось взломать :-(, возникла та же проблема, но взломать его не разрешили :-( - person vector; 29.10.2013

Изображение из вопроса больше недоступно. Отвечаю на вопрос в общем:

Если вам нужна кнопка закрытия за пределами области мультимедиа (изображение или видео), просто используйте jquery для события onLoad и «переместите» кнопку закрытия:

$('.videoitem', this).colorbox({ 
    onLoad: function() {
        $('#cboxOverlay').append($('#cboxClose'));
    },
    iframe:true, 
    innerWidth:640, 
    innerHeight:480,
});

Я бы стилизовал кнопку закрытия, чтобы сделать ее более заметной, однако она использует фоновую графику. Поэтому я предлагаю использовать белую тень box-shadow: 1px 1px 12px #FFF;. Или просто пропустите фоновое изображение и покажите текстовую метку:

<style type="text/css">
    #cboxClose {
        text-indent:0; 
        color: #FFF; 
        right: 30px;
        background-image:none;
    }
</style>

Как указано в другом ответе, основной взлом не требуется.

person Avatar    schedule 25.06.2015