2011-10-15 15 views
5

La finestra di dialogo occupa solo circa il 10% della pagina e volevo rimuovere o trasformare lo sfondo della pagina del dialogo in trasparente in modo che la pagina precedente fosse ancora visibile.Come rimuovere lo sfondo della pagina per Jquery Mobile Dialog?

Questo è il js che chiama la finestra di dialogo:

$.mobile.changePage('#popdiv',{transition:'slide', role:'dialog'}); 

e questo è il div

<div data-role="page" id="popdiv" data-role="page" data-theme="e">   
    <div data-role="content"> 
    <h1>Congrats!</h1> 
    </div> 
</div> 

Ho provato ad utilizzare CSS personalizzato, ma non sembra cambiare nulla

div#popdiv { 
    background: none; // i also used background-image and color and set it to none 
} 

e questo è il modo in cui ho dichiarato il css e js

<custom css> 
<jquery mobile css> 
<jquery min.js> 
<phonegap.js> 
<custom.js> 
<jquerymobile.js> 

Si prega di aiuto. grazie molto.

risposta

0

Basta aggiungere questo alla tua CSS

.ui-mobile [data-role="dialog"], .ui-page { 
display:block !important; 
} 

che funziona per me.

+1

Incasina altri elementi. –

+0

rendere la finestra di dialogo non modale, ma buona idea! – Olivier

22

La risposta accettata suggerisce di utilizzare una finestra di dialogo di terze parti per jQuery Mobile. Se si desidera utilizzare il esistente integrato dialogo, allora quanto segue funzionerà:

Il mio ordine CSS si presenta così:

<link rel="stylesheet" href="themeroller/mobile.min.css" /> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile.structure-1.1.0.min.css" /> 
<link rel="stylesheet" href="mobile-custom.min.css" /> 

mio CSS personalizzato (posta a tema e jQm struttura mobile CSS):

.ui-dialog-background { 
    opacity: 0.5; 
    display: block !important; 
    -webkit-transition: opacity 0.5s ease-in; 
} 

.ui-dialog-background.pop.in { 
    opacity: 1; 
    -webkit-transition: opacity 0.5s ease-in; 
} 

.ui-dialog { 
    min-height: 100% !important; 
    background: transparent !important; 
} 

e JavaScript quando caricamento della pagina:

$(function() { 
    $('div[data-role="dialog"]').live('pagebeforeshow', function(e, ui) { 
    ui.prevPage.addClass("ui-dialog-background "); 
    }); 

    $('div[data-role="dialog"]').live('pagehide', function(e, ui) { 
    $(".ui-dialog-background ").removeClass("ui-dialog-background "); 
    }); 
}); 

Fonte: Tom Clarkson

+1

questo funziona per me dopo aver aggiunto .ui-dialog {z-index: 3000;} a questa soluzione. Grazie –

5

Per jQuery> 1.9, live() viene rimosso. Quindi è necessario modificare il codice JavaScript che Junto ha pubblicato sopra a seguito:

$(document).on('pagebeforeshow', 'div[data-role="dialog"]', function (e, ui) { 
    ui.prevPage.addClass("ui-dialog-background "); 
}); 

$(document).on('pagehide', 'div[data-role="dialog"]', function (e, ui) { 
    $(".ui-dialog-background ").removeClass("ui-dialog-background "); 
}); 
Problemi correlati