Come prevenire Sfondo scorrimento durante la visualizzazione Dialogo modale in jQuery

August 13

Come prevenire Sfondo scorrimento durante la visualizzazione Dialogo modale in jQuery


Uno sviluppatore Web può sfruttare la tecnica finestra pop-up modali per presentare i contenuti ai visitatori del suo sito. Queste finestre modali sono una strategia di progettazione Web 2.0 comunemente utilizzati. Tuttavia, quando viene visualizzata una finestra modale su più pagine di contenuti di fondo, l'utente può scorrere la finestra modale fuori dallo schermo facendo scorrere verso il basso. Dal momento che molte finestre modali causano lo sfondo a svanire in parte, l'utente potrebbe potenzialmente scorrere le pagine di testo parzialmente sbiadito. Utilizzando il metodo di jQuery css (), uno sviluppatore Web può nascondere questo troppo pieno e tenere la finestra modale al centro dello schermo.

istruzione

1 Incorporare il jQuery e gli script di finestre modali. Questo esempio utilizza la finestra di conferma modale dal plug-in jQuery UI. La finestra di esempio modale è stata abbinata a tema Cupertino di jQuery UI. Tutto questo codice è disponibile presso API per gli sviluppatori di Google:

<Link href = "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/cupertino/jquery-ui.css" rel = "stylesheet" type = "text / css" />

<Script) .dialog ({

ridimensionabile: false,

altezza: 140,

modal: true,

pulsanti: {

"Eliminare tutti gli elementi": function () {

$ (This) .dialog ( "close");

},

Annulla: function () {

$ (This) .dialog ( "close");

}

}

});

});

& Lt; / script>

3 Scrivere il codice HTML. Il div dialogo-confirm corrisponde al codice dimostrativo utilizzato dalla finestra di conferma modale implementazione jQuery UI:

<Body>

<P> Un sacco di sfondo del testo va qui </ p>

<Div id = titolo di "dialogo-conferma" = "svuotare il cestino?">

&lt;p>&lt;span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;">&lt;/span>These items will be permanently deleted and cannot be recovered. Are you sure?&lt;/p>

</ Div>

</ Body>

4 Modificare il codice jQuery per nascondere il contenuto in eccesso. Quando la finestra viene attivato è necessario utilizzare il metodo di jQuery .css () per cambiare proprietà overflow dell'elemento corpo di nascosto. Questo nasconde tutti i contenuti di fondo in eccesso ogni volta che viene visualizzata la finestra modale. È importante utilizzare il metodo .css () per ripristinare proprietà overflow dell'elemento corpo per scorrere una finestra modale viene chiusa dall'utente. Questo esempio amplia il codice jQuery per nascondere l'overflow sull'attivazione e successivamente ripristinare la barra di scorrimento ogni volta che l'utente fa clic su un pulsante e chiude la finestra:

&lt;script>

$ (Function () {

$ ( "Dialogo-conferma #") .dialog ({

ridimensionabile: false,

altezza: 140,

modal: true,

pulsanti: {

"Eliminare tutti gli elementi": function () {

$ ( 'Body') css ( 'overflow', 'di scorrimento.');

$( this ).dialog( "close" );

},

Annulla: function () {

$ ( 'Body') css ( 'overflow', 'di scorrimento.');

$ (This) .dialog ( "close");

}

}

});

$ ( 'Body') css ( 'overflow', 'nascosto').;

});

& Lt; / script>

Consigli e avvertenze

  • Una volta collocato all'interno dei tag corretti, l'esempio completo di codice di esempio appare come segue:
  • <! DOCTYPE HTML PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  • <Html xmlns = "http://www.w3.org/1999/xhtml">
  • <Head>
  • <Meta http-equiv = "Content-Type" content = "text / html; charset = UTF-8" />
  • <Title> Dialogo modale Esempio </ title>
  • <Link href = "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/cupertino/jquery-ui.css" rel = "stylesheet" type = "text / css" />
  • <Script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"> </ script>
  • <Script src = "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"> </ script>
  • <Script>
  • $ (Function () {
  • $ ( "Dialogo-conferma #") .dialog ({
  • ridimensionabile: false,
  • altezza: 140,
  • modal: true,
  • pulsanti: {
  • "Eliminare tutti gli elementi": function () {
  • $ (This) .dialog ( "close");
  • },
  • Annulla: function () {
  • $ ( 'Body') css ( 'overflow', 'di scorrimento.');
  • $ (This) .dialog ( "close");
  • }
  • }
  • });
  • $ ( 'Body') css ( 'overflow', 'nascosto').;
  • });
  • </ Script>
  • </ Head>
  • <Body>
  • <P> Un sacco di testo qui. </ P>
  • <Div id = titolo di "dialogo-conferma" = "svuotare il cestino?">
  • <P> <span class = "ui ui-icon-icon-alert" style = "float: left; margin: 0 7px 20px 0;"> </ span> Questi elementi saranno eliminati in modo permanente e non possono essere recuperati. Sei sicuro? </ P>
  • </ Div>
  • </ Body>
  • </ Html>
  • Alcune vecchie versioni di browser Internet Explorer possono richiedere l'attributo altezza dell'elemento corpo per essere impostata prima della creazione di un ambiente di overflow. Se la conformità a ritroso con i vecchi browser è importante, si può prendere in considerazione avvolgendo l'intero contenuto del corpo all'interno di un div e utilizzando il metodo .css () per modificare le proprietà di overflow di questo div quando appare il modale.