Problème d'affichage d'image bouton
Tags :
Dernière réponse : dans Programmation
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)
Fichier PHP Header:
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é:
Pour ceux à qui sa aiderai de voir le site : http://sad-corporetion.netii.net
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)
/*Bouton Accueil*/ /*image normal*/ .Bouton-Accueil1_1{ background : url(../image/Bouton/Bouton-Accueil1_1.png) no-repeat; width:105px; height:32px; } /*image hover*/ .Bouton-Accueil1{ background : url(../image/Bouton/Bouton-Accueil1.png) no-repeat; width:105px; height:32px; } .Bouton-Accueil1:hover{ background : url(../image/Bouton/Bouton-Accueil1_1.png) no-repeat; }
Fichier PHP Header:
<div id="menu"> <ul> <li> <a href="index.php" title="Actualités de l'entreprise"> <?php //On est sur la page index.php l'image sera button1-1.gif if($_SERVER['REQUEST_URI']=="/index.php"){ $image = "Bouton-Accueil1_1"; } //On est autre part, l'image sera button1.gif else{ $image = "Bouton-Accueil1"; } //la class Bouton-Accueil1 fait basculer l'état de l'image //Si on est sur la page index.php l'image button1-1.gif reste Bouton-Accueil1_1 //Si on est autre part, l'image bascule d'un état à l'autre echo '<img class="'.$image.'" alt="image bouton accueil" />'; ?> </a> </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é:
<div id="menu"> <a href="index.php" title="Actualités de l'entreprise"> <?php //On est sur la page index.php l'image sera button1-1.png if($_SERVER['REQUEST_URI']=="/index.php"){ $image = "Bouton-Accueil1_1"; $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>"; } //On est autre part, l'image sera button1.gif else{ $image = "Bouton-Accueil1"; $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>"; } //la class Bouton-Accueil1 fait basculer l'état de l'image //Si on est sur la page index.php l'image button1-1.gif reste Bouton-Accueil1_1 //Si on est autre part, l'image bascule d'un état à l'autre echo '<img href="'.$images.'" class="'.$image.'" alt="image bouton accueil" />'; ?> </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
Lassé par la pub ? Créez un compte
- | Alerter
Salut
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:
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:
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+
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:
img { border-style: none; }
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).
li.BoutonMenu{ background : url(../image/Bouton/BoutonMenu.png) no-repeat; width:105px; height:32px; } li.BoutonMenu:hover{ background : url(../image/Bouton/BoutonMenu_Hover.png) no-repeat; } li.BoutonMenu_Selected{ background : url(../image/Bouton/BoutonMenu_Selected.png) no-repeat; width:105px; height:32px; }
<div id="menu"> <ul> // On défini les valeurs statiques des boutons $Boutons = [ ["Accueil", "Actualités de l'entreprise", "index.php"] ["foo", "blablabla", "foo.php"] ["bar", "patati", "bar.php"] ] $path = $_SERVER['REQUEST_URI'] // Parcourir les boutons foreach($Boutons as $Bouton) { // <li class="xx"> if ($path == "/".$Bouton[2]){ echo "<li class='li.BoutonMenu_Selected'>" } else { echo "<li class='li.BoutonMenu'>" } // <a href="xx" title="yy">zz</a> echo "<a href='".$Bouton[2]."' title='".$Bouton[1]."'>".$Bouton[0]."</a>" echo "</li>" } </ul> </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+
- | Alerter
Salut,
Et pourquoi pas sur l'ancre, directement ?
Et pourquoi pas sur l'ancre, directement ?
a.bouton { width:105px; height:32px; display:inline-block; background:url(BoutonMenu.png) no-repeat; } a.bouton:hover { background-image:url(BoutonMenu_Hover.png); } a.bouton.selected { background-image:url(BoutonMenu_Selected.png); }
<a class='bouton' href='xxxx'>lien</a> <a class='bouton selected' href='xxxx' >lien sélectionné</a>
- zeb a édité ce message
- | Alerter
Contenus similaires
- Background-image html - Forum
- Background html image - Forum
- Image arrière plan css - Forum
- Css background extensible - Forum
- | Alerter
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)
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:
J'ai testé et je vois aucun changement...
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:
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.
Et pourquoi pas sur l'ancre, directement ?
J'ai pas encore test parce que je voulais une confirmation de ta par:
Je doit mettre ça
à la place de
?
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:
img { border-style: none; }
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).
li.BoutonMenu{ background : url(../image/Bouton/BoutonMenu.png) no-repeat; width:105px; height:32px; } li.BoutonMenu:hover{ background : url(../image/Bouton/BoutonMenu_Hover.png) no-repeat; } li.BoutonMenu_Selected{ background : url(../image/Bouton/BoutonMenu_Selected.png) no-repeat; width:105px; height:32px; }
<div id="menu"> <ul> // On défini les valeurs statiques des boutons $Boutons = [ ["Accueil", "Actualités de l'entreprise", "index.php"] ["foo", "blablabla", "foo.php"] ["bar", "patati", "bar.php"] ] $path = $_SERVER['REQUEST_URI'] // Parcourir les boutons foreach($Boutons as $Bouton) { // <li class="xx"> if ($path == "/".$Bouton[2]){ echo "<li class='li.BoutonMenu_Selected'>" } else { echo "<li class='li.BoutonMenu'>" } // <a href="xx" title="yy">zz</a> echo "<a href='".$Bouton[2]."' title='".$Bouton[1]."'>".$Bouton[0]."</a>" echo "</li>" } </ul> </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 ?
a.bouton { width:105px; height:32px; display:inline-block; background:url(BoutonMenu.png) no-repeat; } a.bouton:hover { background-image:url(BoutonMenu_Hover.png); } a.bouton.selected { background-image:url(BoutonMenu_Selected.png); }
<a class='bouton' href='xxxx'>lien</a> <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
<a class='bouton' href='xxxx'>lien</a> <a class='bouton selected' href='xxxx' >lien sélectionné</a>
à la place de
<a href="index.php" title="Actualités de l'entreprise"> <?php //On est sur la page index.php l'image sera button1-1.png if($_SERVER['REQUEST_URI']=="/index.php"){ $image = "Bouton-Accueil1_1"; } //On est autre part, l'image sera button1.gif else{ $image = "Bouton-Accueil1"; } //la class Bouton-Accueil1 fait basculer l'état de l'image //Si on est sur la page index.php l'image button1-1.gif reste Bouton-Accueil1_1 //Si on est autre part, l'image bascule d'un état à l'autre echo '<img href="'.$image.'" class="'.$image.'" alt="image bouton accueil" />'; ?> </a>
?
- | Alerter
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.
Heu.. ça m'étonne.. j'te ferai un code fonctionnel a l'occase
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>
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>
- | Alerter
- | Alerter
- | Alerter
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.
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.
- | Alerter
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
- | Alerter
- | Alerter
Millan,
Voici un code fonctionel:
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+
Voici un code fonctionel:
<!DOCTYPE html>
<?php
// Définition des boutons / pages
$pages = Array(
"accueil" => Array("Accueil", "Actualités de l'entreprise"),
"foo" => Array("foo", "blablabla"),
"bar" => Array("bar", "patati")
);
// Tester la page demandé, afficher l'accueil si la page est inconnue
$page = "";
if (isset($_GET["page"])) $page = $_GET["page"];
if (!isset($pages[$page])) $page = "accueil";
?>
<html>
<head>
<title><?php echo $pages[$page][0] ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
a.buton {
display: inline-block;
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>");
width: 406px; height: 218px;
font-size: 30px;
text-align: center;
padding-top: 188px
}
a.buton:hover {
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>")
}
a.buton.selected {
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>")
}
</style>
</head>
<body>
<div>
<?php
foreach($pages as $key => $value) {
$class = 'class = "buton';
if ($page == $key) $class .= ' selected'; $class .= '"';
echo '<a '.$class.' href="?page='.$key.'" title="'.$value[1].'">'.$value[0].'</a>';
}
?>
</div>
</body>
</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+
- | Alerter
- | Alerter
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;
}
#menu {
background: #434343;
border-radius: 10px 10px 3px 3px;
text-align: center;
}
#menu * {
display: inline;
text-align: center;
}
- Millan a édité ce message
- | Alerter
- | Alerter
- | Alerter
Lassé par la pub ? Créez un compte
Et oui, dsl, j'ai pas fais attention, ça ne se reproduira plus