soucis avec firefox

soucis avec firefox - HTML/CSS - Programmation

Marsh Posté le 22-03-2006 à 12:54:56    

Bonjour!
 
J'ai plein de problemes d'affichage avec firefox alors que sous IE tout passe bien... En fait, cela concerne un menu utilisant du javascript ainsi que du CSS.
Le plus gros soucis c'est que sous firefox, à chaque fous qu'on clique sur un element du menu, les autres elements descendent d'un cran...
Ci-joint les différents codes, et pour voir de quoi il retourne exactement :  
http://pierrestory.free.fr/  

Code :
  1. function ouverture(num) {
  2. // Booleen reconnaissant le navigateur
  3. isIE = (document.all);
  4. isNN6 = (!isIE) && (document.getElementById);
  5. // Compatibilité : l'objet menu est detecté selon le navigateur
  6. if (isIE) menu =  document.all['menu' + num];
  7. if (isNN6) menu = document.getElementById('menu' + num);
  8. // On ferme tout les menus déjà ouvert
  9. for (i=1;i<=nbTotalMenu;i++) {
  10.  if (i != num) {
  11.   if (isIE) menuDiff =  document.all['menu'+i];
  12.   if (isNN6) menuDiff = document.getElementById('menu'+i);
  13.   if (menuDiff.style.display != "none" ) {
  14.    menuDiff.style.display = "none";
  15.   }
  16.  }
  17. }
  18. // On ouvre ou ferme celui qui vient d'être cliqué
  19. if (menu.style.display == "none" ){
  20.  // Cas ou le tableau est caché
  21.  menu.style.display = "";
  22. } else {
  23.  // On le cache
  24.  menu.style.display = "none";
  25. }
  26. }


 
Ce code c'est pour un autre probléme, sous IE en passant la souris sur les elements du menu il y a une une image qui apparait à côté de l'élément, mais pas sour firefox...

Code :
  1. function change(cellule,couleurFond,img) {
  2. // Cette fonction modifie la couleur de fond et ajoute une image devant le titre  
  3. cellule.style.backgroundColor = couleurFond;
  4. cellule.style.listStyleImage = img;
  5. }


 
Une partie du code HTML, d'ailleurs un autre probléme lol, apparament firefox n'accepte pas les ancres sur les balises <td>, parce que sur IE le lien se fait mais pas sous firefox...

Code :
  1. <table class="sommaire">
  2.                <tr>
  3.        <td class="titre" onclick="ouverture('1')" onmouseover="change(this,'BLUE','url(./imgssite/decoration/sonicgo.gif)')" onmouseout="change(this,'BLACK','none')">
  4.     <ul>
  5.      <li>
  6.      JEUX VIDEOS
  7.      </li>
  8.     </ul>
  9.    </td>
  10.       </tr>
  11.       <tr class="sousmenu" id="menu1" style="display:none">
  12.        <td>
  13.     <table>
  14.      <tr>
  15.       <td>
  16.        <img src="./imgssite/decoration/sonicboring.gif" alt="alors?">
  17.        </img>
  18.       </td>
  19.      </tr>
  20.          <tr>
  21.           <a href="./jeux_videos.html#sega">
  22.        <td class="soustitre">
  23.        SEGA OLD SCHOOL
  24.        </td>
  25.       </a>   
  26.          </tr>
  27.          <tr>   
  28.       <a href="./jeux_videos.html#videos">
  29.            <td class="soustitre">
  30.        VIDEOS
  31.        </td>
  32.       </a>
  33.          </tr>
  34.      <tr>
  35.       <a href="./jeux_videos.html#musiques">
  36.            <td class="soustitre">
  37.        MUSIQUES
  38.        </td>
  39.       </a>  
  40.          </tr>
  41.          </table>
  42.    </td>
  43.       </tr>
  44. </table>


 
Et maintenant le CSS...

Code :
  1. body {
  2. background-color:#000000;
  3. font-family:"comic sans ms",sans-serif;
  4. font-size: 14px;
  5. color:white;
  6. margin: 0;
  7. padding: 0;
  8. }     
  9. #header {
  10. height: 125px;
  11. background-color: #000000;
  12. text-align:center;
  13. }
  14. #conteneur {
  15. position: absolute;
  16. width: 100%;
  17. background-color:#000000;
  18. }
  19. #centre {
  20. background-color:#000000;
  21. margin-left:20%;
  22. margin-top:1.8%;
  23. }
  24. #gauche {
  25. position: absolute;
  26. left:0;
  27. margin-top:1.5%; 
  28. width: 18%;
  29. }
  30. table.sommaire{
  31. width:180px;
  32. }
  33. td.titre {
  34. font-family: "comic sans ms",sans-serif;
  35. font-size: 12px;
  36. color: white;
  37. background-color: black;
  38. border:2px solid #000085;
  39. cursor: pointer; 
  40. height:48px;
  41. }
  42. td.soustitre {
  43. width:150px;
  44. font-family: "comic sans ms",sans-serif;
  45. font-size:11px;
  46. border:2px solid blue;
  47. color: blue;
  48. background-color: silver;
  49. cursor: pointer;
  50. }
  51. tr.sousmenu{
  52. float:left;
  53. position:absolute;
  54. width:150px;
  55. margin-left:95%;
  56. margin-top:-50%;
  57. z-index:1;
  58. }


 
Si quelqu'un pouvait m'aider à comprendre ce qu'il se passe, dsl pour le code, j'ai l'impression que c'est un gros bordel  :sweat:...
Merci pour votre aide.

Reply

Marsh Posté le 22-03-2006 à 12:54:56   

Reply

Marsh Posté le 22-03-2006 à 13:03:49    

La conception de ta page est préhistorique, tu pourrais faire plus simple et plus compatible en retapant un peu ton code.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 22-03-2006 à 13:13:41    

Lol merci, c'est clair comme réponse.

Reply

Marsh Posté le 22-03-2006 à 13:18:00    

Ca t'aiderait toi également hein, tu verrais plus clair dans ton code,et firefox peterait moins son cable. :D
 
Mais fais comme tu veux, c'est pas un problème pour moi :jap:


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 22-03-2006 à 13:59:49    

Je veux bien te croire, mais tu pourrais me donner des conseils au moins...
C'est la page html qui est préhistorique lol?
Je ne dois pas me servir des tableaux?
Merci pour ton aide ;)

Reply

Marsh Posté le 22-03-2006 à 19:14:39    

Les tableaux sont normalement utilisés pour la mise en forme de données tabulaires.
Donc un tableau a entrées avec données pouvant être lu par ciblage.
 
Ici tu t'en sers pour la mise en page, et :
 
-Ca alourdit ton code
-Ca le rends difficilement accessible
-Ca peut créer des problèmes
 
Tu dois pouvoir trouver une méthode pour nettoyer ton code, voici quelques sites à lire :
 
http://openweb.eu.org/articles/problemes_tableaux/
 
Tu as d'autres articles sur la mise en page et le code dans CSS et XHTML.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 23-03-2006 à 11:20:06    

Salut!
 
Suivant tes conseils, je refais le menu sans tableaux.
Est-ce que tu sais pourquoi firefox ne prend que le texte comme lien alors que IE prend tout l'élément même le cadre qui est autour :??:  
 

Code :
  1. <ul class="sommaire">
  2. <a href="./accueil.html">
  3. <li class="sommaire" onmouseover="change(this,'BLUE','url(./imgssite/decoration/sonicgo.gif)')" onmouseout="change(this,'BLACK','none')">ACCUEIL</li>
  4. </a>
  5. </ul>

Reply

Marsh Posté le 23-03-2006 à 11:32:14    

Oui, c'est parce que la bonne syntaxe est <li><a></a></li> :jap:


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 23-03-2006 à 11:36:34    

Donc il n'est pas possible que le lien soit l'élément <li> en entier (avec le cadre)?

Reply

Marsh Posté le 23-03-2006 à 11:51:19    

Si tu veux faire réagir tout le cadre ta méthode fonctionnera de toute manière dès que le pointeur sera dans la zone du cadre.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 23-03-2006 à 11:51:19   

Reply

Marsh Posté le 23-03-2006 à 12:01:41    

Tu veux dire que ce que j'ai écrit :  

Code :
  1. <li class="sommaire" onmouseover="change(this,'BLUE','url(./imgssite/decoration/sonicgo.gif)')" onmouseout="change(this,'BLACK','none')">ACCUEIL</li>


devrait marcher?
Parce que avec firefox ça ne marche pas...
Merci pour ton aide.

Reply

Marsh Posté le 23-03-2006 à 12:08:51    

Oui, mais il faut quand même que tu mettes un lien sur accueil.
 
C'est le passage dans la zone <li> qui déclenche le changement de couleur, mais le clique sur le lien qui dirige l'utilisateur


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 23-03-2006 à 12:13:31    

Code :
  1. <a href="./accueil.html"><li class="sommaire" onmouseover="change(this,'BLUE','url(./imgssite/decoration/sonicgo.gif)')" onmouseout="change(this,'BLACK','none')">ACCUEIL</li></a>


 
Cela ne fonctionne pas avec firefox, avec IE je peux cliquer sur tout l'élément mais avec firefox il faut absolument cliquer sur les caractères...
Là j'ai mis un lien bidon si tu veux voir.
http://pierrestory.free.fr

Reply

Marsh Posté le 24-03-2006 à 13:19:51    

Quelqu'un aurait t'il une idée?

Reply

Marsh Posté le 26-03-2006 à 12:35:35    

Je constate que tu declares ta page xhtml 1.1, mais cette derniere n'est meme pas valide.
La rendre valide serait deja un premier pas (mais qui risque de ne pas corriger les problemes de ton menu).
 
Ensuite concernant ton menu, la syntaxe du premiere element est fausse.
Tu as mis :

Code :
  1. <ul class="sommaire">
  2.  <a href="http://teamathena.free.fr"><li class="sommaire" onmouseover="change(this,'BLUE','url(./imgssite/decoration/sonicgo.gif)')" onmouseout="change(this,'BLACK','none')">ACCUEIL</li></a>
  3.  </ul>


 
Comme te l'a deja dit Shinuza, la bonne syntaxe est :  

Code :
  1. <ul><li><a></a></li></ul>


 
Edit : Tu sais, tu n'es pas oblige de fermer la liste en plein milieu du menu, tu peux tres bien n'utiliser qu'une seule liste pour tout le menu. Donc qu'un seul "ul" avec plein de "li" dedans.
 
Enfin, ton probleme de "lien ne prennant pas toute la place" est facilement resolvable grace aux css.
Le lien ne prends pas toute la place, car "a" est un element inline. Par consequent sa largeur depends du texte.
Si tu veux qu'il prenne toute la place disponible, tu dois le transformer en element block.
Pour cela, un simple "display : block" place au bon endroit devrait suffire pour resoudre ton probleme.


Message édité par cerel le 26-03-2006 à 12:37:01
Reply

Marsh Posté le 29-03-2006 à 12:28:18    

Merci Cerel pour ta réponse :)
 
Si j'ai fermé la liste <ul></ul> dans le menu c'est pour pouvoir séparer d'un espace certaines rubriques.
Sinon même en se servant du css pour mettre l'élément <a> en type block cela ne régle pas mon problème...
 
Dis moi ce que je dois corriger pour rendre la page valide en xhtml...
je mettais servi du validateur w3 quand c'était mon ancien menu, et le résultat était que la page était valide...
 
Merci de ton aide ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed