2009-12-11 21 views
5

Ho usato diverse finestre di dialogo jQuery. Per alcuni dialoghi voglio uno sfondo trasparente. Se cambio i CSS nella classe .ui-widget-overlay, verrà applicato a tutte le finestre di dialogo.jQuery UI overlay di dialogo

Come impostare colori di sfondo diversi per finestre di dialogo diverse?

risposta

4

Basta creare uno stile come il seguente e utilizzare l'opzione dialogClass in quelle finestre di dialogo che si desidera avere uno sfondo trasparente. Naturalmente è possibile effettuare più stili e passare quello che vuoi

<style type="text/css" media="screen"> 
    .transparent { background:transparent } 
</style> 

//make dialog with transparent background 
$("#dialog").dialog({dialogClass:'transparent'}); 
//make default dialog 
$("#dialog2").dialog(); 

Controllare sito dimostrativo: http://jsbin.com/ifoja (jquery base, jQuery UI, jQuery UI css + classe trasparente css personalizzato)

0

ho scritto il codice qui sotto ma ancora prendere la sfondo della classe .ui-widget-overlay

$("#dialog_empty").dialog({  
    dialogClass:'transparent',      
    resizable: false, 
    draggable: false, 
    modal: true,     
    height: 0, 
    width: 0, 
    autoOpen: false, 
    overlay: { 
     opacity: 0 
    } 
}); 
$('#dialog_empty').dialog('open'); 
$('#dialog_empty').css('display',''); 
+0

controllo collegamento demo alla fine della mia risposta – jitter

1

Forse, se si imposta la parola chiave importante:!

<style type="text/css" media="screen"> 
    .transparent { background:transparent !important; } 
</style> 
0

Nella finestra di dialogo, è sufficiente impostare modale: false per le finestre di dialogo che si desidera rendere trasparenti.

$("#dialog-modal").dialog({ 
      height: 140, 
      modal: false 
     }); 
3

C'è solo una sovrapposizione per tutti i widget jQuery. Perciò dobbiamo cambiare l'opacità su richiesta:

var overlayOpacityNormal = 0.3, overlayOpacitySpecial = 0; 
$('#idOfDlg').dialog({ 
    modal: true, 
    open: function() 
    { 
     overlayOpacityNormal = $('.ui-widget-overlay').css('opacity'); 
     $('.ui-widget-overlay').css('opacity', overlayOpacitySpecial); 
    }, 
    beforeClose: function() 
    { 
     $('.ui-widget-overlay').css('opacity', overlayOpacityNormal); 
    } 
}); 
0

La mia soluzione è simile a @RonnySherer, ma non sembrano lavorare in cruddy vecchio IE7 con più finestre di dialogo jQuery UI. Quindi, invece di impostare direttamente l'opacità dell'elemento di sovrapposizione, ho semplicemente aggiunto/rimosso una classe CSS che funzionava in IE7 oltre ai browser moderni. Classe

CSS:

div.modalOverlaySolid 
{ 
    opacity: 1 !important; 
    filter: alpha(opacity=100) !important; 
} 

Javascript:

$(div#divModalDialog).dialog({ 
    modal: true, 
    open: function() { 
     $(this).closest(".ui-dialog").next(".ui-widget-overlay").addClass("modalOverlayPrivate"); 
    }, 
    beforeClose: function() { 
     $(this).closest(".ui-dialog").next(".ui-widget-overlay").removeClass("modalOverlayPrivate"); 
    } 
});