Bonjour tous le monde,

Comme vous l'avez lu je cherche à mettre en place des balises input type=radio en les liant à des images, je voudrait donc que les petit boutons radio soit changer par des images (les images qui peuvent avoir également deux/trois apparences: chcked, non-checked et peut être aussi cursor hover en css).

J'aimerai réussir à le faire en css et html et peut être en java script.
Je voudrait faire la meme bande d'image que sur la page d'accueil de twitter mais avec des balise input type=radio.(sans les images qui reload boen sur pas de php). Smiley smile

Voici le html:
<!DOCTYPE html>

<head>
    <title>test choix recherche</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>

<!--JAVASCRIPT-->
<script type="text/javascript" language="JavaScript">
function ActionDeterminator()
{
if(document.myform.reason[0].checked == true) {
   document.myform.action = 'http://www.google.fr/search';
   document.myform.method = 'get';
   document.myform.name = 'q';
   }
if(document.myform.reason[1].checked == true) {
   document.myform.action = 'http://fr.search.yahoo.com/search';
   document.myform.method = 'get';
   document.myform.name = 'p';
   }
if(document.myform.reason[2].checked == true) {
   document.myform.action = 'http://www.bing.com/search';
   document.myform.method = 'get';
   document.myform.name = 'q';
   }
if(document.myform.reason[3].checked == true) {
   document.myform.action = 'http://www.facebook.com/search.php';
   document.myform.method = 'get';
   document.myform.name = 'q';
   }
if(document.myform.reason[4].checked == true) {
   document.myform.action = 'http://twitter.com/#!/search';
   document.myform.method = 'get';
   document.myform.name = 'q';
   }
if(document.myform.reason[5].checked == true) {
   document.myform.action = 'http://www.youtube.com/results?search';
   document.myform.method = 'get';
   document.myform.name = 'q';
  }
if(document.myform.reason[6].checked == true) {
   document.myform.action = 'http://www.dailymotion.com/relevance/search/';
   document.myform.method = 'get';
   document.myform.name = ' ';
   }
if(document.myform.reason[7].checked == true) {
   document.myform.action = 'http://www.deezer.com/fr/search/';
   document.myform.method = 'get'; 
   }
return true;
}
</script>
<!--JAVASCRIPT-->

<!--BARRE TITRE "DEBUT"-->
<div id="barre_titre">
    <a href="index.html">
    </a>
</div>
<!--BARRE TITRE "FIN"-->

<!--BARRE DE RECHERCHE et BOUTON. "DEBUT"-->
<div class="barre_recherche">
    <form name="myform" method="get" action="">     <!--ATTENTION, GARDER LE "FORM"-->
            <input class="text" type="text" name="q" size="25">
            <input class="bouton" type="submit" value="" onClick="return ActionDeterminator();">
</div>
<!--BARRE DE RECHERCHE et BOUTON. "FIN"-->

<!--CASE DE CHOIX "DEBUT"-->
<div id="cases" >
        <input type="radio" name="reason" id="case"><img src="images/case google.png"></input>
        <input type="radio" name="reason" id="case"><img src="images/case yahoo.png"></input>
        <input type="radio" name="reason" id="case"><img src="images/case bing.png"></input>
        <input type="radio" name="reason" id="case"><img src="images/case facebook.png"></input>
        <input type="radio" name="reason" id="case"><img src="images/case twitter.png"></input>
        <input type="radio" name="reason" id="case"><img src="images/case youtube.png"></input>
        <input type="radio" name="reason" id="case"><img src="images/case dailymotion.png"></input>
        <input type="radio" name="reason" id="case"><img src="images/case deezer.png"></input>
</div>
<!--CASE DE CHOIX "FIN"-->

        </form>     <!--ATTENTION, GARDER LE "FORM"-->
    </body>
</html>


et le css
#bouton{ 
    background: url(images/bouton.png) no-repeat; 
    width:60px; 
    height:40px;
    /*EFFET ENFONCEMENT*/
    position: relative; 
    left: 2px; 
    top: 2px;
}

body{
    color: black;
    background-color: #ffffff;
    background-image: url(images/fond.jpg);
    background-repeat: repeat-x;
    margin:250px 0px;
    padding:0px;
    text-align:center;
}

#cases{
    position:absolute;
    top: 355px;
}



Je vous remercie de votre aide par avance Smiley ravi
Modifié par cl9m9n7 (29 Aug 2011 - 19:55)
Modérateur
Bonsoir et bienvenue,

Avant de vouloir dynamiser ta page, valide d'abords, aies une bonne sémantique et une bonne syntaxe. Aussi, je ne te conseille pas d'utiliser html 5 pour le moment tant que tu n'as pas les rudiments.

Brûler les étapes, c'est aller droit dans le mur. Smiley cligne
Modifié par niuxe (29 Aug 2011 - 20:18)
niuxe a écrit :
Aussi, je ne te conseille pas d'utiliser html 5 pour le moment tant que tu n'as pas les rudiments.


Pour la partie HTML, quand tu commences, tu ne vas pas apprendre les différentes révisions du langage. Moi j'ai commencé par HTML 4, je me suis pas tapé HTML 1, puis 2, puis 3 avant de passer au 4.

C'est bizarre comme conseil, autant apprendre directement le langage actuel (du moins les parties qu'on peut utiliser).
Modérateur
L'avantage d'une syntaxe strict ça permet d'avoir plus de rigueur dans son code et d'éviter des énormités.... l'html 5 est trop permissif est laisse la porte ouverte à plusieurs bêtises (éléments chevauchant par exemple -> cf code cl9m9n7)

Après une page html 5 peut être faite très simplement en restant laxiste. J'ai viré les éléments suivants : html, head, body et la fermeture des éléments.


<!DOCTYPE html>
<title>titre de page</title>
<meta charset="UTF-8">

<h1>un titre 1er niveau
<p>un paragraphe 
<p>un paragraphe 
<p>un paragraphe 
<p>un paragraphe 
<p>un paragraphe 
<ul>
<li>une liste
<li>une liste


Suivant les spécifications "brouillonaire", c'est autorisé. Pourtant quand on affiche la page, on s’aperçoit que c'est du n'importe quoi ! Donc toujours garder la rigueur du html 4 strict ou xhtml trans ou strict, ça évite de faire des bêtises et avoir des bogues graphiques.
Modifié par niuxe (29 Aug 2011 - 22:57)
Bonsoir, bonjour,

Je sais que le code html que je vous ait fournis est un peu compliqué, mais c'est nécessaire.

J'aimerais donc savoir si:

- Est il possible de customiser ou de lier une image normal(48x48, pour mon exemple) a un bouton radio. Et donc que le bouton radio ne soit pas visible(remplacé par l'image). Smiley sweatdrop

- Et est t'il possible que dans mon code html je puisse fermer la balise <form name="myform"> au niveau des <input type="text"> et bouton submit pour ensuite la rouvrir au niveau des cases ( <input type="radio">) ? Smiley sweatdrop {cette deuxieme etape supprimerais les chevauchements => niuxe, mon code Smiley smile }.

Merci encore à vous tous pour votre aide en en espérant d'avantage.
Modifié par cl9m9n7 (29 Aug 2011 - 23:13)
niuxe a écrit :
L'avantage d'une syntaxe strict ça permet d'avoir plus de rigueur dans son code et d'éviter des énormités.... l'html 5 est trop permissif est laisse la porte ouverte à plusieurs bêtises (éléments chevauchant par exemple -&gt; cf code cl9m9n7)


J'y avait pas pensé (parce que je code toujours selon le mode strict même si le doctype est permissif), mais du coup je suis complètement d'accord avec ta remarque.
Modérateur
jb_gfx a écrit :
J'y avait pas pensé (parce que je code toujours selon le mode strict même si le doctype est permissif)[...]


+1 : Je suis dans le même cas que toi Smiley smile

cl9m9n7 a écrit :
- Est il possible de customiser ou de lier une image normal(48x48, pour mon exemple) a un bouton radio. Et donc que le bouton radio ne soit pas visible(remplacé par l'image).


Oui c'est possible. Il y a pas longtemps, j'ai fait un plug in pour un projet. Là, tel qu'il est, je sais pertinemment qu'il n'est pas accessible. En le retouchant judicieusement, il pourrait être.

cl9m9n7 a écrit :
- Et est t'il possible que dans mon code html je puisse fermer la balise <form name="myform"> au niveau des <input type="text"> et bouton submit pour ensuite la rouvrir au niveau des cases ( <input type="radio">) ? sweatdrop {cette deuxieme etape supprimerais les chevauchements => niuxe, mon code smile }.


non. Un élément form = un bouton submit. Mais alors comment fait on ? Simple, il suffit d'englober tous les champs dans l'élément form.


<form name="myform" method="get" action="#">     <!--ATTENTION, GARDER LE "FORM"--> <!-- get ?????-->

<!--CASE DE CHOIX "DEBUT"-->

<ul>

        <li><input type="radio" name="reason" id="caseA" value="a"><label for="caseA"><img src="images/case google.png" alt="texte alternatif explicite"></label></li>

        <li><input type="radio" name="reason" id="caseB" value="b"><label for="caseB"><img src="images/case yahoo.png" alt="texte alternatif explicite"></label></li>

        <li><input type="radio" name="reason" id="caseC" value="c"><label for="caseC"><img src="images/case bing.png"></label></li>

        <li><input type="radio" name="reason" id="caseD" value="d"><label for="caseD"><img src="images/case facebook.png" alt="texte alternatif explicite"></label></li>

        <li><input type="radio" name="reason" id="caseE" value="e"><label for="caseE"><img src="images/case twitter.png" alt="texte alternatif explicite"></label></li>

        <li><input type="radio" name="reason" id="caseF" value="f"><label for="caseF"><img src="images/case youtube.png" alt="texte alternatif explicite"></label></li>

        <li><input type="radio" name="reason" id="caseG" value="g"><label for="caseG"><img src="images/case dailymotion.png" alt="texte alternatif explicite"></label></li>

        <li><input type="radio" name="reason" id="caseH" value="h"><label for="caseH"><img src="images/case deezer.png" alt="texte alternatif explicite"></label></li>

</ul>
<div class="barre_recherche">

    

            <input class="text" type="text" name="q" size="25"> <!-- IL EST OU LE LABEL QUI VA BIEN !!!! -->

            <input class="bouton" type="submit" value="vas y">

</div>

<!--BARRE DE RECHERCHE et BOUTON. "FIN"-->

<!--CASE DE CHOIX "FIN"-->
</form>

J'ai corrigé toutes les énormités. Lis moi et tu verras, qu'il y a une vrai différence. Donc, avant de vouloir dynamiser ta page, passe par la case A, B, C, au lieu de vouloir aller directement à T, U, ... Quand tu auras plus de maturité dans le html, tu pourras essayer de dynamiser un peu ce code static. Smiley cligne
Je chipote mais je ne comprends pas trop cette mode de mettre les éléments de formulaire dans des listes… Smiley cligne
Modérateur
Patidou a écrit :
Je chipote mais je ne comprends pas trop cette mode de mettre les éléments de formulaire dans des listes… Smiley cligne


Tu peux, tu peux Smiley smile

Pour moi, on est bien dans une liste de champs. Donc, j'utilise l'élément approprié.

Là, je viens de monter une page et elle est dans cette optique. J'avoue que le code est un peu lourd (quoique), mais j'arrive à la plupart des visuels que je dois coder (99%).

Je préfère ça qu'à des div dans des div ou des p dans div pour avoir en fait la même structure dans le dom. Ainsi, je peux jouer sur les class, id et les éléments eux même tout en gardant une sémantique qui me semble adéquate.
Modifié par niuxe (30 Aug 2011 - 23:56)