Comment changer une image de bouton d'entrée en utilisant CSS?

Donc, je peux créer un bouton d'entrée avec une image en utilisant

<INPUT type="image" src="/images/Btn.PNG" value="">

Mais, je ne peux pas obtenir le même comportement en utilisant CSS. Par exemple, j'ai essayé

<INPUT type="image" class="myButton" value="">

Où "myButton" est défini dans le fichier CSS comme

.myButton {
    background:url(/images/Btn.PNG) no-repeat;
    cursor:pointer;
    width: 200px;
    height: 100px;
    border: none;
}

Si c'est tout ce que je voulais faire, je pourrais utiliser le style original, mais je veux changer l'apparence du bouton sur hover (en utilisant une classe myButton:hover). Je sais que les liens sont bons, car j'ai pu les charger pour une image d'arrière-plan pour d'autres parties de la page (tout comme un vérifier). J'ai trouvé des exemples sur le web de la façon de le faire en utilisant JavaScript, mais je suis à la recherche d'une solution CSS.

J'utilise Firefox 3.0.3 si cela fait une différence.

178
css
demandé sur Peter Mortensen 2008-10-12 20:04:13

11 réponses

Si vous voulez styliser le bouton en utilisant CSS, faites-en un bouton type="submit" au lieu de type = "image". type= "image" attend un SRC, que vous ne pouvez pas définir en CSS.

Notez que Safari ne vous permettra pas de styliser n'importe quel bouton de la manière que vous recherchez. Si vous avez besoin du support Safari, vous devrez placer une image et avoir une fonction onclick qui soumet le formulaire.

116
répondu ceejayoz 2008-10-12 16:10:18

Vous pouvez utiliser la balise <button>. Pour soumettre, il suffit d'ajouter type="submit". Utilisez ensuite une image d'arrière-plan lorsque vous souhaitez que le bouton apparaisse sous forme de graphique.

Comme ça:

<button type="submit" style="border: 0; background: transparent">
    <img src="/images/Btn.PNG" width="90" height="50" alt="submit" />
</button>

Plus d'Informations: http://htmldog.com/reference/htmltags/button/

107
répondu Dimitry 2013-10-19 19:32:17

HTML

<div class="myButton"><INPUT type="submit" name="" value=""></div>

CSS

div.myButton input {
    background:url(/images/Btn.PNG) no-repeat;
    cursor:pointer;
    width: 200px;
    height: 100px;
    border: none;
}

Cela fonctionnera n'importe où, même dans Safari.

71
répondu SI Web Design 2014-03-14 17:13:06

Cet article sur le remplacement de l'image css pour les boutons de soumission pourrait vous aider.

"en Utilisant cette méthode, vous obtiendrez une image cliquable lorsque les feuilles de styles sont actifs, et un bouton standard lorsque les feuilles de styles sont désactivés. L'astuce consiste à appliquer les méthodes image replace à une balise button et à l'utiliser comme bouton submit, au lieu d'utiliser input.

Et puisque les bordures de bouton sont effacées, il est également recommandé de changer le curseur du bouton pour la main en forme de celui utilisé pour les liens, depuis cela fournit une pointe visuelle aux utilisateurs."

Le code CSS:

#replacement-1 {
  width: 100px;
  height: 55px;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent url(image.gif) no-repeat center top;
  text-indent: -1000em;
  cursor: pointer; /* hand-shaped cursor */
  cursor: hand; /* for IE 5.x */
}

#replacement-2 {
  width: 100px;
  height: 55px;
  padding: 55px 0 0;
  margin: 0;
  border: 0;
  background: transparent url(image.gif) no-repeat center top;
  overflow: hidden;
  cursor: pointer; /* hand-shaped cursor */
  cursor: hand; /* for IE 5.x */
}
form>#replacement-2 { /* For non-IE browsers*/
  height: 0px;
}
25
répondu splattne 2008-10-12 16:12:31

Voici une solution plus simple mais sans div environnant supplémentaire:

<input type="submit" value="Submit">

Le CSS utilise une technique de remplacement d'image de base. Pour les points bonus, il s'affiche en utilisant un sprite image:

<style>
    input[type="submit"] {
        border: 0;
        background: url('sprite.png') no-repeat -40px left;
        text-indent: -9999em;
        line-height:3000;
        width: 50px;
        height: 20px;
    }
</style>

Source: http://work.arounds.org/issue/21/using-css-sprites-with-input-type-submit-buttons/

12
répondu philoye 2011-02-03 02:38:40

Vous pouvez utiliser blank.gif (image transparente 1px) comme cible dans votre tag

<input type="image" src="img/blank.gif" class="button"> 

Et puis le style de fond en css:

.button {border:0;background:transparent url("../img/button.png") no-repeat 0 0;}
.button:hover {background:transparent url("../img/button-hover.png") no-repeat 0 0;}
2
répondu dafyk 2011-04-01 17:56:43

Une variation sur les réponses précédentes. J'ai trouvé que l'opacité doit être définie, bien sûr cela fonctionnera dans IE6 et on. Il y avait un problème avec la solution de hauteur de ligne dans IE8 où le bouton ne répondait pas. Et avec cela, vous obtenez un curseur à la main aussi bien!

<div id="myButton">
  <input id="myInputButton" type="submit" name="" value="">
</div>

#myButton {
 background: url("form_send_button.gif") no-repeat;
 width: 62px;
 height: 24px;
 }

#myInputButton { 
 background: url("form_send_button.gif") no-repeat;
 opacity: 0;
 -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
 filter: alpha(opacity=0);
 width: 67px;
 height: 26px;
 cursor: pointer;
 cursor: hand;
}
2
répondu Reed Richards 2011-05-10 08:59:58

Voici ce qui a fonctionné pour moi sur Internet Explorer, une légère modification de la solution par Philoye.

>#divbutton
{
    position:relative;
    top:-64px;
    left:210px;
    background: transparent url("../../images/login_go.png") no-repeat;
    line-height:3000;
    width:33px;
    height:32px;
    border:none;
    cursor:pointer;
}
2
répondu user545376 2011-05-25 09:39:36

Je pense que ce qui suit est la meilleure solution:

Css:

.edit-button {
    background-image: url(edit.png);
    background-size: 100%;
    background-repeat:no-repeat;
    width: 24px;
    height: 24px;
}

Html:

<input class="edit-button" type="image" src="transparent.png" />
2
répondu inf3rno 2012-04-23 19:14:00

Ma solution sans js et sans images est la suivante:

*HTML:

<input type=Submit class=continue_shopping_2 
name=Register title="Confirm Your Data!" 
value="confirm your data">

*CSS:

.continue_shopping_2:hover{
background-color:#FF9933;
text-decoration:none;
color:#FFFFFF;}


.continue_shopping_2{
padding:0 0 3px 0;
cursor:pointer;
background-color:#EC5500;
display:block;
text-align:center;
margin-top:8px;
width:174px;
height:21px;
border-radius:5px;
border-width:1px;
border-style:solid;
border-color:#919191;
font-family:Verdana;
font-size:13px;
font-style:normal;
line-height:normal;
font-weight:bold;
color:#FFFFFF;}
1
répondu John 2013-09-16 18:32:15

Peut-être que vous pourriez simplement importer un .fichier js ainsi et ont le remplacement de l'image là, en JavaScript.

0
répondu 2008-10-25 19:40:52