{"id":171,"date":"2012-10-18T18:09:03","date_gmt":"2012-10-18T16:09:03","guid":{"rendered":"http:\/\/geekcommunicant.com\/blog\/?p=171"},"modified":"2019-04-20T17:53:39","modified_gmt":"2019-04-20T15:53:39","slug":"jquery-une-fenetre-modale","status":"publish","type":"post","link":"https:\/\/geekcommunicant.com\/blog\/2012\/10\/18\/jquery-une-fenetre-modale\/","title":{"rendered":"[jQuery] Une fen\u00eatre modale"},"content":{"rendered":"\n<p>Bonjour \u00e0 tous, aujourd&rsquo;hui nous allons voir comment r\u00e9aliser une fen\u00eatre modale en jQuery.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu&rsquo;est-ce que c&rsquo;est ?<\/h2>\n\n\n\n<p>Wikip\u00e9dia donne la d\u00e9finition suivante:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Une fen\u00eatre modale est, dans une interface graphique, une fen\u00eatre qui prend le contr\u00f4le total du clavier et de l&rsquo;\u00e9cran. Elle est en g\u00e9n\u00e9ral associ\u00e9e \u00e0 une question \u00e0 laquelle il est imp\u00e9ratif que l&rsquo;utilisateur r\u00e9ponde avant de poursuivre, ou de modifier quoi que ce soit.<\/p><\/blockquote>\n\n\n\n<p>Comme une d\u00e9monstration vaut mieux qu&rsquo;un long discours, j&rsquo;ai mis en place une <a href=\"https:\/\/geekcommunicant.com\/demos\/modal.html\" target=\"_blank\" rel=\"noopener noreferrer\">page de test<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Principe<\/h2>\n\n\n\n<p>Le principe utilis\u00e9 ici est tr\u00e8s simple:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>on place une div au-dessus de la page, grace \u00e0 un <em>z-index<\/em> \u00e9lev\u00e9. Cette div permet de masquer et de bloquer toute interaction avec le reste du document.<\/li><li>on rajoute au-dessus de cette div une autre div faisant office de \u00abfen\u00eatre\u00bb<\/li><\/ol>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Le code<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">CSS<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: css; title: ; notranslate\" title=\"\">\n\/* Le masque *\/\n#mask {\n\tz-index: 250;\n\tbackground-color: #000000;\n\tposition: fixed;\n\tleft: 0;\n\ttop: 0;\n}\n \n\/* La fen\u00eatre *\/\n#modal {\n\tz-index: 500;\n\tposition: absolute; \/* Important, sinon la fen\u00eatre ne pourra pas \u00eatre centr\u00e9e ! *\/\n\tpadding: 8px;\n\tbackground-color:#ffffff;\n}\n \n\/* Des z-index \u00e9lev\u00e9s permettent \u00e0 nos deux nouvelles div de se positionner au-dessus. *\/\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">jQuery<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n$(&#039;body&#039;).append(&#039;&lt;div id=&quot;mask&quot;&gt;&lt;\/div&gt;&#039;);\n \n\/\/On r\u00e9cup\u00e8re les dimensions de l&#039;\u00e9cran\nvar maskHeight = $(document).height();\nvar maskWidth = $(window).width();\n \n\/\/R\u00e8gle les dimension du masque afin de remplir tout l&#039;\u00e9cran\n$(&#039;#mask&#039;).css({&#039;width&#039;:maskWidth,&#039;height&#039;:maskHeight});\n \n\/\/Effet de transition    \n$(&#039;#mask&#039;).fadeIn(1000);   \n$(&#039;#mask&#039;).fadeTo(&quot;slow&quot;,0.8);\n \n$(&#039;body&#039;).append(&#039;&lt;div id=&quot;modal&quot;&gt;Bonjour, je suis une fen\u00eatre modale. Cliquez sur le masque pour me refermer.&lt;\/div&gt;&#039;);\n \n\/\/R\u00e9cup\u00e8re les dimensions de la fen\u00eatre du navigateur\nvar winWidth = $(window).width();\nvar winHeight = $(window).height();\n \n\/\/R\u00e9cup\u00e8re les dimensions de la fen\u00eatre modale\nvar mWidth = $(&#039;#modal&#039;).width();\nvar mHeight = $(&#039;#modal&#039;).height();\n \n\/\/Positionne la fen\u00eatre modale au milieu de la fen\u00eatre du navigateur\nvar mTop = winHeight\/2 - mHeight\/2;\nvar mLeft = winWidth\/2 - mWidth\/2;\n \n$(&#039;#modal&#039;).css({&#039;top&#039;: mTop, &#039;left&#039;: mLeft});\n \n$(&#039;#mask&#039;).click(function(){\n    $(&#039;#modal&#039;).remove();\n    $(&#039;#mask&#039;).remove();\n});\n<\/pre><\/div>\n\n\n<p>Et voil\u00e0 ! J&rsquo;esp\u00e8re vous avoir \u00e9t\u00e9 encore utile, et vous dit \u00e0 bient\u00f4t pour de nouvelles aventures codesques !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bonjour \u00e0 tous, aujourd&rsquo;hui nous allons voir comment r\u00e9aliser une fen\u00eatre modale en jQuery. Qu&rsquo;est-ce que c&rsquo;est ? Wikip\u00e9dia donne la d\u00e9finition suivante: Une fen\u00eatre modale est, dans une interface graphique, une fen\u00eatre qui prend le contr\u00f4le total du clavier &hellip; <a href=\"https:\/\/geekcommunicant.com\/blog\/2012\/10\/18\/jquery-une-fenetre-modale\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3],"tags":[],"class_list":["post-171","post","type-post","status-publish","format-standard","hentry","category-jquery"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2IoOb-2L","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1096,"url":"https:\/\/geekcommunicant.com\/blog\/2023\/02\/03\/fenetre-modale-javascript-natif\/","url_meta":{"origin":171,"position":0},"title":"Une fen\u00eatre modale en JavaScript natif","author":"geekc","date":"03\/02\/2023","format":false,"excerpt":"Aujourd\u2019hui, nouveau retour sur un de mes anciens tutoriels qui a rencontr\u00e9 un certain succ\u00e8s, mon tutoriel sur comment faire une fen\u00eatre modale avec jQuery. Depuis maintenant \u00e0 peu pr\u00e8s un an, tous les navigateurs majeurs supportent la balise <dialog> qui permet de cr\u00e9er des fen\u00eatres modales (\u00e7a \u00e7a tombe\u2026","rel":"","context":"Dans &quot;JavaScript&quot;","block_context":{"text":"JavaScript","link":"https:\/\/geekcommunicant.com\/blog\/category\/javascript\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":148,"url":"https:\/\/geekcommunicant.com\/blog\/2012\/10\/04\/jquery-une-horloge-en-image\/","url_meta":{"origin":171,"position":1},"title":"[jQuery] Une horloge en image","author":"geekc","date":"04\/10\/2012","format":false,"excerpt":"Aujourd'hui, nous allons voir comment r\u00e9aliser en jQuery une horloge utilisant des images, que vous pouvez voir en action ici. Avant de commencer Pour des raisons de practicit\u00e9, nous allons utiliser les images utilis\u00e9es par le compteur de Gelbooru, que j'ai rassembl\u00e9es dans cette archive. La structure HTML Avant tout,\u2026","rel":"","context":"Dans &quot;jQuery&quot;","block_context":{"text":"jQuery","link":"https:\/\/geekcommunicant.com\/blog\/category\/jquery\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1133,"url":"https:\/\/geekcommunicant.com\/blog\/2023\/03\/10\/gloubi-script-un-systeme-de-tooltip\/","url_meta":{"origin":171,"position":2},"title":"Gloubi script &#8211; un syst\u00e8me de tooltip","author":"geekc","date":"10\/03\/2023","format":false,"excerpt":"J\u2019ai d\u00e9cid\u00e9 cette semaine de me pencher sur le script de tooltip pr\u00e9sent\u00e9 sur le site de gloubiweb. Dans une premi\u00e8re partie je pr\u00e9senterai rapidement le fonctionnement du script actuel, et dans une deuxi\u00e8me, je vous indiquerai comment recr\u00e9er (quasi) \u00e0 l\u2019identique cet ancien script. Pr\u00e9sentation de du code existant\u2026","rel":"","context":"Dans &quot;JavaScript&quot;","block_context":{"text":"JavaScript","link":"https:\/\/geekcommunicant.com\/blog\/category\/javascript\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":162,"url":"https:\/\/geekcommunicant.com\/blog\/2012\/10\/12\/jquery-une-horloge-sous-forme-de-diagramme\/","url_meta":{"origin":171,"position":3},"title":"[jQuery] Une horloge sous forme de diagramme","author":"geekc","date":"12\/10\/2012","format":false,"excerpt":"Avant de m'essayer \u00e0 l'horloge pr\u00e9sent\u00e9e dans l'article pr\u00e9c\u00e9dent, je m'\u00e9tait pos\u00e9 la question de trouver une forme plus originale d'afficher l'heure. Apr\u00e8s quelques recherches et essai, je suis arriv\u00e9 \u00e0 ce r\u00e9sultat. Le but de cet article est de vous expliquer le code que j'ai utilis\u00e9. Structure d'une barre:\u2026","rel":"","context":"Dans &quot;jQuery&quot;","block_context":{"text":"jQuery","link":"https:\/\/geekcommunicant.com\/blog\/category\/jquery\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10,"url":"https:\/\/geekcommunicant.com\/blog\/2012\/09\/06\/un-dancefloor-en-jquery\/","url_meta":{"origin":171,"position":4},"title":"Un dancefloor en jQuery","author":"geekc","date":"06\/09\/2012","format":false,"excerpt":"Aujourd'hui, je vais vous expliquer comment cr\u00e9er en jQuery un effet de dancefloor \u00e0 la Saturday Night Fever (demo). Tout d'abord, de quoi est compos\u00e9 un tel \u00ab plancher de danse \u00bb ? Tout simplement de diff\u00e9rents carr\u00e9s\/cases, le tout contenu dans une surface d\u00e9finie. Ici le dancefloor sera une\u2026","rel":"","context":"Dans &quot;jQuery&quot;","block_context":{"text":"jQuery","link":"https:\/\/geekcommunicant.com\/blog\/category\/jquery\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":25,"url":"https:\/\/geekcommunicant.com\/blog\/2012\/09\/12\/un-compteur-de-caracteres-en-jquery\/","url_meta":{"origin":171,"position":5},"title":"Un compteur de caract\u00e8res en jQuery","author":"geekc","date":"12\/09\/2012","format":false,"excerpt":"Aujourd'hui nous allons voir comment faire un plugin jQuery, qui permet de compter le nombre de caract\u00e8res pouvant encore \u00eatre accept\u00e9 dans des champs de texte. Pour commencer, il faut d\u00e9cider du nombre de variables utiles \u00e0 ce genre de r\u00e9alisation. Une longueur maximale autoris\u00e9e est un minimum. Ensuite, comme\u2026","rel":"","context":"Dans &quot;jQuery&quot;","block_context":{"text":"jQuery","link":"https:\/\/geekcommunicant.com\/blog\/category\/jquery\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/posts\/171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/comments?post=171"}],"version-history":[{"count":0,"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/posts\/171\/revisions"}],"wp:attachment":[{"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/media?parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/categories?post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/tags?post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}