Problème boutton/image CSS

Résolu
Bonjour,
Je cherche à transformer une image - icone en .png en boutton css interactif (avec un a:active, un a:hover).. Comment le faire ?
Car si je définis l'image en background ou background image, à part me la mettre en background, il ne fait rien.
Je cherche en gros à adapter la forme de l'image en un bouton CSS.
Merci d'avance de vos réponses.

17 réponses

  1. Contributeur
    ce qui cloche dans mon code plutot que de prendre pour plus bete que je ne le suis à chaque fois...
    .

    mais c est les bases que tu ne comprend pas !!
    sinon tu saurait qu il suffit de mettre
    display: inline-block; 

    a la place de
    display: block; 
    a a.rond pour que tout s aligne !

    Non mais je débute pas à ce point là... 
    revise un peu quand meme ,en CSS si tu n a pas un minimum de base tu va galerer a chaque changement dans ton code et comme dans cet exemple (difference entre block et inline-block) et passer des heures sur un probleme , alors que 10 secondes suffisent pour le corriger si tu a les bases !!

    a+
    1. Non mais je débute pas à ce point là...
      J'aurais juste aimé que tu me dise ce qui cloche dans mon code plutot que de prendre pour plus bete que je ne le suis à chaque fois...
      1. Pourquoi, après avoir tapé le code comme ça :
        <!DOCTYPE html>
        <html>
        <head>
        <title>
        RAD ZONE Webcreation
        </title>
        <meta charset="utf-8">
        <style type="text/css">
        <!--

        a.rond {

        width: 122px;
        height: 122px;
        display: block;
        border-radius:150px;
        background: url(2.png);
        }
        a.rond2 {
        left:120px;
        width: 122px;
        height: 122px;
        display: inline-block;
        border-radius:150px;
        background: url(2.png);
        }

        a:hover {
        background: url(transfertlogoombresq2_122x122.png);
        }

        a:active {
        background: url(trempty_122x122.png);
        }

        </style>
        </head>
        <body>

        <a href="#" class="rond" ></a>
        <a href="#" class="rond2" ></a>

        </body>
        </html>

        Il m'affiche les images les unes en dessous des autres ? (enfin les deux seules images)
        1. Après test sur ton fichier, deux questions :
          De un comment faire pour mettre du texte par dessus l'image ?
          De deux, après avoir viré le tableau et toutes les images, je n'en ai laissé qu'une, est-il normal que je n'arrive pas à la décaler à gauche avec un "left:..." ?
          1. Contributeur
            comment faire pour mettre du texte par dessus l'image ? 

            dans tes liens <a> tu met ton texte dans un <p>
            <a href="#" class="rond"><p>TEXT</p></a>


            ensuite dans le CSS
            a a.rond tu ajoute
             
            line-height: 122px; 
            text-decoration: none;/* pour enlever la ligne sous le texte du lien  */ 


            et tu ajoute cette regle CSS
            a.rond p {
                  vertical-align: middle;
                  display: inline;
                  color: #FF0000;/* tu choisira ta couleur */ 
                  font-weight: bolder;/* tu choisira  */ 
                }


            après avoir viré le tableau
            ?? quel tableau ?? tout est fait en div !

            est-il normal que je n'arrive pas à la décaler à gauche avec un "left:..." ?
            ???
            c est que tu as due laisser la div cal et son css !

            tu est sur de comprendre un peu le html css ??? j ai de gros doutes !

            a+
        2. D'accord, merci beaucoup :)
          Je t'explique beaucoup plus précisemment mon projet :
          Bien qu'on soit le 06 décembre je cherche à créer un calendrier de l'avent, avec des boutons en forme de boules de Noel, avec une png à fond transparent, et que, quand on clique dessus, le ":active" fonctionne normalement lorsque l'on clique dessus, et quel lorsque l'on la survole, le ":hover" la fasse changer de couleur (la boule de Noel). Est ce possible ?
          1. Je te remercie beaucoup, ça ressemble à peu près à ce que je veux, mais à encore quelques détails près... .. Il s'agit encore "d'un bloc", sur lequel on doit cliquer dessus... N'y a t il pas moyen que l'on clique juste sur la boule, et qu'il n'y ai plus de bloc carré ? Puisque l'image.png est une icone, donc sans fond.. Donc ça devrait être possible non ?
            1. Contributeur
              mais c est toujours un bloc !! ton image n est pas sans fond , mais a un fond transparent ce qui donne cette impression de rond !!
              et bien pour imager ont peux dire que le border radius a 150px sur les 4 angles fait un peu la meme chose avec le block <a> !

              tu peux aussi le faire avec un mapping, et la tu clique sur une area shape ronde,
              je vois pas trop l interet pour un seul lien ,
              mais c est faisable !

              meme exemple que au dessus mais avec un mapping

              <!DOCTYPE html>
              <html>
                <head>
                  <title>
                    RAD ZONE Webcreation
                  </title>
                  <meta charset="utf-8">
                  <style type="text/css">
              
                  body{
                    margin: 0;
                    padding: 0;
                    background-color: #333333;
                  }
              
                  #centre{
                    width: 257px;
                    margin: auto;
                  }
              
                  </style>
                </head>
                <body>
                  <div id="centre">
                    <img alt="image" usemap="#image-rond" src="image-rond.png">
                    <map id="image-rond" name="image-rond">
                      <area alt="lien" href="#" shape="circle" coords="134,127,125">
                    </map>
                  </div>
                </body>
              </html>
              


              a+
          2. Contributeur
            Si tu peux faire ca avec
             
                -webkit-border-radius: 150px;
                -moz-border-radius: 150px;
                border-radius: 150px;
                 background: url(ton-image.png);
                  display: block;
            


            exemple
            <!DOCTYPE html>
            <html>
              <head>
                <title>
                  RAD ZONE Webcreation
                </title>
                <meta charset="utf-8">
                <style type="text/css">
            
                body{
                  margin: 0;
                  padding: 0;
                  background-color: #333333;
                }
            
                #centre{
                  width: 257px;
                  margin: auto;
                }
                      /* CSS DU A */
                a.rond {
                  width: 255px;
                  height: 255px;
                  border: 1px solid #333;
                  background-color: #ffffff;
                  -webkit-border-radius: 150px;
                  -moz-border-radius: 150px;
                  border-radius: 150px;
                  background: url(ton-image.png);
                  display: block;
                }
                     /* CSS DU A */
                </style>
              </head>
              <body>
                <div id="centre">
                  <a href="#" class="rond"></a>
                </div>
              </body>
            </html>
            


            voila l image que tu met a background: url(ton-image.png);


            a+
            1. Pour un bouton de formulaire, tu a l'input type image
              <input type='image' src='/img/image.jpg' alt='' />
              Ou encore la balise button
              <button type='submit'><img src='' alt='' /></button>
              1. C'est à peu près ça, mais il existe pas en moyen en CSS (ou en JS ?) de faire un bouton soigneux, en forme de boule de Noel ? :)
                1. En gros, tu aimerai qu'on ne puissent pas cliquer autour de ta boule c'est ça ?
                  Si c'est tout rond, tu peut tenter un border-radius (Et un display:block sur le lien si ton image est en background + height/width de dimension)

                  Si je fais fausse route, dit-le, j'suis pas certain d'avoir tout compris :)
                  1. Bon je vais être plus précis !
                    Je voudrais faire un bouton en forme de boule de Noel, avec le CSS.. Ya pas n moyen via une image ?
                    1. Ca marche pas comme je veux.. En fait je voudrais un bouton de la forme de l'imaga..
                      1. Contributeur
                        Salut
                        je voudrais un bouton de la forme de l'image
                        .
                        heuuu l image a part carree ou rectangle , quelle forme crois tu qu elle a ????

                        a+
                    2. tu peux essayé cela
                      html
                      <div id="bouton" <a href="url">Link text</a>><div>
                      #bouton{
                      widht:50px;/* exemple*/
                      height:30px;
                      background: url(image01) no-repeat center;
                      }
                      #bouton:hover{
                      background: url(image02);
                      }
                      #bouton:active{
                      backgroud: url(image03);
                      }