onmouseover avec effet dans une autre frame [résolu] - HTML/CSS - Programmation
Marsh Posté le 07-06-2011 à 16:16:22
typiac92 a écrit : |
quelle horreur
pour ton prob, tu dois créer une fonction javascript. Soit avec de l'ajax qui va chercher dynamiquement le html sur ton serveur et qui l'affiche avec le dom (si les frames sont bien dans le dom... vu que c'est plus censé être utilisé), le plus propre. Soit en chargeant toutes les galeries dans chaque page genre dans un tableau js et en modifiant la source de la frame , toujours avec le dom, la méthode la plus sale.
Marsh Posté le 07-06-2011 à 18:57:24
Ah, désolé, je ne savais pas que c'était si horrible que ça!!!
Alors ok pour la première solution mais peux-tu me préciser comment procéder parceque je ne vois pas du tout là...
Marsh Posté le 07-06-2011 à 20:34:33
pour la modif graphique d'un td au passage de la souris (ou d'aurtres éléments d'ailleurs) on utilise ça :
dans la feuille de style tu fais un
Code :
|
et dans le code html tu utilises ton template comme ça :
Code :
|
ton site est en dynamique (php) ou fixe (html) ?
tu t'y connais en javascript ?
Marsh Posté le 08-06-2011 à 18:19:48
Ah, c'est super!!! ça marche nikel avec le css et c'est plus propre!
Mon site est dynamique et le javascript et moi, on commence à fleurter on va dire!!!
J'ai un peu modifié le code et j'utilise ahah:
<td width="100%" border="0" class="galerie"><a href="#" onclick="javascript:ahah('page.php','cadrecible');"><img src="image1.jpg" width="50" height="50" /></a></td>
Du coup, j'ai bien la surbrillance au passage de la souris avec ton code css, j'ai bien ma page.php qui se charge dans mon cadre cible et il ne me manque plus qu'à avoir une page2.php qui se charge au passage de la souris au dessus de ma cellule...
Marsh Posté le 09-06-2011 à 09:23:27
Tu n'as pas besoin du onclick="javascript:...". onclick, c'est forcément du javascript.
Marsh Posté le 09-06-2011 à 09:43:31
la soluce que je vois la plus simple , c'est de la faire en ajax, ça devrait te faire une 30 aine de ligne de js.
Tu peux te baser sur cet exemple :
http://www.xul.fr/xml-ajax.html
puis tu mets à jour ta frame de gallerie avec innerhtml qui modifie le contenu d'une balise
http://www.journaldunet.com/develo [...] lien.shtml
plutot que des frames tu devrais utiliser des divs.
Marsh Posté le 09-06-2011 à 16:03:26
Super, je vais aller tester ça tout de suite!
Pour les div, j'ai effectivement opté pour ça depuis et c'est bien plus simple!
Marsh Posté le 09-06-2011 à 17:37:24
Bon, ça ne marche pas pour le moment. Je te poste le code:
J'ai un index .php qui comprend juste mes div:
div1= menu
div2= contenu
div3= legende
La div 1 contient juste une include avec mon menu.php.
Dans le menu.php, j'ai donc intégré le script d'appel et le script d'affichage entre les balises HEAD, qui doit renvoyer ma page vers la div3:
SCRIPT D'APPEL:
Code :
|
SCRIPT D'AFFICHAGE:
Code :
|
Voilà, est ce que le problème vient du fait que je charge et j'affiche à partir du menu.php qui n'est pas la page contenant les div?
Marsh Posté le 09-06-2011 à 18:30:31
non ça vient pas de là, les includes ne génèrent qu'un fichier chez le client qui voit la concatenation des scripts. (autre conseil, utilise des require_once au lien des include). Pour ton probleme tu utilises mal les fonctions javascript.
je sais pas comment tu appelles tes galeries mais supposons que tu as un fichier galerie.php qui prend une variable de type POST comme le numero de la gallerie à afficher : n
tu vas avoir au passage de la souris sur l'élément du menu un truc du genre onmouseover = updateGalerie(n)
maintenant tu fais un fichier galerie.js (un seul suffit pas la peine d'en faire un pour l'affichage et un pour l'appel) qui contient ces fonctions :
Code :
|
Dans le fichier galerie.php tu interceptes le numéro de la galerie à créer avec
Code :
|
et qui renvoie par exemple une table avec tes images en ligne.
Marsh Posté le 09-06-2011 à 18:51:28
Ok, merci du conseil. Je viens de changer tous mes <?php include('page.php');?> par des <?php require_once('page.php');?>
Je vais de ce pas étudier ton exemple!
Marsh Posté le 09-06-2011 à 20:08:44
Bon, je bataille ferme et je te remets mes code pendant que je continue de bosser:
mon INDEX:
Code :
|
Mon MENU:
Code :
|
je rajoute aussi ton fichier galerie.js modifié au cas où j'aurai fait une bêtise:
Code :
|
Marsh Posté le 09-06-2011 à 20:22:05
D'ailleurs, après t'avoir relu et en re-relu, je me dis que je me suis peut-être mal fait comprendre:
Je voudrai un effet onmouseover qui ouvre une legende.php dans la div "legende" lorsque l'on survole la vignette au sein du menu.php dans la div "menu" qui est dotée d'un onclick qui charge la galerie correspondante dans la div "contenu".
Je vais faire un shémas...
Marsh Posté le 09-06-2011 à 21:22:17
ué c bien ce que j'avais compris.
sur onmouseover, il faut appeler la fonction updateGalerie de mon script
Marsh Posté le 10-06-2011 à 01:11:52
Ecoutes, je viens de retourner le problème dans tous les sens et je n'arrive pas à avancer...
J'ai étudié les tutos post et get avec des formulaires notamment. Je les reproduis, ça fonctionne mais c'est avec une seule et même pas php.
Dans mon cas, avec la fonction onmouseover, ça ne marche pas.
Peux-tu me dire ou et comment je dois placer la fonction updategalerie?
en plaçant le code <?php echo $_GET['legende1.php']; ?> dans le onmouseover comme ceci?:
Code :
|
Marsh Posté le 10-06-2011 à 05:36:30
Ah, ça y est, j'ai réussi!!! En fait, j'ai fait au plus simple, j'ai réutilisé mon script haha pour le onmousover. Je n'arrivais pas à l'utiliser en plus de la fonction onclick parce que j'avais ce fameux javascript: en trop!
Un très grand merci à toi en tout cas, tu m'as beaucoup aidé!
Marsh Posté le 07-06-2011 à 14:50:32
Bonjour,
Petit message d'abord pour dire, que cela fait des mois, voir des années que je viens ici et que je trouve toujours une solution à mes questions, ce qui fait que je ne me suis jamais inscrit!!! Un grand bravo à vous donc pour ce forum vraiment complet qui aide beaucoup les jeunes professionnels que nous sommes!
Voici mon problème:
je suis en train de créer un site qui comprend 3 frames: 1 menu composé d'un tableau avec des images, 1 frame principale avec le contenu (des galleries) et 1 frame qui constitue une sorte de légende (aperçu de galerie).
J'arrive a mettre un effet surbrillance via la fonction onmouseover lorsque l'on survole une cellule de mon tableau. J'arrive également à envoyer la gallerie dans ma frame principale lorsque l'on clique sur la cellule. Mais ce que je n'arrive pas à faire, c'est qu'en survolant la cellule de mon tableau de menu, en plus de l'effet de surbrillance, on ait l'apperçu de galerie qui s'affiche dans la frame de légendes!
Voici mon index:
<!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>Document sans nom</title>
<script type="text/javascript" src="http://script.aculo.us/prototype.js"></script>
<script type="text/javascript" src="http://script.aculo.us/scriptaculous.js"></script>
<link rel="stylesheet" type="text/css" href="style.css"
/>
</head>
<FRAMESET COLS="20%,
80%", frameborder="0">
<FRAME SRC="menu.html" NAME="gauche">
<FRAMESET ROWS="80%, 20%", frameborder="0">
<FRAME SRC="droit.html" NAME="droite">
<FRAME SRC="bas.html" NAME="base">
</FRAMESET><noframes></noframes>
</html>
et voici mon menu:
<!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>Document sans nom</title>
<script type="text/javascript" src="http://script.aculo.us/prototype.js"></script>
<script type="text/javascript" src="http://script.aculo.us/scriptaculous.js"></script>
<link rel="stylesheet" type="text/css" href="style.css"
/>
</head>
<body>
<table border="0" align="left" cellpadding="5" cellspacing="5">
<tr>
<td align="center"><img src="logo.jpg" width="200" height="55" /></td>
</tr>
<tr>
<td align="center"><div id="menu">
<li><a href="#" title="Mode" onclick="new Effect.toggle('sousMenu1','blind'); Effect.Fold('sousMenu2'); Effect.Fold('sousMenu3'); return false;" >menu1</a>
<ul id="sousMenu1" style="display: none" class="sousMenu">
<table border="0" cellspacing="0" cellpadding="5">
<tr>
<td bgcolor="#FFFFFF" width="100%" border="0" onmouseover="this.style.background='#e2e2e2'" onmouseout="this.style.background='#FFFFFF'"><A HREF="page1.html" TARGET="droite" >
<img src="image1.jpg" width="50" height="50" /></A></td>
Le but est donc qu'en plus de l'effet onmouseover="this.style.background='#e2e2e2'", je puisse ajouter un effet onmouseover qui afficherai une page html dans la frame "base"
Message édité par typiac92 le 10-06-2011 à 15:05:15