Bonsoir à toutes et à tous,

j'ai l'habitude de faire des fenêtres du genre POPUP ou encore IFRAME mais je trouve qu'elles ne sont pas très esthétiques.

Pouvez-vous m'indiquer comment faire une fenêtre POPUP stylisée qui prend la dimension de l'image exacte en redimensionnant la fenêtre et que cette fenêtre possède des boutons se présentant sous la forme de dessins graphiques.

Je ne cherche pas à récupérer un existant mais bien à développer "MA SOLUTION" !

Si vous pouviez m'aiguiller à ce sujet ?

Merci. A bientôt.
Artemus24.
Modérateur
Bonjour,

Pourtant, Fancybox est très esthétique. Il s'adapte au contenu et tu peux même le personnaliser.

C'est un défi que tu veux te lancer?
Bonsoir à toutes et à tous,

Tony Monast a écrit :
Bonjour,

Pourtant, Fancybox est très esthétique. Il s'adapte au contenu et tu peux même le personnaliser.

C'est un défi que tu veux te lancer?


Oui, c'est bien un défi que je me lance !

Mais je crois que tu m'as pas bien compris.

Je ne connais que le JavaScript comme langage et je suis encore débutant ! Je connais un peu les IFRAME et les popup du genre window.open("ma_page_perso.html", "PERSO", option).

Mais sortie de là, je ne sais pas faire une fenêtre ouvrante, affichant par exemple une belle image avec un cadran de navigation genre flèche avant, flèche arrière, un commentaire, un bouton de sortie ... se dimensionnant à la taille de l'image et le tout esthétique, c'est à dire y placer du graphisme (par exemple les boutons, les bordures ...).

Si j'avais un début de piste cela me permettrait de faire de la recherche sur le net et de commencer le développement.

Pouvez-vous m'expliquer comment on procède pour créer une fenêtre de ce genre ?

@+
Modérateur
Le lien que je t'ai donné est un plugin pour la librairie Javascript JQuery. Fancybox fait exactement ce que tu as envie de créer. Tu peux jeter un oeil à leurs démos.

Comme c'est du javascript, autant le plugin Fancybox que JQuery, si tu veux apprendre comment faire, le mieux est d'étudier le code source.

Si tu veux une piste pour faire tes recherches, le terme généralement utilisé pour ce type de fenêtre est "lightbox".
Salutation Artemus24

Personnellement je n'irai pas à l'encontre des suggestions de Tony Monast. En fait ce que tu demande ressemble étrangement à du « very old javascript », mais bon ça t'appartiens.

Je te donne ici un script vraiment basic qui ouvre un popup stylisé via CSS à partir de son parent (une fenêtre de lancement). Ce script comprend donc trois fichiers.

1 ) Le fichier de lancement de la popup (lanceurPopup.html) : celui-ci contient une fonction basic javascript nommé popup. C'est à partir de ce fichier que la popup est stylisé via CSS. C'est aussi ce fichier que tu lance au navigateur. La popup est onload sur l'élément BODY. J'ai fait simple, car le contexte d'aide oblige. C'est une base.

2 ) La popup (popup.html) elle même ne contient strictement rien, elle est blanche et vide. elle n'a même pas de !DOCTYPE, quoique cette fenêtre pourrait contenir le !DOCTYPE ou même plus. C'est que le !DOCTYPE est écrit dans la fonction popup du fichier lanceurPopup.html, au cas où celui-ci devait changer. Celui-ci est resizable, de même pour le CSS. Ce sera donc à toi d'écrire un CSS qui s'adaptera à tes besoins de redimensionnement.

3 ) Un fichier CSS nommé popup.css et placer dans un répertoire nommé css. Comme tu peut le voir l'adresse sera donc « href='css/popup.css' » de l'élément link.

Fichier lanceurPopup.html » Remarque ici que le fichier a un !DOCTYPE xHTML, par contre il lance une popup dont le !DOCTYPE est HTML 4.01. De même remarque que la cible CSS fait partie de page.document.write () avec l'élément link.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Je lance une popup</title>
<script type="text/javascript">
 function popup()
 {
    page=open("",'popup','width=470,height=300,toolbar=no,scrollbars=no,resizable=yes');
    page.document.write("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>");
    page.document.write("<html><head><title>popup</title><link rel='stylesheet' type='text/css' href='css/popup.css' /></head>");
    page.document.write("<body><div><h1><b>Popup stylisé à partir du parent avec CSS</b></h1></div></body></html>");
    page.moveTo (250, 250);
 }
</script>
</head>

<body onload="popup ('popup.html', 'page')">
</body>
</html>


Ensuite le fichier popup.html » Tu prépare ce fichier sans !DOCTYPE puisque celui-ci est défini dans la fonction javascript du fichier lanceurPopup.html. En fait ce fichier est toalement vide, et vide de tout. Tout blanc.

Et le fichier CSS : popup.css dans le répertoire css.


body {
 font-size:1.0em;
 font-family:sans-serif;
 color:#333333;
 margin:0;
 padding:0;
 background:#333333;
 width:100%;
}
div {
 height:auto;
 background:#ff0000;
 border-bottom:2px solid #ffffff;
 padding:5px;
}
h1 {
 font-size:1.0em;
 color:#000000;
 text-align:center;
}
b {
 font-weight:bold;
}


Voilà . . . Tu devrais avoir ceci comme résultat

upload/20350-popup.jpg

Cependant je ne tiens pas à quitter le topic sans te mettre en garde envers ce « old script model » que je ne recommande pas. Par contre comme il s'agit de stylisé des petites fenêtres, c'est encore acceptable.

Tu pourras fignoler la fonction avec des paramètres plutôt que sans paramètre.
fonction popup (cible, largeur, hauteur, redimension, etc, etc) { // instructions }

Ne prend pas le vieux popup de l'époque révolue. Prend la suggestion de Tony Monast et tourne toi vers demain. Moi perso je te suggère la Bible JavaScript 7ième édition dont la presque totalité des exercices sont HTML5. Javascript a beaucoup changé, et surtout tu es débutant. Donc commence avec la septième édition de la Bible JavaScript.

En PDF ce volume (anglais) a 2044 pages. Un moyen monstre pédagogique je te le jure.

Essais d'écrire une ou plusieurs fonctions plus évoluées, et de les cibler en externe, plutôt que défini en entête du fichier HTML. N'oubli pas que la fenêtre popup pourra servir à tous les scripts ouvrant une popup et stylisé différemment. La réalité veut que tu n'es qu'une seule fenêtre popup pour tous tes représentations de popup. C'est la qualité de ta fonction popup (paramètrable) qui fera le reste. Une seule fenêtre, et un million de popup's.

Tu peut embarquer tous les éléments HTML. images, textes, objet (flash), formulaire et script tout genre (javascript, JQuery, etc). Bref tout fichier de script pouvant être cibler en externe.

Bonne chance Smiley cligne

..
Modifié par zardoz (05 Jul 2011 - 07:18)
si vous voulez seulement afficher des images il y a peut etre la lightbox. pour la styliser il suffit de modifier des images et un peu de css
Salutation @tous

Mais comme Artemus24 le signale, à sa question, je crois qu'il veut apprendre à programmer, désirant sa solution, plutôt ques des biblio's. C'est un droit incontestable.

Pourtant avec les biblio's, nous apprenons quand même à développer des scripts, et n'empêcheront pas la créativité, la nouveauté.

Les lightbox ont ceci de particulier : ils s'adaptent au contenu du site. Le popup est intégrer et devient un objet du site et non du navigateur.

Le temps des popup (frames des navigateurs) est révolu. Mais pas interdit. Encore utilisé aujourd'hui, disons que les popup's fin 90, auront pris une direction plus discrète, plus intelligente et plus respectueuse.

..
Bonjour à toutes et à tous,

Merci à tous les intervenants pour les commentaires avisés à cette discussion !

Le terme que j'ai utilisé ci-dessus pour désigner une fenêtre ouvrante et stylisée est sûrement mal approprié. Ne sachant pas jusqu'à aujourd'hui comment nommer cela, je remercie "Tony Monast" d'avoir compris que je ne connaissais pas le terme exacte.

Donc le terme est lightbox !

Ne t’inquiète pas "Tony Monast" je vais étudier le code de Fancybox afin de savoir comment l'auteur a procédé. Je ne cherche pas à copier ce que font les autres web designers mais d'une part à faire selon mon gout personnel et d'autre part à répondre à une maitrise de ce que je développe dans les moindres recoins.

Zardox, tu n'as pas très bien compris mon attente. Merci pour ton code mais ça, je savais déjà le faire. Je ne cherche pas à sortir des oubliettes du "très vieux code JavaScript" comme tu le dis, mais de faire quelque chose de souple à l'usage (enfin pour moi) mais surtout un peu plus esthétique que ce que j'ai vu jusqu'à présent.

"Zardoz" a écrit :
Moi perso je te suggère la Bible JavaScript 7ième édition dont la presque totalité des exercices sont HTML5. JavaScript a beaucoup changé, et surtout tu es débutant. Donc commence avec la septième édition de la Bible JavaScript.

En PDF ce volume (anglais) a 2044 pages. Un moyen monstre pédagogique je te le jure.


De quel livre s'agit-il ?

Je suppose qu'il s'agisse du livre de Danny Goodman !

En ce qui concerne les "lightbox", dans certain script j'ai vu quelque chose qui ne ressemble à rien. Avons-nous un code (j'ignore la nature exacte de ce code) qui serait ni plus ni moins la boite à afficher ?

Et le reste du code JavaScript ne ferait que du paramétrage et de la mise en page de cette boite ? Si c'est cela, je crois que je suis mal parti pour faire ma fenêtre surgissante !

Je désire utiliser les feuilles de styles pour la présentation, et le JavaScript pour la mise en page. Du graphisme pour les flèches et les boutons, et un paramétrage pour les fonctionnalités. Mais en aucune façon, faire appel à quelque chose d'extérieur au HTML + CSS + JAVASCRIPT.

Est-ce que je me trompe ou pas ?

@+
Modérateur
Bonjour,

En fait, pour vulgariser, le principe des lightbox est le suivant :

- Le Javascript génère le code HTML pour la lightbox elle-même, ce qui l'entoure (overlay : l'effet sombre mais transparent autour de la lightbox) et son contenu. La lightbox est génèralement un div
- Il y a du code CSS de base pour la mise en forme de la lightbox (couleur, bordure, positionnement de base, taille du contenu, background, etc...)
- Le Javascript peut repositionner la lightbox selon la taille de son contenu, la taille de la fenêtre du navigateur, etc. Le Javascript ajoute ou modifie les propriétés CSS de la lightbox

Bref, pour réduire une lightbox à sa plus simple expression, c'est uniquement un div positionné au centre de la fenêtre par-dessus le reste.

Pour commencer, tu peux apprendre :
- À positionner un div en plein milieu de la fenêtre (Javascript + CSS)
- À faire apparaître et disparaître ce div via Javascript (Javascript + CSS)
- Ajouter du contenu dynamiquement dans ce div (Javascript + HTML/DOM)
- Mettre en forme le div (CSS)

Une fois tout ça fonctionnel, ce sera déjà pas mal.
Modifié par Tony Monast (05 Jul 2011 - 21:43)
Bonsoir à toutes et à tous,

merci Tony Monast pour les explications.

Voici ce que je sais faire en JavaScript :

--> positionner une boite div au centre de la fenêtre même avec le redimensionnement de celle-ci.

--> je sais faire apparaitre et disparaitre la fenêtre soit par les display, les visibility ou encore par opacity.

--> ajouter dynamiquement un nouveau contenu. Dans mon cas, ce sera essentiellement des images !

--> je sais redimensionner la boite en fonction de la taille de l'image.

--> mettre en forme la boite.

Par contre, voici ce que je ne sais pas encore faire !

--> récupérer sur tous les navigateurs les dimensions de l'image.
J'ai trouvé naturalHeight et naturalWidth mais par contre rien pour MSIE 8.0.

--> je ne sais pas comment récupérer la taille de la fenêtre surtout si elle est redimensionnée.
J'ai fait une discussion sur ce sujet mais personne ne m'a répondu.

--> les effets comme le FadeIn et FadeOut. J'ai fait une tentative de fondu mais je ne sais pas pourquoi sur MSIE 8.0 le fondu est très très long.

@+
Modifié par Artemus24 (05 Jul 2011 - 22:35)
Modérateur
Je viens d'y répondre.

Le mieux quand un script ne fonctionne pas dans tel ou tel navigateur, c'est faire une recherche sur Google concernant ce cas précis. C'est plus facile en anglais évidemment, on tombe sur de nombreux scripts. Ça peut aider pour repérer le souci.
salutation @tous

@Artemus24 »

Oui il s'agit bien du livre de Danny Goodman et trois autres coauteurs.

Eh bien oui heureux de savoir que tu te tourne vers les technologies nouvelles. Je te crois apte à poursuivre dans ce sens. Nous comprenons mieux ta question maintenant.

Bonne chance.

..