Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1638 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Bouton personnalisé

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Bouton personnalisé

n°1443564
benjones
Posté le 17-09-2006 à 11:50:36  profilanswer
 

Bonjour, je souhaiterai crée un bouton perso, qui s'adapterai en focntion de la longueur du texte.
 
Cependant, pour l'instant, je n'arrive pas à faire en sorte que l'image de fond s'adapte à la taille du bouton (simulé par un div).
J'arrive à adapter la taille de l'image de fond en utilisant un <img> au lieu du "background-image". Cependant, dans ce cas, comment faire en sorte que le texte apparaisse sur l'image ?
 
Merci beaucoup !!

mood
Publicité
Posté le 17-09-2006 à 11:50:36  profilanswer
 

n°1443565
benjones
Posté le 17-09-2006 à 12:01:08  profilanswer
 

voici la chtite fonction :
 
function creer_bouton($texte,$action,$largeur,$hauteur)
{
    echo <<<END
     
    <div style="width:{$largeur}px; height:{$hauteur};">
         <img src="../img/button_1.gif" border="0" width="100%" height="100%"
         onmouseover="this.src='../img/button_2.gif';"
         onmousedown="this.src='../img/button_3.gif';"
         onmouseup="this.src='../img/button_2.gif';"
         onmouseout="this.src='../img/button_1.gif';"
         onclick="{$action};"
         style="cursor: pointer;">
         <div style="position: absolute;">{$texte}</div>
    </div>
 
END;
}
 
Mais le texte reste sous l'image... :(

n°1443566
KangOl
Profil : pointeur
Posté le 17-09-2006 à 12:03:56  profilanswer
 
n°1443567
benjones
Posté le 17-09-2006 à 12:08:31  profilanswer
 

Merci pour ce lien, mais si j'entre un texte plus long, l'image sera-t-elle étirée ?
Car c'est le but que je souhaite atteindre.
 
Je viens d'essayer la méthode du lien que tu m'as envoyé KangOl, et en effet, je ne peux pas étirer l'image de fond à la taille souhaitée.
 
Est-il cependant possible de placer du texte par dessus une image ?


Message édité par benjones le 17-09-2006 à 12:15:37
n°1443568
gatsu35
Blablaté par Harko
Posté le 17-09-2006 à 12:15:26  profilanswer
 


Je tiens à préciser que ce bouton est devenu obsolète et j'ai depuis un mois déjà mis au point un bouton inline infuckable qui prend la largeur du texte comme il faut et qui ne nécessite aucun hack CSS et qui fonctionne sur tous les navigateurs avec le même affichage.
Mais je le remettrait en ligne prochainement si vous voulez bien me pardonner, mais d'où je suis aujourd'hui je ne peux pas satisfaire votre demande.

n°1443570
benjones
Posté le 17-09-2006 à 12:16:43  profilanswer
 

Merci, Gatsu35 c'est sympa :p J'attend ton post avec impatience !!! 8)

n°1443571
KangOl
Profil : pointeur
Posté le 17-09-2006 à 12:17:08  profilanswer
 

c'est pas celui la ?
http://gatsu.ftp.free.fr/html/inlinebutton/
 
ps : il est peut etre devenu obsolete mais il me suffit

n°1443573
gatsu35
Blablaté par Harko
Posté le 17-09-2006 à 12:24:38  profilanswer
 

celui-ci est devenu obsolète :  
le nouveau code de ce bouton est simple :  
 

Code :
  1. a.button {display:-moz-inline-box; display:inline-block; background:url(buttonbkgcrn.png) no-repeat left top; padding-left:10px; color:#ffffff; font-weight:bold; font-size:12px; font-family:Verdana; vertical-align:middle;  text-decoration:none; vertical-align:middle; white-space:nowrap}
  2. a.button span {display:-moz-inline-box; display:inline-block;  background:url(buttonbkg.png) no-repeat right top; padding-right:10px; height:24px; line-height:24px; vertical-align:middle; cursor:pointer}


 
et tu peux virer les hacks qu'il y a derriere, plus besoin d'eux :o
 
en fait les seuls changements sont de remplacer les premiers displays de mozilla par un display:-moz-inline-box qui a le même comportement qu'un display:inline-block


Message édité par gatsu35 le 17-09-2006 à 12:27:18
n°1443577
KangOl
Profil : pointeur
Posté le 17-09-2006 à 12:33:37  profilanswer
 

mwai, j'ai pas trop le coup du <span> dans le <a> :/

n°1443582
benjones
Posté le 17-09-2006 à 13:05:09  profilanswer
 

Le soucis c'est que mon image de fond possèdes des décos de chaque coté, donc ça se voit :(
 
En plus, les propriétés onmouseover, etc... ça devient chaud à gérer

mood
Publicité
Posté le 17-09-2006 à 13:05:09  profilanswer
 

n°1443583
benjones
Posté le 17-09-2006 à 13:07:21  profilanswer
 

N'y aurait-il pas moyen de détecter la position de l'image et d'afficher un div en position: absolute dessus ?

n°1443592
KangOl
Profil : pointeur
Posté le 17-09-2006 à 13:27:36  profilanswer
 

bha pas besoin de onmouseover
suffit de jouer avec la pseudo-classe :hover :o

n°1443606
benjones
Posté le 17-09-2006 à 14:15:29  profilanswer
 

Je me suis arrangé autrement ;) J'ai séparé mon image en 3 partie et j'ai créer un tableau. La partie centrale contient le texte et l'image milieu en fond. Les autres cases sont gauches et droite. Le résultat est nickel.
 
Merci

n°1443608
KangOl
Profil : pointeur
Posté le 17-09-2006 à 14:24:42  profilanswer
 

nickel ... graphiquement ... mais le code est vraiment pas top :/

n°1443613
benjones
Posté le 17-09-2006 à 14:52:23  profilanswer
 

Ba un tableau html, je suis sur au moins que ça marche sur tous les navigateur, ça m'évite de trop bidouiller mon css. C'est plus simple pour mon cas.

n°1443676
gatsu35
Blablaté par Harko
Posté le 17-09-2006 à 19:04:34  profilanswer
 

KangOl a écrit :

mwai, j'ai pas trop le coup du <span> dans le <a> :/


En quoi le "span" dans le "a" te gène ?
c'est un simple élément inline dans un autre élément inline. Et c'est la seule possibilité d'avoir des images avec des bords propres  et d'utiliser les portes coulissantes + un petit padding pour laisser passer le dawa.
 
Si tu trouves mieux je suis ton homme hein :o
 
Sinon benjones, ta solution est mega pourri avec qu'avec 2 images tu peux faire ce que tu cherches à faire facilement.
l'une des deux images faisant 600px de largeur au moins.

n°1443948
benjones
Posté le 18-09-2006 à 10:53:16  profilanswer
 

gatsu35 a écrit :

En quoi le "span" dans le "a" te gène ?
c'est un simple élément inline dans un autre élément inline. Et c'est la seule possibilité d'avoir des images avec des bords propres  et d'utiliser les portes coulissantes + un petit padding pour laisser passer le dawa.
 
Si tu trouves mieux je suis ton homme hein :o
 
Sinon benjones, ta solution est mega pourri avec qu'avec 2 images tu peux faire ce que tu cherches à faire facilement.
l'une des deux images faisant 600px de largeur au moins.


 
Mega pourri faut pas exagérer, je vois pas en quoi un tableau html soit méga pourri :p
 
Cependant, ton astuce est très interessante, je vais tout essayer de toute façon et garder ce qui correspond le mieu à mon problème.
 
Merci.

n°1443952
gatsu35
Blablaté par Harko
Posté le 18-09-2006 à 10:55:16  profilanswer
 

file ta maquette graphique de ton bouton et je te prouve le contraire en moins de deux :o
 
un tableau HTML pour foutre un lien c'est crade et pas sémantique c'est tout :o

n°1443999
benjones
Posté le 18-09-2006 à 11:33:56  profilanswer
 

gatsu35 a écrit :

file ta maquette graphique de ton bouton et je te prouve le contraire en moins de deux :o
 
un tableau HTML pour foutre un lien c'est crade et pas sémantique c'est tout :o


 
Le lien n'est pas sur le tableau rassure toi, le tableau est contenu dans un div en block inline.
 
Je ne dit pas que ma méthode est mieu, au contraire, je dis simplement que j'ai réussi à mé débrouiller rapidement pour l'instant. Je reviendrai sur les boutons quand j'aurai plus de temps. Pour l'instant je n'ai vu aucun soucis.

n°1444042
gatsu35
Blablaté par Harko
Posté le 18-09-2006 à 12:55:56  profilanswer
 

ah et c'est un bouton et quand on cliques dessus ya du JS ?
fuper \o/

n°1444234
benjones
Posté le 18-09-2006 à 16:58:34  profilanswer
 

gatsu35 a écrit :

ah et c'est un bouton et quand on cliques dessus ya du JS ?
fuper \o/


 
Oui il y a du JS (onmouseover, onmouseout, onmousedown, etc...)

n°1444423
gatsu35
Blablaté par Harko
Posté le 18-09-2006 à 22:27:59  profilanswer
 

benjones a écrit :

Oui il y a du JS (onmouseover, onmouseout, onmousedown, etc...)


Fuper du caca pourri \o/

n°1446581
benjones
Posté le 23-09-2006 à 13:32:13  profilanswer
 

J'ai essayé d'implémenter ta solution. Sous firefox le résultat est parfait, mais sous IE, l'affichage est décalé... :/
 
Voici mon css :
 
a.bouton
{
       display:-moz-inline-box;
       display:inline-block;  
       background:url(../img/bouton1g.gif) no-repeat left top;
       padding-left:25px;
       color:#000000;
       font-weight:bold;
       font-size:12px;  
       font-family:Verdana;  
       vertical-align:bottom;
       text-decoration:none;
       vertical-align:middle;
       white-space:nowrap;
       height:21px;
}
 
a.bouton span
{
       display:-moz-inline-box;  
       display:inline-block;  
       background:url(../img/bouton1d.gif) no-repeat right top;
       padding-right:25px;
       height:21px;
       line-height:21px;
       vertical-align:middle;
       cursor:pointer;
}
 
Donc sous IE l'image dans le span apparait plus bas que l'image du <a>.

n°1446586
benjones
Posté le 23-09-2006 à 13:52:59  profilanswer
 

J'ai réussi à faire afficher le bouton nickel sous les 2 navigateurs/ Voici le css
 
a.bouton
{
       display:-moz-inline-box;
       display:inline-block;  
       background:url(../img/bouton1g.gif) no-repeat left top;
       padding-left:25px;
       color:#000000;
       font-weight:bold;
       font-size:12px;  
       font-family:Verdana;  
       vertical-align:middle;
       white-space:nowrap;
       height:21px;
}
 
a.bouton div
{
       display:-moz-inline-box;  
       display:inline-block;  
       background:url(../img/bouton1d.gif) no-repeat right top;
       padding-right:25px;
       height:21px;
       padding-top:2px;
       vertical-align:middle;
       cursor:pointer;
       width:0;
}
 
Comme tu le vois, j'ai remplacer le span par un div de longueur 0 (afin qu'il s'adapete au contenu, sinon ça prend toute la largeur de contenant sous IE :/). L'affichegae est nickel.
 
Merci !!

n°1446588
gatsu35
Blablaté par Harko
Posté le 23-09-2006 à 14:06:48  profilanswer
 

non pas de Div car le display:inline-block ne fonctionne que sur les éléments de type inline sous IE.
en plus mettre un div dans un A est n'importe quoi et pas dans les normes.
laisse le span et fais plutôt ceci dans ce cas :  
 

Code :
  1. a.bouton span
  2. {
  3.        display:-moz-inline-box; 
  4.        display:inline-block; 
  5.        _display:block;
  6.        background:url(../img/bouton1d.gif) no-repeat right top;
  7.        padding-right:25px;
  8.        height:21px;
  9.        padding-top:2px;
  10.        vertical-align:middle;
  11.        cursor:pointer;
  12.        _width:1%;
  13. }

Message cité 1 fois
Message édité par gatsu35 le 23-09-2006 à 14:07:31
n°1446598
benjones
Posté le 23-09-2006 à 14:53:41  profilanswer
 

gatsu35 a écrit :

non pas de Div car le display:inline-block ne fonctionne que sur les éléments de type inline sous IE.
en plus mettre un div dans un A est n'importe quoi et pas dans les normes.
laisse le span et fais plutôt ceci dans ce cas :  
 

Code :
  1. a.bouton span
  2. {
  3.        display:-moz-inline-box; 
  4.        display:inline-block; 
  5.        _display:block;
  6.        background:url(../img/bouton1d.gif) no-repeat right top;
  7.        padding-right:25px;
  8.        height:21px;
  9.        padding-top:2px;
  10.        vertical-align:middle;
  11.        cursor:pointer;
  12.        _width:1%;
  13. }



 
Yes ça marche, merci beaucoup.
 
Par conrte, mes hover marchent pas sous IE :/
 
a.bouton span:hover
{
       display:-moz-inline-box;  
       display:inline-block;  
       _display:block;
       background:url(../img/bouton1d.gif) no-repeat right top;
       padding-right:25px;
       height:21px;
       padding-top:2px;
       vertical-align:middle;
       cursor:pointer;
       _width:1%;
}

n°1446602
gatsu35
Blablaté par Harko
Posté le 23-09-2006 à 15:06:00  profilanswer
 

benjones a écrit :


 
Par conrte, mes hover marchent pas sous IE :/
 
a.bouton span:hover


 
a.bouton:hover span
 
autant gerer le hover sur le A et styler les sous élément via cette methode (de toute manière c'est comme ça qu'il faut faire)
et puis sous IE le hover n'est géré que sur le A

n°1446605
benjones
Posté le 23-09-2006 à 15:12:07  profilanswer
 

gatsu35 a écrit :

a.bouton:hover span
 
autant gerer le hover sur le A et styler les sous élément via cette methode (de toute manière c'est comme ça qu'il faut faire)
et puis sous IE le hover n'est géré que sur le A


 
Arf, je viens d'essayer :
 
a.bouton:hover
{
background:url(../img/bouton2g.gif) no-repeat right top;
}
 
et  
 
a.bouton:hover span
{
background:url(../img/bouton2d.gif) no-repeat right top;
}
 
Ni l'un ni l'autre ne fonctionne sous IE...

n°1446613
gatsu35
Blablaté par Harko
Posté le 23-09-2006 à 15:25:00  profilanswer
 

et avec ce code
si tu passes ta souris juste sur la gauche du bouton ça donne quoi ?
J'ai l'impression que le fait que le span soit dans le A block zarb kan meme
 
edit : met un zoom:1 sur le A pour voir


Message édité par gatsu35 le 23-09-2006 à 15:25:24
n°1446618
benjones
Posté le 23-09-2006 à 15:42:13  profilanswer
 

Toujours pas...
 
Voici mon css à l'état actuel :
 
a.bouton
{
       display:-moz-inline-box;
       display:inline-block;  
       background:url(../img/bouton1g.gif) no-repeat left top;
       padding-left:25px;
       color:#000000;
       font-weight:bold;
       font-size:12px;
       font-family:Verdana;  
       vertical-align:middle;
       white-space:nowrap;
       height:21px;
       cursor:pointer;
       zoom:1;
}
 
a.bouton span
{
       display:-moz-inline-box;
       display:inline-block;
       _display:block;
       background:url(../img/bouton1d.gif) no-repeat right top;
       padding-right:25px;
       height:21px;
       padding-top:2px;
       vertical-align:middle;
       cursor:pointer;
       _width:1%;
}
 
a.bouton:hover
{
       background:url(../img/bouton2g.gif) no-repeat left top;
       zoom:1;
}
 
a.bouton:hover span
{
       background:url(../img/bouton2d.gif) no-repeat right top;
}
 
a.bouton:active
{
       background:url(../img/bouton3g.gif) no-repeat left top;
       color:#ffffff;
       zoom:1;
}
 
a.bouton:active span
{
       background:url(../img/bouton3d.gif) no-repeat right top;
}

n°1446619
benjones
Posté le 23-09-2006 à 15:42:44  profilanswer
 

Et non, rien en passant la souris sur la gauche du bouton (dsl javé oublié ;))


Message édité par benjones le 23-09-2006 à 15:42:59
n°1446622
gatsu35
Blablaté par Harko
Posté le 23-09-2006 à 15:51:21  profilanswer
 

ca te dirait de poster les images aussi
Je vais voir ceque je peux faire car là ca me parait très louche tout ça

n°1446627
benjones
Posté le 23-09-2006 à 16:04:16  profilanswer
 

Ba je sais pas comment poster des images sur ce forum et je ne pense pas que ça vienne des images :p
Sinon voici le code qui ajoute un bouton :
 
<a class="bouton"><span>$texte</span></a>

n°1446632
gatsu35
Blablaté par Harko
Posté le 23-09-2006 à 16:35:47  profilanswer
 

tu vas sur imageshack.us tu upload chaque image puis tu poste le liens pour acceder à ces images ici merci :o

n°1446633
benjones
Posté le 23-09-2006 à 16:41:12  profilanswer
 

Ok je te met bouton1g et bouton1d, les autres sont les mêmes avec un changement de couleur

n°1446635
benjones
Posté le 23-09-2006 à 16:44:29  profilanswer
 
n°1446656
KangOl
Profil : pointeur
Posté le 23-09-2006 à 18:37:58  profilanswer
 

ca fonctionne sous IE a condition de mettre un href :o

n°1446657
gatsu35
Blablaté par Harko
Posté le 23-09-2006 à 18:38:48  profilanswer
 

KangOl a écrit :

ca fonctionne sous IE a condition de mettre un href :o


/me merite des coups de fouet car il n'a même pas fait gaffe à ce malheureux petit détails (alors que je fais gaffe à ca au boulot :/)
Merci Kang0l

n°1446688
benjones
Posté le 23-09-2006 à 23:43:38  profilanswer
 

A oui en enffet c'est mieu maintenant :p
 
Sinon, toujours rien par contre sur la propriété active :
 
a.bouton:active
{
       background:url(../img/bouton3g.gif) no-repeat left top;
       color:#ffffff;
       zoom:1;
}
 
a.bouton:active span
{
       background:url(../img/bouton3d.gif) no-repeat right top;
       color:#ffffff;
}
 
FF ok bien sur mais pas IE
 
Merci de votre aide ;)

n°1446690
benjones
Posté le 23-09-2006 à 23:46:05  profilanswer
 

Arf si sous IE "ça marche" mais simplement lors du clique sur la partie gauche du bouton :/
 
Sinon après le clique le bouton ne se remet pas toujours en position normale.
 
Merci !

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Bouton personnalisé

 

Sujets relatifs
Problème avec vb range et boutonBouton de chargement
Bouton quitterJSP afficher bouton (Filter)
[Résolu] Connaitre le bouton appuyé lors d'un drag&drop?[C#.Net] Bouton pour télécharger un fichier
Bouton VBA permettant Somme 2 colonnes en 1 pour impression...Faire une verification et passer a une page en cliquant sur un bouton
Un bouton personnalisé -> comment faire?[Java] Bouton personnalisé
Plus de sujets relatifs à : Bouton personnalisé


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR