Téléchargement
illégal
Posez votre question Signaler

Changer l'arrière plan d'un bouton (CSS) [Résolu]

nico3fr 34Messages postés 31 mai 2007Date d'inscription - Dernière réponse le 4 mars 2010 à 10:26
Bonjour,
Je souhaiterais créer un bouton dans un formulaire qui change d'état lorsque l'on passe la souris dessus.
Rien de vraiment dur dis comme ca...
Les contraintes :
- Que ca marche sous IE et Firefox
- Pas de javascript
Et voici mes problèmes plus en détails, ca expliquera certainement mieux ce que je souhaite et les problèmes rencontrés.
Tout d'abord du code qui marche sous firefox... Mais pas sous internet explorer
<?php
  if (isset($_POST['ma_variable']))
    print("post ok<br>");
  if (isset($_POST['ma_variable']) && (!empty($_POST['ma_variable']))){
    extract($_POST);  // On réccupère les données du _POST qu'on place dans des variables $recrut, etc...
    print("ma_variable : $ma_variable<br>");
  }

?>

<html>
  <head>
    <title>Page web</title>
  </head>
  
    <style type="text/css">
    button {
      background-color: transparent;
      background-image: url(images/bouton.png);
      background-repeat: no-repeat;
      width: 120px;
      height: 14px;
      margin: 5px auto;
      border: none;
      text-align: center;
      font-family: Verdana, Arial, Helvetica, Geneva, sans-serif;
      font-size: 11px;
      text-decoration: none;
    }

    button:hover, button:active {
      background-image: url(images/bouton.png);
      color: #FF7200;
    }
    </style>
  
  
  <body>
  <br><p>Une simple bouton sur une page...<br></p><br>
    <form method="post" action="firefox.php">
      <button type="submit" value="1" name="ma_variable" class="button">1</button>
    </form>
    <a href="firefox.php">Recharger la page sans post</a>
  </body>
</html>

Et ici du code qui "marche" sous IE, mais pas sous firefox
<?php
  if (isset($_POST['ma_variable']))
    print("post ok<br>");
  if (isset($_POST['ma_variable']) && (!empty($_POST['ma_variable']))){
    extract($_POST);
    print("ma_variable : $ma_variable<br>");
  }

?>

<html>
  <head>
    <title>Page web</title>
  </head>
  
    <style type="text/css">
    .button_cache{
      width: 120px;
      height: 14px;
      background: transparent;
      border: 0px;
      text-decoration: none;
      font-family: Verdana, Arial, Helvetica, Geneva, sans-serif;
      font-size: 11px;
      padding: 0px; 
      text-align: center;
    }
    
    a.button {
      background-color: transparent;
      background-image: url(images/bouton.png);
      background-repeat: no-repeat;
      width: 120px;
      height: 14px;
      margin: 5px auto;
      border: none;
      text-align: center;
      font-family: Verdana, Arial, Helvetica, Geneva, sans-serif;
      font-size: 11px;
      text-decoration: none;
    }

    a.button:hover, a.button:active {
      background-image: url(images/bouton2.png);
      color: #FF7200;
    }
    </style>
  
  
  <body>
  <br><p>Une simple bouton sur une page...<br></p><br>
    <form method="post" action="ie.php">
      <a href="" class="button"><input type="submit" value="1" name="ma_variable" class=button_cache></a>
    </form>
  </body>
</html>

Alors les explications maintenant.
Dans le premier cas, celui qui marche sous firefox et pas sous IE, c'est visiblement à cause du fait que l'attribut :hover ne s'applique qu'a une balise "lien" (<a href="blabla">) sous internet explorer, alors que firefox semble donné un peu plus de liberté.
Donc sous IE, je n'arrive pas à voir ma seconde image de fond, ni le changement de couleur appliqué dans la class button:hover
Donc j'ai essayé de tricher un peu avec la 2e méthode, qui semble fonctionner sous IE (juste la couleur du lien qui ne fonctionne pas avec le hover (color: #FF7200)). Sinon, il charge correctement l'image bouton2.png lorsque je passe la souris sur le bouton.
Par contre, le gros probleme sous firefox, c'est qu'il semble favoriser la balise du lien <a> par rapport à la balise <input>, donc en fait, il n'envoie pas de formulaire lorsque je clique sur le bouton...
Enfin, bref, j'ai l'impression de tourner un peu en rond depuis hier. Donc si quelqu'un à une solution qui marche sous les 2 systemes, ca m'interesse grandement.
Merci
PS: Je sais pas si j'ai été très clair, hésitez pas à poser des questions ;)
Lire la suite 

Changer l'arrière plan d'un bouton (CSS) »

12 réponses
Réponse
+4
moins plus
salut,

il ne faudrait mettre le '<input>' dans un lien, cela n'a pas de sens.

donc essai de coder le même comportement mais sur le '<input>'.
sinon pour le défaut d'affichage, je pense qu'il manque un {display:block;} dans le sélecteur 'a.button'.
Ajouter un commentaire
Réponse
+1
moins plus
cherche sur www.w3schools.com pour les standards qui seront compatibles IE et FF
Ajouter un commentaire
Réponse
+1
moins plus
Sinon il existe une autre alternative.

Vous faites faire une détection du navigateur et vous chargez une feuille de style en fonction du navigateur.
Ajouter un commentaire
Réponse
+0
moins plus
Oui, ,je sais qu'il ne faudrait pas mettre le <input> dans un lien...
Mais le :hover ne marche que sur les liens dans internet explorer :-/
Et pour poster mon formulaire, à part le <input>... je vois pas trop

Et effectivement, j'ai oublié le display: block; mais ca ne change rien au probleme.

Est ce qu'il est possible de poster un formulaire en cliquant sur un lien ? c'est à dire sans passer par <button> ou <input>


Dans le pire des cas, je ferais 2 cas différent entre firefox et IE, mais après je peux pas vraiment m'amuser à tester tous les navigateurs, donc je préfererais une solution "universelle".
Ajouter un commentaire
Réponse
+0
moins plus
Salut à tous

Moi j'utilise un petit code javascript qui appelle un fichier js et deux image

rendu ici : http://gs-computer.eu/index.php?mod=accueil1&lang=fr

je peux te donner mon code si ça t'interesse
Ajouter un commentaire
Réponse
+0
moins plus
Merci Jérémy, mais je préfèrerais éviter le javascript.

De toute facon, a priori mon probleme à pas vraiment de solutions tel que je le souhaiterais.
A priori, la première solution doit marcher sur IE >= 6
Donc, je crois que je vais garder la première syntaxe, et les utilisateurs auront cas avoir une version d'IE >= 6 pour avoir de jolies petits effets. Sinon, ils auront cas faire comme tout le monde et installer firefox :D
Ajouter un commentaire
Réponse
+0
moins plus
re,

Mais le :hover ne marche que sur les liens dans internet explorer
ah oui ! je l'oublie à chaque fois celle-là !

je viens de faire les essais avec '<input>' dans un lien, ça fonctionne au poil même sous IE6.
utilise cette technique plutôt que de priver les utilisateur de IE6, ils ont encore très nombreux !!!

j'ai utilisé ça :
form a input
{
border:none;
padding-left:24px; /* pour décaler le texte, qu'il ne chevauche pas mon image*/
background-color:transparent;
cursor: pointer;
}
form a
{
background-image:url(ressources/fail.png);
background-repeat:no-repeat;
background-color:#aaa;
text-decoration:none;
}
form a:hover
{
background-image:url(ressources/success.png);
}

et
<form action="#" method="get">
            <a href="#"><input type="submit" value="Valider" title="ok" /></a>
</form>
Ajouter un commentaire
Réponse
+0
moins plus
Effectivement, ca marche sous IE...
Mais pas sous firefox, firefox ne prend pas le input en compte j'ai l'impression, il gère le lien et ne post pas le formulaire.

Merci quand meme :)
Ajouter un commentaire
Réponse
+0
moins plus
La balise button ça existe ;)
<button type="submit">Valider</button>


et voilà :)
tim974- 29 mai 2008 à 09:01
La balise button ça existe ;)

<button type="submit">Valider</button>



mais encore ?

Sinon je rencontre aussi la même difficulté et je n'ai toujours pas trouvé une reponse universelle à chaque navigateur.
Nxt- 29 mai 2008 à 10:33
<style type="text/css">
button {
	padding: 3px 30px;
	background-color: #FFECEC;
	border: 1px solid #990000;
}
button:hover {
	background-color: #ECFFEC;
	border: 1px solid #009900;
}
</style>
<button type="submit">Pwet</button>
Ajouter un commentaire
Réponse
-3
moins plus
Bonjour,
j'ai creé une formulaire nomé contact conteint les champs suivants:
first_name,last_name,tel_number,e_mail,commentaire
aussi j'ai une table 'Contact' dans mon base mysql,voici ma code:
create table Contact
( id_contact int(11) not null Auto_Increment,
first_name varchar(255),
last_name varchar(255),
e_mail varchar(255),
tel_number varchar(255),
commentaire varchar(255),
drapeau_country img,
ip varchar(15),
Constraint pk_contact primary key(id_contact)
);
Insert into contact(first_name,last_name,e_mail,tel_number,commentaire) values('$first_name','$last_name','$e_mail','$tel_number','$commentaire',LAST_INSERT_ID());
aide moi de trouver le code php exact quand j'ai inseré les données de ma forumulaire,une page sera affiché tous les information surtout country grace à son @ip.....
merci et bonne journée
Ajouter un commentaire
Ce document intitulé « Changer l'arrière plan d'un bouton (CSS) » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?