28173 sujets

CSS et mise en forme, CSS3

Pages :
(reprise du message précédent)

Ah ben çà...

LA solution au problème, c'est quand même beau le partage !

Merci pierre 6020

Je suis tellement content de cette solution que je montre le résultat, enfin presque parfait ! :
Firefox (tout petit padding de rien du tout, même si le padding = 0)
upload/7902-firefox.jpg
IE (plus de padding du tout !)
upload/7902-ie.jpg

Merci encore !
Modifié par DrumSHoTS (19 Sep 2006 - 16:26)
Modérateur
Hello,

Même si j'arrive après la bataille, je reviens un peu sur ce sujet...
mpop a écrit :
Les liens de validation via une fonction javascript, non.
J'aurais dit Javascript intrusif...
a écrit :
Disons que Javascript n'est pas le meilleur ami des lecteurs d'écran, par exemple. Je ne sais pas si certaines fonctions « classiques » servant à créer des liens ou valider des formulaires sont prises en compte, mais il y a fort à parier que cela risque de poser des problèmes.
Dans la mesure où on protège les méthodes utilisées et vu que les lecteurs d'écrans ont fait quelques progrès, je pense qu'on peut faire ceci Smiley smile :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
   <head>
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
      <title>Mise en forme d'un bouton submit</title>
      <style type="text/css" media="screen,projection">
         @charset "iso-8859-1";
         @import "style.css";
      </style>
      <script type="text/javascript" src="form.js"></script>
   </head>
   <body>
      <form action="http://localhost/search.php" method="get">
         <div>
            <label for="recherche">Rechercher :</label>
            <input type="text" name="recherche" id="recherche" size="25" />
            <input type="hidden" name="page" id="page" value="recherche" />
            <input type="submit" value="Envoi" />
         </div>
      </form>
   </body>
</html>


form.js

var oClass =
{
   _Init: function()
   {
      if( !document.createElement ||
          !document.getElementsByTagName ||
          !document.createTextNode ) return false;

      var oInput = document.getElementsByTagName('input');
      var iI = oInput.length - 1;

      for(iI; iI >= 0; iI--)
      {
         if(oInput[iI].getAttribute('type').toLowerCase() != 'submit')
         {
            continue;
            i--;
         }

         var sForm = 'document.forms[0]';
         var oNewSubmit =
         oClass._CreaLink(
            'javascript: ' + sForm + '.submit()',
            oInput[iI].getAttribute('value')
         );

         oInput[iI].parentNode.replaceChild(oNewSubmit, oInput[iI]);
      }
      return true;
   },

   _Connect: function(elm, evType, fn, useCapture)
   {
      if(elm.addEventListener)
      {
         elm.addEventListener(evType, fn, useCapture);
         return true;
      }
      else if(elm.attachEvent)
      {
         var r = elm.attachEvent('on' + evType, fn);
         return r;
      }
      else
      {
         elm['on' + evType] = fn;
         return true;
      }
   },

   _CreaLink: function(href, txt)
   {
      var oTmpLink = document.createElement('a');
      var oTmpTxtLink = document.createTextNode(txt);
      oTmpLink.setAttribute('href', href);
      oTmpLink.appendChild(oTmpTxtLink);
      return oTmpLink;
   }
};
oClass._Connect(window, 'load', oClass._Init, false);
Merci Koala64 pour la solution avec du javascript (t'avais déjà la solution ou t'as fait çà comme çà en direct ?), je vais la tester, même si je pense que je vais opter pour la solution précédente (classique sans javascript).

Pour xitag, le code (si c'est celui-ci que tu demandes, tu n'as pas précisé) :
<form action="http://adresse/page" method="get">
<p><span>
	<label for="recherche">Rechercher :</label>
	<input type="text" name="recherche" id="recherche" value="" size="25" />
	<input type="hidden" name="page" id="page" value="recherche" />
	<input type="submit" name="submit" id="submit" value="Rechercher" />
</span></p>
</form>

CSS :
#submit { width: auto;
margin: 0; 
padding: 0; 
background-color: #couleuradefinir; 
color: #couleuradefinir; 
overflow: visible; }

A bientôt.
Modifié par DrumSHoTS (20 Sep 2006 - 09:38)
Bonjour !

J'ai un problème similaire à celui de Drumshots : il faut que je réduise au maximum la largeur des boutons de mon formulaire.
En particulier parce que le pseudo-padding généré automatiquement par IE est proportionnel au nombre de caractères de l'intitulé du bouton. Sachant que j'ai parfois des libellés plutôt longs, j'arrive à des abherrations comme celle-ci : upload/8738-boutondiffo.jpg

J'ai appliqué la méthode indiquée par pierre6020, et mon problème est presque résolu...

Sauf que, sur une de mes pages, les boutons sont placés dans une case d'un tableau. (Ne m'insultez pas tout de suite : je ne suis pas un afficionado de la mise en page en tableaux, c'est juste qu'il s'agit de données dynamiques, que l'utilisateur est amené à modifier Smiley smile ).
Du coup, le problème est le suivant : l'écart généré par IE ne déforme pas le bouton (grâce à la propriété overflow), mais l'espace est tout de même présent dans la case td.

Y a-t-il un moyen de se débarasser de cet espace en trop ?
Bonjour,

il va falloir dire à IE que la largeur est de 0, il l'agrandira ensuite à la bonne taille (pas les autres navigateurs, qui eux vont réellement appliquer la taille).

Tu peux par exemple utiliser :
width: auto !important;
width: 0;

Ou :
_width: 0;

Mais le mieux est encore d'utiliser des commentaires conditionnels pour ne pas avoir de mauvaise surprise par la suite.
Modifié par pierre6020 (29 Sep 2006 - 11:22)
Pages :