Aller à la page... |
[aide] création site web
Suivre Répondre |
|
Partager | Rechercher |
#26461
Invité
|
C'est pas dur, il suffit juste de changer d'image quand tu passes la souris dessus, après faut être bon en graphisme.
[Corrigez moi si je me trompe]. Et voilà : http://sopah.free.fr/sopah_21_onmouse.html http://www.aidejavascript.com/article14.html |
![]() |
|
#26461 |
|
https://forums.jeuxonline.info/showthread.php?t=460528
https://forums.jeuxonline.info/showthread.php?t=459970 https://forums.jeuxonline.info/showthread.php?t=460340 https://forums.jeuxonline.info/showthread.php?t=459590 Ca traine sur la Taverne. Dommage les archives n'ont pas de lien vers les sujets traitant ce genre de chose. |
![]() |
|
|
alors, merci pour vos réponses,
je comprend pas trop mais je vais essayer de faire quelque chose de potable. mais ça à l'air pas du tout évident de faire quelque chose d'aussi jolie ![]() |
![]() |
|
|
tu as 2 types d'images, une par défaut et une quand tu passes dessus,
tu fais un onMouseover( image_en_passant_dessus.jpeg) |
![]() |
|
|
|
![]() |
|
|
Citation :
![]() ![]() Bon, j'me lance dans la rédaction d'un tutoriel là dessus, je vous le poste dès qu'il est près (dans 1h ou 2 minimum) ![]() |
![]() |
|
rah il est pénible ce Masklinn.
![]() |
![]() |
|
|
tout ça pour moi
![]() enfin pour d'autre personnes aussi je sais ![]() merci bien |
![]() |
|
|
Citation :
![]() |
![]() |
|
Rollover sans javascript : http://www.alsacreations.com/articles/imgreactive/
Mais finit quand même ton tutoriel Masklinn ![]() |
![]() |
|
Moine Gourmand |
Voir le profil public |
Trouver plus de messages par Moine Gourmand |
|
Voilà, tutoriel fini, faites gaffe c'est très très long...
Tutoriel: comment créer un menu comme celui de manga-nemesis (images rollover+superposition toussa) Prérequis: 1- Connaissance correcte du HTML/XHTML 2- Connaissance minimale des CSS (ce que c'est, comment ça s'utilise) 3- Aucune connaissance du Javascript n'est nécessaire 4- Un éditeur de texte, Notepad suffit largement, un éditeur un peu plus puissant (avec coloration syntaxique) comme SciTE ou JEdit peut être utile I/ Le HTML. On va commencer par construire une structure de page logique, qui veut dire quelque chose, qui soit lisible Le menu lui même est inscrit dans une en-tête de page (un header), nous allons donc créer une structure de base comportant cette en-tête: Code HTML:
<?xml version="1.0" encoding="UTF-8"?> <!-- On indique qu'on a écrit la page en UTF-8, ceci se règle dans votre éditeur de texte --> <!-- La première ligne devant être l'encodage quand celui-ci est présent (UTF-8 ou ISO-8859-1 habituellement), on met les commentaires en dessous --> <!-- Puis on indique que le document est conforme à la norme xhtml 1.0 du W3C Plus d'informations à ce sujet sur cette page: http://www.w3.org/TR/xhtml1/ --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!-- Enfin, on commence notre document à proprement parler --> <html> <head> <title>Tutoriel de joli menu</title> </head> <body> <div id="header"> </div> </body> </html> On veut maintenant ajouter un menu. Syntaxiquement, un menu peut être considéré comme une liste de liens, nous allons donc créer une liste contenant des liens (vides, mais ça n'a aucune importance) Code HTML:
<div id="header"> <ul> <li><a href="#" title="Page de news">News</a></li> <li><a href="#" title="Nos projets">Projets</a></li> <li><a href="#" title="Notre équipe">La team</a></li> <li><a href="#" title="Visiter le forum">Forum</a></li> <li><a href="#" title="Nous laisser un message">Livre d'or</a></li> <li><a href="#" title="Autres pages intéressantes">Liens</a></li> </ul> </div> <ul></ul> qui permet de délimiter une "liste non ordonnée" <li></li> qui permet de délimiter un élément de liste l'élément title des balises "a", qui permet de donner une "aide" supplémentaire, son contenu apparaît habituellement sous la forme d'un petit popup d'aide (tooltip) dans les navigateurs graphiques. Si vous ne voulez pas le faire vous mêmes, voici le résultat D'aucuns diront que c'est moche... peut être, mais au moins ça fonctionne et c'est clair Pièce jointe 346405 II/ Papy, elle est moche ta photo Ta gueule jeune con Pièce jointe 346405 Bon, nous allons maintenant nous atteler à la tâche difficile de rendre ce menu joli. Pour cela, nous allons utiliser les CSS (Cascading Style Sheed, Feuilles de Style en Cascade). Créons donc un fichier "style.css" dans le répertoire de notre fichier HTML, puis lions les deux en ajoutant Code HTML:
<link rel="stylesheet" type="text/css" href="style.css" title="Style manga-nemesis" />
Nous allons ensuite nous munir de nos images. C'est relativement tendu dans la mesure ou les images de départ ont été ignoblement charcutées par de vils barbares, mais j'ai quand même réussi à reconstituer à peu près le bouzin. On obtient ceci, qui en JPEG qualité 60, nous donne 83ko (trop, beaucoup trop, mais bon le matériel de départ est ainsi, et même légèrement plus lourd avec 90ko en 23 fichiers). Et vous pouvez trouver les boutons "survolés" ici, avec un total de 22ko (JPEG qualité 80, j'ai pas trop optimisé et la q60 était trop faible à cause de la complexité & des couleurs). Les images survolées font toutes 92px de haut (avec respectivement 139, 60, 83, 88, 108 et 108 pixels de large). Par rapport à l'image de font d'écran, le menu commence au point (133, 247). Dans la mesure où il n'y a pas deux éléments de liste identiques, nous devons les identifier de manière précise (ne serait-ce que pour associer à chacun une image 'de survol'), nous allons donc utiliser les "id"s, qui permettent d'identifier un élément unique (un ID ne doit jamais se trouver deux fois dans une page donnée). Notre liste de liens devient alors Code HTML:
<div id="header"> <ul> <li id="news"><a href="#" title="Page de news">News</a></li> <li id="projets"><a href="#" title="Nos projets">Projets</a></li> <li id="team"><a href="#" title="Notre équipe">La team</a></li> <li id="forum"><a href="#" title="Visiter le forum">Forum</a></li> <li id="livre"><a href="#" title="Nous laisser un message">Livre d'or</a></li> <li id="liens"><a href="#" title="Autres pages intéressantes">Liens</a></li> </ul> </div> Réponse: nous allons devoir les manipuler, et manipuler un élément donné permet de manipuler tous ses héritiers (c'est à dire les éléments contenus à l'intérieur), nous allons voir ça dans un instant, c'est l'un des principes d'héritage et ça permet de faire des codes HTML simples. III/ Papy, je veux pas être méchant mais elle est toujours aussi moche ta photo... ![]() Bien, maintenant que nous avons notre fichier HTML et nos images, il nous reste à lier le tout. Si vous l'avez fermé, rouvrez le fichier "style.css" que vous avez créé il y a 2mn. La première chose, c'est de nettoyer le comportement par défaut des navigateurs, et on va en profiter pour mettre notre image de départ en font de l'en-tête Code:
/* On enleve les marges et les remplissages par defaut du document et du corps de texte */ html, body { margin: 0; padding: 0; } /* on utilise #machin pour acceder à l'element d'ID "machin" */ #header { /* On met en place notre fond en le cadrant dans le coin en haut à gauche et sans répétition */ background: url(background.jpg) top left no-repeat; /* Et on en profite pour donner une taille à notre entete */ width: 785px; height: 350px; } Il nous faut maintenant formater notre menu. Pour cela, nous allons commencer par positionner notre liste de manière absolue (c'est à dire qu'on positionne l'élément précisément par rapport à son parent, sans tenir compte des autres éléments existants ou du flux normal de la page). Code:
/* On accede a l'element "ul" descendant de l'element d'id "header" */ #header ul { /* Positionnement absolut */ position: absolute; /* Vous vous souvenez des valeurs de tout a l'heure? */ left: 133px; top: 247px; /* Au passage, on va enlever tout l'affichage par défaut des listes */ margin: 0; padding: 0; list-style: none; } /* Et on nettoie le comportement des elements de liste */ #header ul li { margin: 0; } Tout d'abord, les afficher en tant que bloc pour pouvoir leur donner une taille Code:
#header ul li a { /* Affichage en tant que blocs */ display: block; } Pas de problème, nous allons tricher: nous allons "flotter" tous les éléments vers la gauche, ce qui fait que l'élément suivant viendra se placer gentiment à leur droite. Code:
#header ul li a { /* Affichage en tant que blocs */ display: block; /* Flottons flottons */ float: left; } mais Opera ne supporte pas. Qu'à cela ne tienne, nous allons encore tricher ! Code:
#header ul li { float: left; margin: 0; } /* IE ne comprend pas l'instruction ci-dessous à cause du selecteur ">" */ #header ul>il { float: none; } Code:
#liens a { float: none; } C'est pas terrible, mais on progresse (nb: bug pascompris d'Opera sur cette étape). Nous allons maintenant régler les tailles des boutons du menu: Code:
#header ul li a { /* Affichage en tant que blocs */ display: block; /* Flottons flottons */ float: left; /* La hauteur est commune à tous les boutons ! */ height: 92px; } #liens a { float: none; /* On rentre non la largeur de l'image mais celle du bouton: les boutons se superposent partiellement */ width: 82px; } #livre a { width: 86px; } #forum a { width: 74px; } #team a { width: 62px; } #projets a { width: 45px; } #news a { width: 139px; } Simplement grâce aux CSS ! Nous allons maintenant gérer le survol à la souris. Ce survol se gère grâce à la pseudo classe "hover". On peut théoriquement l'utiliser sur n'importe quel élément (d'après la norme), mais pour des raisons que personne n'a encore été capable de comprendre Microsoft a jugé bon de le restreindre au seul élément "a" dans MSIE, souvenez-vous en sous peine d'avoir des surprises. Code:
/* Mettons en place les images survolees */ /* on appelle "element:hover" pour lui attribuer une regle de survol */ #liens a:hover { background-image: url(hover_6.jpg); } #livre a:hover { background-image: url(hover_5.jpg); } #forum a:hover { background-image: url(hover_4.jpg); } #team a:hover { background-image: url(hover_3.jpg); } #projets a:hover { background-image: url(hover_2.jpg); } #news a:hover { background-image: url(hover_1.jpg); } Nous allons donc placer le fond par rapport au coin supérieur droit des liens: Code:
#header ul li a { /* Affichage en tant que blocs */ display: block; /* Flottons flottons */ float: left; /* La hauteur est commune à tous les boutons ! */ height: 92px; /* Modifions la référence de placement des fonds */ background-position: top right; } En effet, un fond ne peut s'afficher que sous son élément, pas en dehors ... Nous allons donc devoir ruser (attention, ce qui va suivre peut paraître complexe, en fait après quelques temps ça vient naturellement). Tout d'abord, redéfinir les tailles des éléments pour qu'elles correspondent aux tailles des images Code:
#liens a { float: none; width: 108px; } #livre a { width: 108px; } #forum a { width: 88px; } #team a { width: 83px; } #projets a { width: 60px; } #news a { width: 139px; } Nous allons donc les décaler en leur donnant une marge négative à droite à l'image située avant elles (elles vont se placer par dessus l'image précédente) égale à la surface de superposition avec l'image les précédant Code:
#liens a { float: none; width: 108px; } #livre a { margin-right: -26px; width: 108px; } #forum a { margin-right: -22px; width: 88px; } #team a { margin-right: -14px; width: 83px; } #projets a { margin-right: -21px; width: 60px; } #news a { margin-right: -15px; width: 139px; } Comme d'habitude (ça nous change), MSIE lourde son monde en refusant de fonctionner normalement. Résultat, la partie "superposée" refuse de s'afficher chez lui. Vous allez donc être introduit par ce fait dans le monde des "IE Hacks": IE ne se conforme pas à la norme sur un pas mal de points, ce qui ne serait pas gênant si il ne faisait que ne pas gérer les propriétés au lieu de les interpréter "à sa sauce" (vous pouvez voir ici un certain nombre de bugs CSS d'IE). Pour lui faire adopter un rendu correct, on est donc parfois obligé d'utiliser des "hacks", c'est à dire des techniques bizarres, peu compatibles avec la norme CSS, afin de lui refiler à lui uniquement des valeurs à la con permettant un rendu visuellement correct car prenant en compte ses "spécificités". Le hack ici est simple: le problème vient du modèle de boite d'IE, qui considère qu'une boite (un bloc) va jusqu'à l'intérieur de sa marge. Résultat, si une marge est négative IE ne prolonge le bloc que jusqu'à la bordure ramenée à l'intérieure de la marge ! (ce qui est censé constituer "l'extérieur" de la marge et qui a été replié à l'intérieur). Solution: supprimer toute forme de marge au moment du :hover en ajoutant ceci en fin de CSS: Code:
/* La racine d'une page est "html", mais les IEs ajoutent un élément racine inconnu Un navigateur compatible ignorera donc tout simplement ce qui suit, dans la mesure ou le * correspondrait a un element "html" et qu'on ne trouve pas d'element html au sein d'un autre element html.*/ * html #header a:hover { /* Quand on passe la souris sur le lien, on retire les marges de celui-ci. Les autres liens se decalent, mais dans la mesure ou ils ne sont pas affiches "graphiquement" la chose reste "invisible"...*/ /* Oui, c'est crade et j'ai honte, mais bon :/ */ margin-right: 0px; } Notre 7e étape consiste à planquer le texte des liens, que nous traînons depuis la première. Malheureusement, nous ne pouvons le faire sans retoucher légèrement le fichier HTML: le texte de chaque lien va être placé dans une balise <span>. C'est pas fantastique sémantiquement parlant (on a déjà 3 couches autour de notre texte ![]() Le FIR (Fahrner Image Replacement), c'est ce que nous sommes en train d'utiliser pour remplacer du texte avec des images (au niveau des liens). Pour plus d'information sur le remplacement par des images, voir cet article de Stopdesign. Résultat: Code HTML:
<div id="header"> <ul> <li id="news"><a href="#" title="Page de news"><span>News</span></a></li> <li id="projets"><a href="#" title="Nos projets"><span>Projets</span></a></li> <li id="team"><a href="#" title="Notre équipe"><span>La team</span></a></li> <li id="forum"><a href="#" title="Visiter le forum"><span>Forum</span></a></li> <li id="livre"><a href="#" title="Nous laisser un message"><span>Livre d'or</span></a></li> <li id="liens"><a href="#" title="Autres pages intéressantes"><span>Liens</span></a></li> </ul> </div> Code:
/* On reprend tout l'heritage au niveau du header */ #header ul li a span { /* Et on demande au span de ne pas s'afficher */ display: none; } Bon, c'est pas mal, on a un joli menu qui fonctionne dans tous les navigateurs, mais il manque quelque chose ! Le texte qui s'affiche à droite du menu sur la version originelle... Premier problème: où trouver ce texte? Réponse: le lien qu'on vient d'effacer fera très bien l'affaire ![]() Deuxième problème: comment positionner le texte? Réponse: positionnement absolu ! La "boite" d'affichage de texte commence au point (633,306) et fait 152px sur 32px. Ne pas oublier qu'on positionne le <span> par rapport au <ul>, donc une paire de soustractions pour arriver à la valeur de la position de notre bloc: (500, 59) Code:
#header ul a:hover span { /* Affichage en tant que bloc */ display: block; /* positionnement absolut */ position: absolute; /* Position et taille */ left: 500px; top: 59px; width: 152px; height: 32px; Pour le centrage vertical, on va définir la taille de la ligne comme faisant la hauteur de notre bloc, et aligner le texte sur le milieu de celle ci: Code:
/* Centrage horizontal du texte */ text-align: center; /* Redefinition de la taille de la ligne */ line-height: 32px; /* Positionnement du texte par rapport a la ligne */ vertical-align: middle; } Code:
#header ul li a { /* Affichage en tant que blocs */ display: block; /* Flottons flottons */ float: left; /* La hauteur est commune à tous les boutons ! */ height: 92px; /* Modifions la référence de placement des fonds */ background-position: top right; /* et on finit en modifiant l'affichage des liens */ color: #A8B4F3; text-decoration: none; } ![]() (NB: sans compter le CSS, avec uniquement le Javascript dédié et la table HTML le contenant, le menu originel fait presque 11ko) Note 1: on pourrait sûrement optimiser ce machin, et l'améliorer encore en adaptant le design à la source et non l'inverse, mais c'est déjà pas mal, et je serais probablement pas capable de faire mieux de toute façon Note 2: Le positionnement absolu de partout pose de gros problèmes en cas de redimentionnements (ou de résolutions "imprévues"), il est recommandé de faire des designs "fluides" capable de s'adapter à l'espace d'affichage disponible plutôt que de forcer une résolution. Vala vala, si vous avez des questions n'hésitez pas j'essaierais d'y répondre du mieux de mes capacités PS: le tout premier example bugge en distant sous IE (blabla erreur XML toussa), pas en local, et c'est pas très grave vu la complexité de la page ![]() |
![]() |
|
![]()
Merci Masklinn, je vais mettre ce poste dans mes favoris! c'est vraiment très intéressant!
![]() |
![]() |
|
Lewendalid Derini |
Voir le profil public |
Trouver plus de messages par Lewendalid Derini |
|
c'est le genre de chose qui faudrais publier sur un site ou un blog, la ca va retomber dans l'oubli
![]() |
![]() |
|
|
Citation :
![]() Puis j'ai pas de blog, je me lancerais dans le blogging quand j'aurais le courage de commencer à coder mon Plog (un blog en Python, xhtml 1.0 Strict / xhtml 1.1 compliant, compatible MySQL/PostgreSQL/Firebird/Oracle/SQLServer, pouvant fonctionner sans DB, statique partiel et plein d'autres trucs comme ça) (comme j'aurais jamais le courage, j'ouvrirais sûrement jamais de blog) (et ça vaut probablement largement mieux ![]() |
![]() |
Moine Gourmand |
Voir le profil public |
Trouver plus de messages par Moine Gourmand |
|
Avec le prologue IE6 réagit comme IE5.5 donc bon, tant qu'a faire laisser le prologue. (faut juste s'habituer a center un bloc avec un text-align..
![]() |
![]() |
|
|
T'as une liste sous le coude?
|
![]() |
|
Oracle
|
Trés intéressant ce tuto,merci
![]() |
![]() |
|
|
Citation :
Visite un peu, parfois tu verras "IE6 bug" ou "IE has an additional problem" ou des trucs comme ça ![]() PS: pour ceux qui ont besoin d'un peu plus d'aide dans le dev, mes favoris exportés depuis Firefox, il n'y a pas de commentaires (sauf si vous les importez dans vos favoris sous Firefox/Mozilla, et encore) mais ça peut sûrement vous aider ![]() (pour ceux qui ne connaissent pas, je vous conseille "Le blog de sexystandards" et sa devise mythique "lé pages accessibles cé comme les fam nues, y en na pas assé" ![]() |
![]() |
|
Suivre Répondre |
Fil d'ariane
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|