Bonsoir à tous,

J'ai un problème d'affichage entre Chrome (Version 26.0.1410.64 m) et les autres navigateurs (IE8, 9 et 10, Firefox).

J'ai développé un extranet en ASP, et j'ai un tas de formulaires de saisie, j'ai donc plein de balises INPUT positionnées en CSS et définies en largeur avec SIZE et MAXLENGHT.

Le soucis c'est que les zones INPUT affichées par Chrome sont plus larges qu'avec les autres navigateurs et j'ai donc des décalages inesthétiques dans mes formulaires.

Voila un exemple du code :

<span title='Zone non modifiable' class='libelle1' >Code postal</span><input style='position:absolute;left:120px;' class='input_saisieread' tabindex='5' type='text'  id='bi_cp' tabulation='' obligatoire='0' onglet='page1' title='Code postal' value="" maxlength='5' size='5' readonly  />


Le css :

body {	
padding: 0;
font-family: "verdana";
font-size: 12px;
color: navy;
cursor: default;
width: 1000px;
margin: 0 auto 0 auto;
background-image: url('../images/bord.jpg'); 
background-repeat: repeat-x;
}

.input_saisieread {
margin-left: 0px;
margin-top: 1px;
text-align: left;
font-weight: normal;
color: navy;
border-top: 1px solid #c6ddf5;
border-left: 1px solid #c6ddf5;
border-bottom: 1px solid #7F9DB9;
border-right: 1px solid #7F9DB9;
background-color: white;
border-radius: 5px;
}


Voila le résultat dans CHROME :


Et le résultat sous IE10 mais aussi IE8, IE9 et Firefox :


Y a t il une solution pour s'en sortir ?

Merci d'avance pour vos réponses Smiley biggrin
Modifié par Razmote (20 Nov 2015 - 14:32)
Modérateur
Bonsoir,

1) Le chevauchement est dû à tous ces éléments positionnés en absolute. Cet manière de procéder est très mauvaise pour ce genre d'éléments et n'apporte que des problèmes.

2) l'attribut width demande au navigateur de gérer la taille pour afficher x caractères, cela dépend de la police utilisée (ce qui peut varier d'un système à un autre, même sur deux systèmes identiques), de la manière de le gérer et du calcul choisi pour estimer cette taille. Pour des tailles plus consistantes sur les inputs il vaut mieux utiliser css:

input {
   -webkit-box-sizing: border-box;
   -moz-box-sizing: border-box;
   box-sizing: border-box;
}
input.mon-input-machin {
  width: 180px;
}

comme ça on place (presque) tout le monde à la même enseigne, entre content-box et border-box.

3) Difficile de ne pas réagir ici devant les problèmes de ce code:
– Pas de labels: au lieu de span class="libelle1" utiliser <label for="bi_cp">
– Les attributs fantaisistes comme obligatoire ou onglet n'existent bien évidemment pas. Pour stocker des métadonnées dans des attributs, en HTML5 on peut désormais utiliser les attributs personnalisés sous la forme data-*, donc cela donnera data-tab="page1" au lieu de onglet="page1". (j'ai mis en anglais car ce genre de trucs en français me hérissent le poil! Mais ce n'est pas interdit Smiley langue )
– Les styles en ligne, si possible éviter, c'est une horreur pour la maintenabilité.
– font-family: "verdana" Et si on ne l'a pas?
– font-size: 12px; Sortez vos loupes!
Bonjour,

Merci pour votre réponse.

Sur le code suivant :

input {
   -webkit-box-sizing: border-box;
   -moz-box-sizing: border-box;
   box-sizing: border-box;
}
input.mon-input-machin {
  width: 180px;
}

Je ne trouve pas beaucoup de doc la dessus, est ce que ce ode est pris en compte avec les anciennes versions des navigateurs ?

J'avais essayé au debut de positionner en relative mais j'ai eu un problème de depassement de zone sur la droite, j ai donc tout fixé en absolute.

Ce qui me gène dans le WIDTH de chaque INPUT c'est de savoir quelle largeur je dois mettre, d autant que j'ai des dizaines de formulaires déja fait et qui ont un paquet de zones INPUT.
L avantage du SIZE c est que c'est beaucoup plus facile, il est vraiment regretable que seul Chrome fasse un affichage différent car avec IE 7 8 9 10, Safari et Firefox aucun soucis.
C'est pour ça que je cherchais une solution plus simple que le WIDTH.

kustolovic a écrit :

Difficile de ne pas réagir ici devant les problèmes de ce code:
– Pas de labels: au lieu de span class="libelle1" utiliser <label for="bi_cp">

Le fait de ne pas mettre de label n'est pas un problème, car comme vous le voyez sur la copie d'écran les zones sont fermées, seules les zones ouvertes ont un label, c'est pour cela que vous ne les voyez pas, mais quand les zones sont ouvertes le LABEL Figure bien.

kustolovic a écrit :

– Les attributs fantaisistes comme obligatoire ou onglet n'existent bien évidemment pas. Pour stocker des métadonnées dans des attributs, en HTML5 on peut désormais utiliser les attributs personnalisés sous la forme data-*, donc cela donnera data-tab="page1" au lieu de onglet="page1". (j'ai mis en anglais car ce genre de trucs en français me hérissent le poil! Mais ce n'est pas interdit Smiley langue )

Ces attributs fantaisistes me sont indispensables car ils apportent des fonctionnalités qui n'existent pas, comme la duplication de zone par exemple, le nom de l'onglet ou ils sont positionnés ou le controle de zone obligatoire.
Quand au genre de truc qui hérissent, c'est chacun ses gouts, heureusement que j'écris pas en chinois (pointe d'humour).
Ces attributs fantaisistes fonctionnent parfaitement avec tous les navigateurs (sauf peu être ceux qui date de la préhistoire) et c'est déja pas mal...
Est ce que data- est pris en compte dans les anciens navigateurs, si oui il m'est trés facile de corriger ?

kustolovic a écrit :

– Les styles en ligne, si possible éviter, c'est une horreur pour la maintenabilité.

C'est trés pratique de pouvoir associer des zones avec la meme classe et de rajouter un style pour les différencier, il n y a aucun problème pour la maintenabilité, pas plus que d'aller chercher dans un fichier la classe correspondante pour voir ses propriétés.

kustolovic a écrit :

– font-family: "verdana" Et si on ne l'a pas?

C'est un minimum non ? a moins que l utilisateur l'ai supprimé de son système, ce qui est alors embétant pour toutes polices...

kustolovic a écrit :

– font-size: 12px; Sortez vos loupes!

Comme vous le savez les sites professionnels, comme des extranet ou autres doivent fonctionner sous plusieurs résolutions, le minimum étant 1024 x 768 car pas tout le monde à une télé 16/9 de 115 cm en guise d'écran.
On ne sait jamais quel est la taille de l'écran de la personne qui se connecte.
Comment voulez vous avoir une police écran non loupe qui tienne dans cette résolution ?
Si la résolution est de 2048 x 1024 par exemple il suffit de faire un zoom de 135% dans le navigateur pour ne pas avoir besoin de loupe, l'inverse est beaucoup plus embetant.

Pour revenir sur mon problème il faut que je vous explique comment je procède.

J'ai développé un gestionnaire de menu permettant de gérer plusieurs applications, il est composé de plusieurs formulaires destinés à gérer les système, comme par exemple un gestionnaire de menu, un gestionnaire d'aide, un gestionnaire d'accès, un gestionnaire de paramètres, etc... en plus des applications spécifiques.
Voici une capture d'écran du menu :


Tous les formulaires qui sont crées appelent des fonctions pour générer des zones INPUTS de tous types (SELECT, CHECKBOX, TEXTAREA, etc...) et qui permettent d'avoir une maintenance trés facile en cas de problème.

Voici un exemple de code avec le champs Code postal comme dans l exemple :

    call zone_libelle("",bi_cp,"libelle1")
    call zone_input(0,"position:absolute;left:120px;",bi_cp,"")

qui génère :

<span title='Zone non modifiable' class='libelle1' >Code postal</span><input style='position:absolute;left:120px;' class='input_saisieread' tabindex='5' type='text'  id='bi_cp' tabulation='' obligatoire='0' onglet='page1' title='Code postal' value="" maxlength='5' size='5' readonly  />

Vous voyez que c'est trés facile pour la maintenance et les futures évolutions, car il me suffit de modifier les fonctions zone_libelle et zone_input, mais il y a aussi un tas d'autres fonctions comme la fermeture ou l ouverture des zones, la réinitialisation ou la duplication.

Je pourrais générer dynamiquement le WIDTH mais je ne sais pas comment faire.
J'ai essayé de faire un calcul avec le nombre de caractère (SIZE) multiplié par une largeur de pixel mais cela n'a rien donné ou alors je m y suis mal pris...

En tout cas merci pour votre aide, je vais étudier d'autres pistes car la seule astuce a été de soustraire un caractère de la balise SIZE si le navigateur est Chrome.

Bon dimanche.
Modifié par Razmote (20 Nov 2015 - 14:32)
Modérateur
Razmote a écrit :

Je ne trouve pas beaucoup de doc la dessus, est ce que ce ode est pris en compte avec les anciennes versions des navigateurs ?

http://caniuse.com/css3-boxsizing
Il faut une adaptation pour ie7, mais c'est le moins pire que j'ai trouvé pour le moment sur la taille des inputs.

Razmote a écrit :
J'avais essayé au debut de positionner en relative mais j'ai eu un problème de depassement de zone sur la droite, j ai donc tout fixé en absolute.

Et bien en fait, là, ni l'un ni l'autre irait parfaitement, utiliser les flux standards. Une bonne remise à niveau des bases ne ferait pas de mal: http://www.alsacreations.com/article/lire/533-initiation-au-positionnement-en-css-partie-1.html

Razmote a écrit :
Ce qui me gène dans le WIDTH de chaque INPUT c'est de savoir quelle largeur je dois mettre, d autant que j'ai des dizaines de formulaires déja fait et qui ont un paquet de zones INPUT.
L avantage du SIZE c est que c'est beaucoup plus facile, il est vraiment regretable que seul Chrome fasse un affichage différent car avec IE 7 8 9 10, Safari et Firefox aucun soucis.
C'est pour ça que je cherchais une solution plus simple que le WIDTH.

Je ne comprends pas, width permet de déterminer une valeur précise alors que size fait n fois quelquechose, alors que ce quelque chose dépend de pleins de facteurs, c'est en rien plus facile. Pour les pages déjà faites, c'est le problèmes inhérent à toute mise en forme par attribut: c'est in-maintenable.

Razmote a écrit :
Le fait de ne pas mettre de label n'est pas un problème, car comme vous le voyez sur la copie d'écran les zones sont fermées, seules les zones ouvertes ont un label, c'est pour cela que vous ne les voyez pas, mais quand les zones sont ouvertes le LABEL Figure bien.

Pourquoi donc se complexifier la vie en utilisant 2 cas, alors que de mettre toujours le label est plus simple et requis pour une bonne accessibilité.

Ces attributs fantaisistes me sont indispensables car ils apportent des fonctionnalités qui n'existent pas, comme la duplication de zone par exemple, le nom de l'onglet ou ils sont positionnés ou le controle de zone obligatoire.
Quand au genre de truc qui hérissent, c'est chacun ses gouts, heureusement que j'écris pas en chinois (pointe d'humour).
Razmote a écrit :
Ces attributs fantaisistes fonctionnent parfaitement avec tous les navigateurs (sauf peu être ceux qui date de la préhistoire) et c'est déja pas mal...

Alsacréations est une communauté d'apprentissages pour les standards du web, par pour se réjouir qu'un truc fonctionne même si c'est mal fait. data- fonctionne de la même manière sur les anciens navigateurs mais est au moins un standard actuel reconnu. il suffit juste de rajouter data- devant ces attributs.

Razmote a écrit :
C'est trés pratique de pouvoir associer des zones avec la meme classe et de rajouter un style pour les différencier, il n y a aucun problème pour la maintenabilité, pas plus que d'aller chercher dans un fichier la classe correspondante pour voir ses propriétés.

Les outils de développement présents sur tous les navigateurs modernes évitent de devoir aller chercher dans le fichiers. Pour la maintenabilité, c'est lorsque l'on se rend compte que l'on souhaite changer un truc et que l'on doit changer tous ses fichiers. Après selon les cas ça peut se discuter, et c'est un conseil plus qu'autre chose.

Razmote a écrit :
C'est un minimum non ? a moins que l utilisateur l'ai supprimé de son système, ce qui est alors embétant pour toutes polices...

Difficile de dire que Verdana est un minimum, alors que c'est une police propriétaire et payante. Il peut y avoir plein de raisons qui font que cette police ne soit pas disponible. Il faut toujours ajouter au moins une famille générique à sa sélection, c'est très facile à faire et ça permet d'éviter de se retrouver avec du times new roman…
font-family: "verdana", sans-serif;


Razmote a écrit :
Comme vous le savez les sites professionnels, comme des extranet ou autres doivent fonctionner sous plusieurs résolutions, le minimum étant 1024 x 768 car pas tout le monde à une télé 16/9 de 115 cm en guise d'écran.
On ne sait jamais quel est la taille de l'écran de la personne qui se connecte.
Comment voulez vous avoir une police écran non loupe qui tienne dans cette résolution ?

Arggh! Site professionnels ou pas le problème est le même. Je ne comprendrai jamais cette manière de voir: je fais une appli pro, donc l'utilisateur doit souffrir. Je fais une appli tout public, donc je vais soigner le confort de l'utilisateur.

Les solutions sont multiples:

– Mieux séparer les éléments par pages/onglets/etc.
– Lâcher du lest, le scroll ça existe et est bien plus agréable à utiliser que de tout compacter dans un petit espace.
– En 1024*768, que se passe-t-il si l'utilisateur a 4 barres de menu et un panneau déplié à gauche?
– Les super news à droite, bien sur l'accueil, mais pourquoi on perd cet espace dans l'appli alors qu'elles ne servent à rien?
kustolovic a écrit :

http://caniuse.com/css3-boxsizing
Il faut une adaptation pour ie7, mais c'est le moins pire que j'ai trouvé pour le moment sur la taille des inputs.


Et bien en fait, là, ni l'un ni l'autre irait parfaitement, utiliser les flux standards. Une bonne remise à niveau des bases ne ferait pas de mal: http://www.alsacreations.com/article/lire/533-initiation-au-positionnement-en-css-partie-1.html

J'avais déja lu cet article mais ça n'a rien changé à mon problème, la solution la plus facile pour moi c'est le positionnement en absolute dans un espace donné, seul le problème de SIZE pour Chrome m'a embeté, problème résolu en enlevant un caractère dans la valeur du SIZE si Chrome est le navigateur, ce qui est bizarre c'est meme avec un caractère de moins un champs déclaré en SIZE 5 contient bien 5 caractères et l'affichage est parfait sur tous les navigateurs, je cherchais juste à comprendre et trouver une solution plus flateuse.

kustolovic a écrit :

Je ne comprends pas, width permet de déterminer une valeur précise alors que size fait n fois quelquechose, alors que ce quelque chose dépend de pleins de facteurs, c'est en rien plus facile. Pour les pages déjà faites, c'est le problèmes inhérent à toute mise en forme par attribut: c'est in-maintenable.

Comment voulez vous déterminer la largeur d'un width avec une police à largeur variable ?
Faire des essais au pif sur chaque INPUT jusqu'a ce que ça cadre ?
Le SIZE permet d'éviter cette contrainte.
J'utilise PSPAD pour faire du développement et avoir un code propre, peut être que c'est plus facile avec un outil Wisiwyg, chacun ses choix...

[quote=kustolovic]
Pourquoi donc se complexifier la vie en utilisant 2 cas, alors que de mettre toujours le label est plus simple et requis pour une bonne accessibilité.

Je ne me complique pas la vie, j'ai un générateur d INPUT qui le fait pour moi et puis j'aime bien ne pas utiliser ce qui ne sert à rien.

kustolovic a écrit :

Alsacréations est une communauté d'apprentissages pour les standards du web, par pour se réjouir qu'un truc fonctionne même si c'est mal fait. data- fonctionne de la même manière sur les anciens navigateurs mais est au moins un standard actuel reconnu. il suffit juste de rajouter data- devant ces attributs.

Qu'a cela ne tienne je vais rajouter data- devant mes attributs dans mon générateur d INPUT.

kustolovic a écrit :

Les outils de développement présents sur tous les navigateurs modernes évitent de devoir aller chercher dans le fichiers. Pour la maintenabilité, c'est lorsque l'on se rend compte que l'on souhaite changer un truc et que l'on doit changer tous ses fichiers. Après selon les cas ça peut se discuter, et c'est un conseil plus qu'autre chose.

Je me méfie et je suis pas le seul de ses outils de développement dit moderne, je programme tout à la main avec PSPAD et mon code est trés propre, je pourrais vous montrer un exemple trés parlant, j'ai utilisé pas mal d outil, comme Dreamweaver et pour moi le code généré est une horreur.

kustolovic a écrit :

Difficile de dire que Verdana est un minimum, alors que c'est une police propriétaire et payante. Il peut y avoir plein de raisons qui font que cette police ne soit pas disponible. Il faut toujours ajouter au moins une famille générique à sa sélection, c'est très facile à faire et ça permet d'éviter de se retrouver avec du times new roman…
font-family: &quot;verdana&quot;, sans-serif;


Je viens de rajouter votre CSS dans mon entete de page.
Par contre Verdana fait bien parti des polices les plus utilisés sur le Web, c'est donc bien un minimum.
http://onfaitduweb.com/accessibilite/polices-standards-pour-le-web-web-safe-fonts/
http://edu.ca.edu/css-les-polices-quelle-famille
Pour ce qui est du payant, vous parlez surement de l'achat du système d'exploitation.

kustolovic a écrit :

Arggh! Site professionnels ou pas le problème est le même. Je ne comprendrai jamais cette manière de voir: je fais une appli pro, donc l'utilisateur doit souffrir. Je fais une appli tout public, donc je vais soigner le confort de l'utilisateur.

Les contraintes envers les utilisateurs ne sont surement pas les mêmes.
Quand des utilisateurs se connectent sur Darty ou Leboncoin, seul le contenu les interessent.
Quand vous etes dans un environnement professionnel, la vous avez des comptes à rendre aux personnes qui utilisent tous les jours votre application.
Dans mon cas nous avons à saisir des centaines d'ordres d'assurance toute la journée, un formulaire de saisie est fait pour ça, vous croyez que les gens vont s amuser à jouer sur les ascenseurs pour découvrir des parties masquées ?
La c'est simple ils partent de la 1ere zones de saisie et descendent naturellement sur la derniere et valident, aucune manipulation de souris, c'est trés rapide, d'autant qu'avec la fonction de dupplication, quand les ordres se ressemblent, il suffit qu'ils fassent TAB pour duppliquer le contenu de l'écran précédent, on les soigne aux petits oignons.

kustolovic a écrit :

Les solutions sont multiples:

– Mieux séparer les éléments par pages/onglets/etc.
– Lâcher du lest, le scroll ça existe et est bien plus agréable à utiliser que de tout compacter dans un petit espace.
– En 1024*768, que se passe-t-il si l'utilisateur a 4 barres de menu et un panneau déplié à gauche?

Voir réponses ci dessus.

kustolovic a écrit :

– Les super news à droite, bien sur l'accueil, mais pourquoi on perd cet espace dans l'appli alors qu'elles ne servent à rien?


L'accueil ne sert qu'a controler l'accès des utilisateurs, ce n'est pas un site vitrine.
Si vous aviez regardé attentivement vous auriez vu que chaque cadre d'info à son importance.
Il y a l'Information client, ce sont des infos destinées uniquement au client qui est connecté.
L'actualité dans le domaine spécifié.
Et l'information Extranet destiné à tous les utilisateurs du système qui donnent des infos sur les améliorations et autres astuces du site extranet.

Merci d'avoir pris le soin de répondre à mes questions.

Je ne vais pas pouvoir continuer cette interessante conversation car je suis débordé en ce moment et je cherche du temps.

Passez une bonne journée.

Cordialement
Modifié par Razmote (13 May 2013 - 10:35)