2010-03-23 4 views
2

Je suis confronté à des problèmes avec la taille de la zone de texte lors de veiwing dans Fire Fox 3.6. < classe d'entrée = "dat" name type = "text" = dimension "rejection_reason" = "51" maxlength = "70" onchange = "on_change();"> le styleTaille de la zone de texte est différente dans IE 6 et FireFox 3.6

est aussi: .dat { font famille: verdana, arial, helvetica; police-taille: 8pt; police-poids: gras; text-align: à gauche; alignement vertical: milieu; Couleur de fond: Blanc; }

La taille de la zone de texte dans Fire Fox est légèrement inférieure à IE6.

Vous ne savez pas pourquoi IE6 et FireFox affichent une zone de texte de taille diff.

Répondre

2

Essayez de spécifier la largeur de votre CSS. Si cela reste brisé, vous pouvez ajouter un astérisque à l'avant du mot de largeur comme une deuxième entrée et il s'appliquera uniquement dans IE6.

.dat 
{ 
    width: 100px; 
    *width: 105px; -- or whatever makes it look correct 
} 

EDIT: Merci pour la mise à jour sur le caractère spécial.

+2

Pour IE uniquement, le hack CSS est *, vous devez donc écrire width: 100px; * largeur: 105px; S'assurer que le hack IE est APRÈS le style réel. – Kieron

+0

J'ai beaucoup de boîtes de test dans mon application et partout la taille est codée en dur pour chacune des zones de texte. J'essayais de trouver une formule qui peut me donner la taille équivalente en px ou em qui est définie avec l'attribut size, de sorte que je puisse utiliser css. – Anurag

2

Vous n'avez pas spécifié sa largeur juste que vous voulez qu'il prenne 51 charecters via l'attribut size. Je suggère de supprimer l'attribut Size = "51" et d'ajouter un style de largeur: 666px;

EDIT: après votre commentaire Tout d'abord parce que vous pouvez ne signifie pas que vous devriez. La manière corrète de résoudre cela est de changer < < input type = "text" > pour utiliser une classe css ou une largeur css pour définir leur largeur.

Cependant, le jQuery suivant ajoutera un style de largeur à chaque type d'entrée = texte qui a un attribut de taille

jQuery(       // on Document load 
    function($){     // run this function 
    $('input[type=text][size]') // find all input type=text with a size attr 
      .each(     // for each element found 
     function(index, Element){ // run this function 
      var size = $(this).attr('size'); // get size attrubte value 
      $(this).width((size * 0.6)+"em"); // set the css width property to 
     });         // a nasty huristic 
    } 
); 

Or, puisque ces entrées d'effets uniquement avec la taille spécifiée, que vous touchez chaque page que vous pouvez supprimer le taille attr et le remplacer par la taille Css, donc eventuly vous n'aurez pas besoin de ce script.

+0

J'ai beaucoup de boîtes de test dans mon application et partout la taille est codée en dur pour chacune des zones de texte. J'essayais de trouver une formule qui peut me donner la taille équivalente en px ou em qui est définie avec l'attribut size, pour que je puisse utiliser css. – Anurag

1

L'attribut @size donne une taille en caractères. Cependant, à moins que vous n'utilisiez des polices à espacement fixe, la taille d'un caractère lui-même n'est pas bien définie. De plus, différents moteurs de rendu peuvent utiliser des règles différentes pour l'espacement des caractères et/ou le crénage. Donc, à la fin, l'attribut n'est plus qu'un vague indice pour le navigateur.

Avez-vous essayé quelque chose comme style = "width:51em;" à la place? Je ne l'ai pas testé, mais la propriété width est bien supportée, donc j'espère que cela fonctionnera. Vous pouvez également utiliser des unités absolues (pixels) si vous voulez une taille plus précise.

Espérons que cela aide.

+0

Je ne pense pas que vous voulez faire cela au lieu de mais en plus de. Ma compréhension de l'attribut size dans ce cas est qu'il ne s'applique pas du tout à la taille de la zone de texte mais simplement au nombre de caractères que l'entrée acceptera. Je pense que c'est totalement indépendant de la taille physique de la zone de texte. De W3Schools (http://www.w3schools.com/tags/att_input_size.asp): 'Pour et , l'attribut size définit le nombre de caractères devrait être visible. Pour tous les autres types d'entrée, la taille définit la largeur du champ d'entrée en pixels. ' – Todd

+0

Chaque approche (@size vs CSS largeur) définit la taille de la boîte dans des termes différents. Puisqu'ils définissent tous les deux la même chose, un seul d'entre eux peut réellement prendre effet, remplaçant l'autre. Utiliser les deux laissera au navigateur le soin de décider lequel a la priorité, et c'est pourquoi je l'ai suggéré en remplacement. Si CSS a préséance sur tous les navigateurs pertinents, il n'y a pas de mal à avoir les deux définitions, mais il n'y a pas de gain non plus. –

+0

Merci pour votre réponse !! J'ai beaucoup de boîtes de test dans mon application et partout la taille est codée en dur pour chaque zone de texte. J'essayais de trouver une formule qui peut me donner la taille équivalente en px ou em qui est définie avec l'attribut size, pour que je puisse utiliser css. – Anurag

2

Avec une explication plus complète, que je devais donner à un manager;

IE6 a été construit autour de 2000, et ignoré plusieurs normes Web importantes à la fois. IE6 était en quelque sorte une «leçon apprise»; IE7 est mieux sur le respect de ces normes, et IE8 est encore mieux. Firefox a été construit autour de Netscape/Mozilla, et surtout, ils ont suivi la norme publique autant qu'ils le pouvaient. Firefox se comporte en grande partie comme Safari, Chrome, Opera et les tonnes de petits navigateurs sur le marché. Donc, pourquoi soutenir la norme, au lieu de IE, qui est le grand enfant sur le bloc? Presque tous nos clients utilisent IE!

Réponse: Comme IE se déplace lentement vers la norme, aussi. Si nous supportons Firefox, IE8 est facile, et nous avons probablement IE7 aussi bien avec presque aucun changement. IE6 est la mouche dans la pommade ici.

Si nous soutenons IE6 - la proposition originale - alors IE7 est un cas particulier, IE8 est un autre cas particulier, Firefox est un cas particulier, et ainsi de suite.

Si nous pouvons encourager les utilisateurs à s'éloigner d'IE6, c'est notre meilleur scénario. Je crois que Microsoft a officiellement mis fin à tout le soutien - y compris les correctifs de sécurité - pour IE6 lorsque Server 2003 SP1 a quitté le support, April 2009. Google a cessé de supporter IE6 entièrement, par exemple, en informant poliment les utilisateurs qu'ils doivent mettre à niveau "pour l'expérience complète du site". Des sites comme IE6NoMore offrent une fenêtre CSS assez lisse pour ceux qui exécutent IE6, en leur donnant quelques options de mise à niveau. En attendant, puisque les clients l'utilisent, IE6 est là pour rester, et il est plus facile - et le plus facile à maintenir - de se conformer aux normes, et de retourner à IE6 jusqu'à ce que cela soit fait.

Questions connexes