Se connecter avec
S'enregistrer | Connectez-vous

Problème d'affichage d'image bouton

Dernière réponse : dans Programmation
Partagez

Bonjour à tous,

Je suis entrain de faire mon site moi même, et j'ai voulu faire en sorte que quand on est sur une page, le bouton de cette page reste actif et aussi pour que quand on passe sa sourit sur les bouton il "change d'apparance" (actif/inactif).
Je travail en php et css, et mon site doit être au norme W3C
Donc on m'a aidé à faire ça, mais j'ai quelque bug:
-Sur chrome:
Je vois l'image et tout fonctionne mais j'ai un cadre blanc autour de l'image.


-Sur Firefox:
Je vois l'image mais j'ai plus le cadre par contre je vois la description d'image devant:


Fichier CSS (J'ai mis seulement le code pour 1 bouton, si vous avez besoin plus n’hésite pas)
  1. /*Bouton Accueil*/
  2. /*image normal*/
  3. .Bouton-Accueil1_1{
  4. background : url(../image/Bouton/Bouton-Accueil1_1.png) no-repeat;
  5. width:105px;
  6. height:32px;
  7.  
  8. }
  9. /*image hover*/
  10. .Bouton-Accueil1{
  11. background : url(../image/Bouton/Bouton-Accueil1.png) no-repeat;
  12. width:105px;
  13. height:32px;
  14. }
  15. .Bouton-Accueil1:hover{
  16. background : url(../image/Bouton/Bouton-Accueil1_1.png) no-repeat;
  17.  
  18. }


Fichier PHP Header:
  1. <div id="menu">
  2. <ul>
  3. <li>
  4. <a href="index.php" title="Actualités de l'entreprise">
  5. <?php
  6. //On est sur la page index.php l'image sera button1-1.gif
  7. if($_SERVER['REQUEST_URI']=="/index.php"){
  8. $image = "Bouton-Accueil1_1";
  9. }
  10. //On est autre part, l'image sera button1.gif
  11. else{
  12. $image = "Bouton-Accueil1";
  13. }
  14. //la class Bouton-Accueil1 fait basculer l'état de l'image
  15. //Si on est sur la page index.php l'image button1-1.gif reste Bouton-Accueil1_1
  16. //Si on est autre part, l'image bascule d'un état à l'autre
  17. echo '<img class="'.$image.'" alt="image bouton accueil" />';
  18. ?>
  19. </a>
  20. </li>


Donc dans mes multi tentative pour résoudre ce problème, j'ai essayer de mettre directement le lien de l'image dans mon header, et la firfox n'affiche même plus l'image, je n'ai plus que la description. Pourtant il l'a trouve parce que quand je vais "voir code source" et que je clic sur l'image je la voir apparaitre...
Le code modifié:
  1. <div id="menu">
  2. <a href="index.php" title="Actualités de l'entreprise">
  3. <?php
  4. //On est sur la page index.php l'image sera button1-1.png
  5. if($_SERVER['REQUEST_URI']=="/index.php"){
  6. $image = "Bouton-Accueil1_1";
  7. $images = "<a href="http://sad-corporetion.netii.net/image/Bouton/Bouton-Accueil1.png" rel="nofollow" target="_blank">http://sad-corporetion.netii.net/image/Bouton/Bouton-Ac...</a>";
  8. }
  9. //On est autre part, l'image sera button1.gif
  10. else{
  11. $image = "Bouton-Accueil1";
  12. $images = "<a href="http://sad-corporetion.netii.net/image/Bouton/Bouton-Accueil1.png" rel="nofollow" target="_blank">http://sad-corporetion.netii.net/image/Bouton/Bouton-Ac...</a>";
  13. }
  14. //la class Bouton-Accueil1 fait basculer l'état de l'image
  15. //Si on est sur la page index.php l'image button1-1.gif reste Bouton-Accueil1_1
  16. //Si on est autre part, l'image bascule d'un état à l'autre
  17. echo '<img href="'.$images.'" class="'.$image.'" alt="image bouton accueil" />';
  18. ?>
  19. </a>


Pour ceux à qui sa aiderai de voir le site : http://sad-corporetion.netii.net

Autres pages sur : probleme affichage image bouton

  • Millan a édité ce message
trottos@guest

Rajoute ces lignes à la fin de ton fichier main.css :

a, a:visited, a:active, a:link {
text-decoration: none;
border:none;
outline:none;
}
a:hover {
text-decoration: none;
border:none;
outline:none;
}

jayme88@guest

Salut :) 

Millan a dit :

Je vois l'image et tout fonctionne mais j'ai un cadre blanc autour de l'image

Par defaut, les images ont une bordure. Définis la propriété Border de ces dernières dans le css:
  1. img {
  2. border-style: none;
  3. }


Millan a dit :

Je vois l'image mais j'ai plus le cadre par contre je vois la description d'image devant:

Oui, c'est parce que ton image est vide, elle n'affiche rien.
Ce que tu fais toi, c'est définir le background de la balise <img>, mais tu ne lui donne pas de contenu. Dans ce cas, si l'image n'a pas de contenu (pas exemple un fichier non trouvé), il est normal d'afficher la valeur de alt.
Il est donc normal que seul une partie de l'image ne soit visible. Puisque elle est en fond, la balise (img dans notre cas) ne vas pas s'adapter à sa taille, mais à son contenu (alt). C'est pk ton image n'est visible que dans le cadre du contenu.
Ceci est le fonctionnement correct que j'aurais attendu, contrairement a ce qu'affiche Chrome.
Ce qui peut surprendre, c'est que FF n'affiche pas le cadre. Mais probablement celui ci n'affiche le cadre que si il y a un contenu (une image, autre que alt)

Donc, pour arranger ça, je te suggère:

    Le fond du bouton, tu le met bien en fond. Mais plus besoins de <img>, tu peux très bien le mettre en fond du <li>
    Tu définis la taille de tes boutons en dur, dans le css, pour qu'ils restent tjr à la taille de leur fond quel que soit leur contenu
    En contenu dans <li>, tu peux y mettre un lien contenant que du texte, sans nouvelle image à créer. Sauf si tu veux du texte spécial (police pas standarde), quoi qu'il y aie d'autre moyens pour ça (hors sujet).


  1. li.BoutonMenu{
  2. background : url(../image/Bouton/BoutonMenu.png) no-repeat;
  3. width:105px;
  4. height:32px;
  5. }
  6. li.BoutonMenu:hover{
  7. background : url(../image/Bouton/BoutonMenu_Hover.png) no-repeat;
  8. }
  9. li.BoutonMenu_Selected{
  10. background : url(../image/Bouton/BoutonMenu_Selected.png) no-repeat;
  11. width:105px;
  12. height:32px;
  13. }


  1. <div id="menu">
  2. <ul>
  3. // On défini les valeurs statiques des boutons
  4. $Boutons = [
  5. ["Accueil", "Actualités de l'entreprise", "index.php"]
  6. ["foo", "blablabla", "foo.php"]
  7. ["bar", "patati", "bar.php"]
  8. ]
  9. $path = $_SERVER['REQUEST_URI']
  10.  
  11. // Parcourir les boutons
  12. foreach($Boutons as $Bouton) {
  13. // <li class="xx">
  14. if ($path == "/".$Bouton[2]){
  15. echo "<li class='li.BoutonMenu_Selected'>" }
  16. else {
  17. echo "<li class='li.BoutonMenu'>" }
  18. // <a href="xx" title="yy">zz</a>
  19. echo "<a href='".$Bouton[2]."' title='".$Bouton[1]."'>".$Bouton[0]."</a>"
  20. echo "</li>"
  21. }
  22. </ul>
  23. </div>


Attention, pas testé, et ça fait un moment que j'ai plus fais de php.
Et fauda jouer sur qq règles css en plus

a+

Salut,

Et pourquoi pas sur l'ancre, directement ?

  1. a.bouton { width:105px; height:32px; display:inline-block; background:url(BoutonMenu.png) no-repeat; }
  2. a.bouton:hover { background-image:url(BoutonMenu_Hover.png); }
  3. a.bouton.selected { background-image:url(BoutonMenu_Selected.png); }


  1. <a class='bouton' href='xxxx'>lien</a>
  2. <a class='bouton selected' href='xxxx' >lien sélectionné</a>

  • zeb a édité ce message
Contenus similaires
Posez votre question

Salut à tous et merci pour votre aide, j'aimerais savoir si toute ce que vous me donné est au norme W3C ? Parce que je suis obligé de le faire au norme w3c (dailleur si vous constatez une faute, merci de me préveni) ;) 

jayme88 a dit :
Salut :) 

Millan a dit :

Je vois l'image et tout fonctionne mais j'ai un cadre blanc autour de l'image

Par defaut, les images ont une bordure. Définis la propriété Border de ces dernières dans le css:
  1. img {
  2. border-style: none;
  3. }



J'ai testé et je vois aucun changement...

jayme88 a dit :
Salut :) 

Millan a dit :

Je vois l'image mais j'ai plus le cadre par contre je vois la description d'image devant:

Oui, c'est parce que ton image est vide, elle n'affiche rien.
Ce que tu fais toi, c'est définir le background de la balise <img>, mais tu ne lui donne pas de contenu. Dans ce cas, si l'image n'a pas de contenu (pas exemple un fichier non trouvé), il est normal d'afficher la valeur de alt.
Il est donc normal que seul une partie de l'image ne soit visible. Puisque elle est en fond, la balise (img dans notre cas) ne vas pas s'adapter à sa taille, mais à son contenu (alt). C'est pk ton image n'est visible que dans le cadre du contenu.
Ceci est le fonctionnement correct que j'aurais attendu, contrairement a ce qu'affiche Chrome.
Ce qui peut surprendre, c'est que FF n'affiche pas le cadre. Mais probablement celui ci n'affiche le cadre que si il y a un contenu (une image, autre que alt)

Donc, pour arranger ça, je te suggère:

    Le fond du bouton, tu le met bien en fond. Mais plus besoins de <img>, tu peux très bien le mettre en fond du <li>
    Tu définis la taille de tes boutons en dur, dans le css, pour qu'ils restent tjr à la taille de leur fond quel que soit leur contenu
    En contenu dans <li>, tu peux y mettre un lien contenant que du texte, sans nouvelle image à créer. Sauf si tu veux du texte spécial (police pas standarde), quoi qu'il y aie d'autre moyens pour ça (hors sujet).


  1. li.BoutonMenu{
  2. background : url(../image/Bouton/BoutonMenu.png) no-repeat;
  3. width:105px;
  4. height:32px;
  5. }
  6. li.BoutonMenu:hover{
  7. background : url(../image/Bouton/BoutonMenu_Hover.png) no-repeat;
  8. }
  9. li.BoutonMenu_Selected{
  10. background : url(../image/Bouton/BoutonMenu_Selected.png) no-repeat;
  11. width:105px;
  12. height:32px;
  13. }


  1. <div id="menu">
  2. <ul>
  3. // On défini les valeurs statiques des boutons
  4. $Boutons = [
  5. ["Accueil", "Actualités de l'entreprise", "index.php"]
  6. ["foo", "blablabla", "foo.php"]
  7. ["bar", "patati", "bar.php"]
  8. ]
  9. $path = $_SERVER['REQUEST_URI']
  10.  
  11. // Parcourir les boutons
  12. foreach($Boutons as $Bouton) {
  13. // <li class="xx">
  14. if ($path == "/".$Bouton[2]){
  15. echo "<li class='li.BoutonMenu_Selected'>" }
  16. else {
  17. echo "<li class='li.BoutonMenu'>" }
  18. // <a href="xx" title="yy">zz</a>
  19. echo "<a href='".$Bouton[2]."' title='".$Bouton[1]."'>".$Bouton[0]."</a>"
  20. echo "</li>"
  21. }
  22. </ul>
  23. </div>


Attention, pas testé, et ça fait un moment que j'ai plus fais de php.
Et fauda jouer sur qq règles css en plus

a+


ça j'ai pas encore essayer parce que sa m'érite un peu plus de temps et aujourd'hui j'ai pas le temps, mais je voulais d'abord m'assuré que c'était bien au norme.

zeb a dit :
Salut,

Et pourquoi pas sur l'ancre, directement ?

  1. a.bouton { width:105px; height:32px; display:inline-block; background:url(BoutonMenu.png) no-repeat; }
  2. a.bouton:hover { background-image:url(BoutonMenu_Hover.png); }
  3. a.bouton.selected { background-image:url(BoutonMenu_Selected.png); }


  1. <a class='bouton' href='xxxx'>lien</a>
  2. <a class='bouton selected' href='xxxx' >lien sélectionné</a>



J'ai pas encore test parce que je voulais une confirmation de ta par:

Je doit mettre ça
  1. <a class='bouton' href='xxxx'>lien</a>
  2. <a class='bouton selected' href='xxxx' >lien sélectionné</a>


à la place de
  1. <a href="index.php" title="Actualités de l'entreprise">
  2. <?php
  3. //On est sur la page index.php l'image sera button1-1.png
  4. if($_SERVER['REQUEST_URI']=="/index.php"){
  5. $image = "Bouton-Accueil1_1";
  6. }
  7. //On est autre part, l'image sera button1.gif
  8. else{
  9. $image = "Bouton-Accueil1";
  10. }
  11. //la class Bouton-Accueil1 fait basculer l'état de l'image
  12. //Si on est sur la page index.php l'image button1-1.gif reste Bouton-Accueil1_1
  13. //Si on est autre part, l'image bascule d'un état à l'autre
  14. echo '<img href="'.$image.'" class="'.$image.'" alt="image bouton accueil" />';
  15. ?>
  16. </a>


?
jayme88@guest

Oui bien sûr, c'est au norme, a moins qu'il y aie des fautes de syntaxe.. mais dans tous les cas, il n'y aurais que des changement minime. Va sur le site du w3c pour tester tes page, ils ont un outil qui certifie le code aux normes.

Citation :
J'ai testé et je vois aucun changement...

Heu.. ça m'étonne.. j'te ferai un code fonctionnel a l'occase

Citation :
J'ai pas encore test parce que je voulais une confirmation de ta par:
Je doit mettre ça
...
à la place de
...

Non, il t'explique juste que tu n'as pas besoins d'utiliser de liste.
A la place de
<div>
<ul>
<li>
<a>1</a>
</li>
<li>
<a>2</a>
</li>
<li>
<a>3</a>
</li>
</ul>
</div>
tu peux faire
<div>
<a>1</a>
<a>2</a>
<a>3</a>
</div>

Tu appliquera donc le fond du bouton à l'ancre (<a>), sans utiliser du <ul><li>

Eh Millan, tu m'as l'air d'être un maniaque du code bien écrit.


Bon. J'ai le même travers. Mais je me soigne. Je teste toujours mon code sur plusieurs navigateurs. Et sur Firefox en particulier, j'ai ajouté un module complémentaire : HTML Validator de Marc Gueury.

Ainsi, je peux vérifier avec un simple [Ctrl-U], la validité de mon code.
Je t'invite à en faire autant.

jayme88 a dit :
Oui bien sûr, c'est au norme, a moins qu'il y aie des fautes de syntaxe.. mais dans tous les cas, il n'y aurais que des changement minime. Va sur le site du w3c pour tester tes page, ils ont un outil qui certifie le code aux normes.

Citation :
J'ai testé et je vois aucun changement...

Heu.. ça m'étonne.. j'te ferai un code fonctionnel a l'occase

Citation :
J'ai pas encore test parce que je voulais une confirmation de ta par:
Je doit mettre ça
...
à la place de
...

Non, il t'explique juste que tu n'as pas besoins d'utiliser de liste.
A la place de
<div>
<ul>
<li>
<a>1</a>
</li>
<li>
<a>2</a>
</li>
<li>
<a>3</a>
</li>
</ul>
</div>
tu peux faire
<div>
<a>1</a>
<a>2</a>
<a>3</a>
</div>

Tu appliquera donc le fond du bouton à l'ancre (<a>), sans utiliser du <ul><li>


ok merci, pour les bordure je comprend pas trop pourquoi sa fonctionne pas...

zeb a dit :
Eh Millan, tu m'as l'air d'être un maniaque du code bien écrit.


Bon. J'ai le même travers. Mais je me soigne. Je teste toujours mon code sur plusieurs navigateurs. Et sur Firefox en particulier, j'ai ajouté un module complémentaire : HTML Validator de Marc Gueury.

Ainsi, je peux vérifier avec un simple [Ctrl-U], la validité de mon code.
Je t'invite à en faire autant.


Merci, j'ai déjà fais. Et c'est vrais que c'est pas mal du tout ce module
jayme88@guest

zeb a dit :

jayme88@guest, respecte le règlement. Utilise la balise [code][:zeb:4]
jayme88@guest, respecte le règlement. Utilise la balise [code][:zeb:4]
jayme88@guest, respecte le règlement. Utilise la balise [code][:zeb:4]

C'est bon, j'ai compris :D  Et oui, dsl, j'ai pas fais attention, ça ne se reproduira plus ;) 


jayme88@guest

Millan,
Voici un code fonctionel:

  1. <!DOCTYPE html>
  2.  
  3. <?php
  4. // Définition des boutons / pages
  5. $pages = Array(
  6. "accueil" => Array("Accueil", "Actualités de l'entreprise"),
  7. "foo" => Array("foo", "blablabla"),
  8. "bar" => Array("bar", "patati")
  9. );
  10.  
  11. // Tester la page demandé, afficher l'accueil si la page est inconnue
  12. $page = "";
  13. if (isset($_GET["page"])) $page = $_GET["page"];
  14. if (!isset($pages[$page])) $page = "accueil";
  15.  
  16. ?>
  17.  
  18.  
  19. <html>
  20. <head>
  21. <title><?php echo $pages[$page][0] ?></title>
  22. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  23. <style type="text/css">
  24.  
  25. a.buton {
  26. display: inline-block;
  27. background-image: url("<a href="http://www.baybul.com/clipart/buton/buton-3.png" rel="nofollow" target="_blank">http://www.baybul.com/clipart/buton/buton-3.png</a>");
  28. width: 406px; height: 218px;
  29. font-size: 30px;
  30. text-align: center;
  31. padding-top: 188px
  32. }
  33. a.buton:hover {
  34. background-image: url("<a href="http://www.baybul.com/clipart/buton/buton-2.png" rel="nofollow" target="_blank">http://www.baybul.com/clipart/buton/buton-2.png</a>")
  35. }
  36. a.buton.selected {
  37. background-image: url("<a href="http://www.baybul.com/clipart/buton/buton-5.png" rel="nofollow" target="_blank">http://www.baybul.com/clipart/buton/buton-5.png</a>")
  38. }
  39.  
  40. </style>
  41. </head>
  42. <body>
  43. <div>
  44. <?php
  45. foreach($pages as $key => $value) {
  46. $class = 'class = "buton';
  47. if ($page == $key) $class .= ' selected'; $class .= '"';
  48. echo '<a '.$class.' href="?page='.$key.'" title="'.$value[1].'">'.$value[0].'</a>';
  49. }
  50. ?>
  51. </div>
  52. </body>
  53. </html>


Pour ce qui est du cadre de l'image, c'est pas ce que je pensais... et je sais pas ce qui cloche sur chrome... je vais encore y réfléchir ;) 

a+

@jayme88 : Oki ;) 
La triple publication est une erreur. Pas un matraquage.
Tu peux changer ton premier post.
Tu peux aussi préciser le langage : [code=langage] pour faire plus joli ;) 

Re bonjour, j'ai juste encore une question à propos du site, dans mon fichier css, j'ai 2 id Menu dont une avec *, et je peu pas fusionné car quand je le fais sa fais bugé mon site... Est ce quelqu'un à une idée de la fonctione de * ?

#menu {
background: #434343;
border-radius: 10px 10px 3px 3px;
text-align: center;

}
#menu * {
display: inline;
text-align: center;


}
  • Millan a édité ce message
kyrooo@guest

zeb a dit :
balise [code]
[:zeb:4]

:lol: 

Dsl pour le retard (je suis jayme, j'arrive pas à m'inscrire sais po pk)

#menu * se rapporte à tout ce qui est contenu dans la balise identifié par "menu", pas à la balise elle-même.
Posez votre question