28173 sujets

CSS et mise en forme, CSS3

Rebonjour les gens, dans un autre poste un peu plus bas, je lance une recherche sur un leger probleme d'affichage de mon site sous IE.

Plus précisemment ces pages :
http://www.aj-crea.com/presentation_ajcrea.asp
et
http://www.aj-crea.com/page_accessibilite.asp

Schant comme je l'ai déja précisé que le seul élément changeant d'une page à l'autre est le "contenu".
J'ai décidé de décortiquer la page accessibilité car elle a moins de contenu.

Et là, je suis sur le hulk, mais franchement.
Je vous explique, voici le contenu du "contenu" :

<div id="contenu">
		<p id="ariane"><a name="lecture" href="&nbsp;"></a>Vous êtes ici : <a href="default.asp" title="Retour vers la page d'accueil AJcréa">accueil</a> > politique d'accessibilité</p>
<h2>Politique d'accessibilité :</h2>
<p>Soucieux d'offrir au plus grand nombre l'accès à l'information, AJcréa met en place une politique d'accessibilité la plus complète possible.
Si vous avez des questions ou des suggestions concernant l'accessibilité du site, n'hésitez pas à <a href="mailto:admin@aj-crea.com" title="Envoi d'email">me contacter</a>, tout retour est le bienvenu pour améliorer mon service.
</p>
<h3>Liens d'évitement : </h3>
<p>En haut de page se trouvent une série de liens qui permettent un accès plus aisé à l'information
 (<em>Sur les pages ou l'ensemble du contenu apparait dans la même fenêtre, les liens "aller au contenu" et "aller au menu" n'auront pas d'effet visuel direct, mais ils permettent à un navigateur "texte" de "sauter" les informations non voulues</em>).</p>
<h3>Raccourcis d'accès clavier :</h3>
<p>Pour pouvoir naviguer le plus simplement possible avec le clavier, une série de raccourcis ont été mis en place : </p>
<ul>
<li>Aller directement à la page de politique d'accessibilité :<br /> Alt + Shift + 0</li>
<li>Aller directement au contenu : Alt + Shift + 2</li>
<li>Aller directement au menu principal : Alt + Shift + 3</li>
<li>Retourner à la page d'accueil : Alt + Shift + 1</li>
<li>Aller directement aux coordonnées d'AJcréa : Alt + Shift + 5</li>
<li>Envoyer un email à AJcréa : Alt + Shift + 9</li>
</ul>
<p>N'oubliez pas de valider votre choix avec la touche entrée sous Internet Explorer.</p>
<p>Vous pouvez également naviguer de lien en lien sur les pages en utilisant la touche de tabulation (<em>touche avec 2 flêches sur le côté gauche de votre clavier au dessus de la touche de verou des majuscules</em>).</p>
<h3>Pour un Web accessible : </h3>
<p>Soutenez l'action pour <a href="http://www.web-pour-tous.org/soutien_loi_numerique/" title="Lien externe - Pour un web accessible maintenant">"l'accessibilité numérique"</a>, affichez un des logos sur vos sites internet : <br />
 <a href="http://www.web-pour-tous.org/soutien_loi_numerique/" title="Pour un web accessible maintenant">  <img src="images/accesslogo2.png" alt="Pour un web accessible maintenant" style="border:0" width="89" height="31" />  </a>
</p>		
</div>


Oui vous ne rêvez pas le fil d'ariane est ecrit en dur, comme je vais surement passer d'asp à php d'ici pas longtemps je n'avais pas envie de perdre du temps à dev un truc.

Bref, revenons à nos moutons.
J'ai procédé ainsi, retiré les blocs les uns après les autres en rafraichissant ma page pour voir si ça changeait quelque chose, et ce fut le cas.

Je supprime cette partie :
<h3>Liens d'évitement : </h3>
<p>En haut de page se trouvent une série de liens qui permettent un accès plus aisé à l'information
 (<em>Sur les pages ou l'ensemble du contenu apparait dans la même fenêtre, les liens "aller au contenu" et "aller au menu" n'auront pas d'effet visuel direct, mais ils permettent à un navigateur "texte" de "sauter" les informations non voulues</em>).</p>


Et youhouhhhh le decallage disparait.

Je recolle l'ensemble et decortique encore un poil plus :
- Je retire le titre <h3>Liens d'évitement : </h3> seul et ça fonctionne, tout se cale.
- Je laisse le titre et retire le paragraphe, idem.

La je commence à suer à grosses goutes mais je recole l'ensemble et continue mon analyse :
- Je retire la partie entre <em></em> et ça marche...grand moment de solitude.
- Je retire juste les tags <em></em> en laissant le texte et ça fonctionne toujours...je vais chercher une corde pour me pendre.

Pourquoi une corde? parce que si vous regardez bien le contenu global, il y'a une autre partie sous <em></em> un peu plus bas, qui elle ne pause aucun problème.

Il semble qu'il y'ait, par je ne sais quel miracle une interaction entre l'ensemble titre/paragraphe qui contient des <em> qui entraine un comportement étrange sous IE du moins c'est ce que j'ai cru.

Mais j'ai poussé l'analyse, je suis teigneux, je compare cette partie en <em> avec celle plus bas dans la page, bon ok celle ci est plus longue, je la raccourcis pour voir.

Tiens ça marche, ahahhh content de moi j'ai trouvé...et bien non, c'est pire.
J'en viens à soupçonner un truc pas possible, genre croiser les effluves un truc dans le genre.

Exactement. un truc dans le genre, je pousse le vice à retirer les "" autour d'aller au contenu qui se trouve en bout de ligne, et rebingo, ça marche...

Je me dis, tiens IE doit considérer dans sa logique bien propre à lui que un ensemble de mots entre "" ne peut pas être séparé sur 2 lignes, etrange mais ce serait un début de solution...
Comme je suis teigneux (je l'ai déja dit? ) Smiley cligne pour rire, je rajoute une lettre au debut de aller et à la fin de contenu...et là rebelotte, le bug reapparait...

Bon qui a une poutre? J'ai déja ma corde.

Surtout que si je vais voir ma page de présentation, il n'y a pas de "" dans le texte.

Bilan pour moi, il semble que les balises <em> aient un effet sur la gestion des retours à la ligne sous IE, me demandez pas pourquoi, je ne fais que constater.
D'ailleurs si quelqu'un a déja été confronté au problème et à une explication à donner, je suis preneur.

Aymeric, qui va se ce pas boire un double Oban.

PS : ahh oui, pour la petite histoire, si le bug disparaissait quand je retirais le titre au dessus du paragraphe, c'est que pour je ne sais quelle raison, IE "calle" mes paragraphes au niveau du titre, au lieu d'utilise leur style complet...encore un mystère.
Modifié par AymericJ (04 May 2006 - 16:45)
Une question simple : dans quel but utilises-tu le tag <em> ?

Bien que les navigateurs l'affichent en italique, le tag <em> a pour sémantique de mettre en emphase une portion de texte. Si ton but est uniquement d'afficher le texte en italique, le tag <i> reste tout à fait valable, même en XHTML Strict (j'en veux pour preuve qu'il est toujours dans les DTD XHTML 1.0).

Essaie de remplacer tes <em> par des <i>, peut-être que ...
Modifié par Ladytron (04 May 2006 - 16:14)
Si ça fait pareil avec <em> et <i> ... Le bug doit venir directement d'IE (encore un bug à corriger pour Microsoft).

Le problème avec IE, c'est qu'on ne sait pas toujours d'où viennent les bugs, ni comment, ni pourquoi, ni comment les résoudre Smiley confus
Salut AymericJ,

Un bogue intéressant, surtout si tu trouves l'explication. D'ici là, tu peux toujours recourir à "font-style: italic/oblic;", si les polices le permettent.

(C'est pas le bon sujet mais... joli travail sur l'agrandissement du site qui suit celui du texte.) Smiley smile
Modifié par Smiley neko (04 May 2006 - 16:37)
Alors j'ai bien un début d'explication, mais là ce ne sont que des extrapolations sur la façon dont IE interprète les polices.

Par defaut, en simplifiant, une police de caractere a un rapport hauteur/largeur définit par lettre.
Exemple de police de caractere : verdana.

Illustration :
http://www.aj-crea.com/images/fonts/abase.png
Bon c'est pas du verdana mais on va faire comme si.
Le bord noir represente le "volume" de la lettre.

Lorsque l'on utilise une fonte d'une police de caractere, celle ci a également son rapport hauteur/largeur de definie.

Exemple de fonte de verdana : verdana italique.
Illustration
http://www.aj-crea.com/images/fonts/a-vrai-italique.png

En codage html, on utilise la balise <em> ou <i> pour "simuler" l'italique, on n'utilise pas la fonte italique exacte, du moins je ne pense pas, si quelqu'un a une certitude là dessus, merci de confirmer ou d'infirmer ma reflexion.

En clair, au lieu d'avoir un beau rectangle ou carré qui définit l'emplacement pris par la lettre dans la page, on a un rectangle "penché", un parallélogramme non rectangle.

Ce qui PEUT se passer avec IE (pour exemple), c'est qu'il se base sur la "base" de la lettre pour determiner la largeur de la "ligne" pour un retour à la ligne ou non.
Mais, au niveau de la "taille" réelle de la lettre, elle a été largement augmentee, et donc prend un espace plus grand dans le bloc, d'ou peut etre se dacalage, entre la "ligne" et le "bloc".

Illustration :
http://www.aj-crea.com/images/fonts/faux-italique.png

Je sais pas si j'ai été clair, si j'ai le temps je cree 2 ou 3 images pour exprimer ce que je veux dire.

A savoir que c'est un problème fréquemment rencontré en imprimerie avec les gens qui "italisent" ou "boldisent" leurs polices en utilisant les options des logiciels et non pas les fontes faites pour ça.

PS :
neko a écrit :
...
(C'est pas le bon sujet mais... joli travail sur l'agrandissement du site qui suit celui du texte.) Smiley smile


Merci, ça fait plaisir mais... Va bosser dans le bon sujet feignasse! Smiley cligne

Bon, le guatemala ça a l'air pas mal en cette saison...run run run...
Modifié par AymericJ (04 May 2006 - 17:34)
a écrit :
Aymeric > Rebonjour les gens, dans un autre poste un peu plus bas, je lance une recherche sur un leger probleme d'affichage de mon site sous IE.

Je n'ai pas trouvé cet "autre post un peu plus bas". Il aurait mieux valu redire ici quel était exactement le problème. J'ai cru deviner qu'il s'agissait d'une (légère) différence d'affichage entre FireFox (FF) et MS Internet Explorer (MSIE). Cette différence d'affichage concerne un passage en italique. Ayant déjà eu l'occasion de rencontrer ce pb. j'ai trouvé la solution, qui consiste à affecter au passage en question le paramètre word-wrap:normal, propre à MSIE.
Ainsi, le code suivant donnera le résultat souhaité, c-a-d identique sous FF et MSIE.
<p style="word-wrap:normal">En haut de page se trouvent une série de liens qui permettent un accès plus aisé à l'information
 (<em>sur les pages ou l'ensemble du contenu apparait dans la même fenêtre, les liens aller au contenu et aller au menu n'auront pas d'effet visuel direct, mais ils permettent à un navigateur "texte" de "sauter" les informations non voulues</em>).</p>

Bien entendu, on pourrait appliquer le style "word-wrap:normal" pas seulement à un paragraphe mais à une <div> ou toute autre partie de la page HTML.
Légende pour les captures d'écran:
1. Firefox (sans word-wrap)
2. MSIE (sans word-wrap)
3. MSIE (avec word-wrap:normal)
upload/2872-48972458797.jpg
Bonjour Jojojr,

Je viens de tester le word-wrap :


em
{
	word-wrap: normal;
}


Effectivement, ça marche et plutot bien, mais comme un malheur ne vient jamais seul, ce n'est pas valide w3C. Arglllllll.
Pourtant ça semblait une bonne solution.
Si tu tiens à assurer la validité W3C de ton code CSS (ce que je te conseille, quelque part), tu peux utiliser une méthode courante : la méthode à 2 feuilles de style.

J'explique: à l'heure actuelle, 99,9% des navigateurs utilisés implémentent correctement les standards W3C (dont CSS2). Des navigateurs comme Firefox/Mozilla, Opera8, MSIE6, Safari/Konqueror, etc ... Seul MSIE6 pose un réel problème car son support des CSS2 est relativement limité (pour ne pas dire "bâclé").

Délors, on peut donc diviser les CSS en deux parties :
- Une CSS "normale complète" pour tout le monde (support inégal ou pas de CSS)
- Une CSS spécifique à IE, contenant des "hacks" destinés à contourner ses bogues. Cette CSS peut également servir à des hacks pour MSIE5/Mac.

La seconde CSS doit être incluse UNIQUEMENT si le navigateur est IE. Utiliser un langage de script pour ces tests (PHP ou ASP, peut-être ECMAscript).

Ainsi, ton code CSS de base sera valide W3C et tes pages s'afficheront à peu près pareil sur Firefox et IE Smiley lol
Modifié par Ladytron (05 May 2006 - 10:23)
Helo ladytron,

En fait mon site est déja 100% valide, et actuellement, je préfère travailler "à la dure" sans hacks et sans feuilles de style spécifiques à tel ou tel navigateur.

Le problème que j'ai rencontré est un cas particulier qui est apparu à cause d'un ensemble de "choses" (a défaut d'un autre nom) qui ont ammené à un résultat particulier.

Truc tout bête, si je retire une lettre à la ligne incriminée, tout revient en place.

Je continue à chercher une solution "générique" et compatible à 100%.
Il te sera difficile de trouver une solution "générique", AymericJ. Dès qu'on fait du web, on doit s'amuser à faire un truc qui marche (à peu près) partout.

Dans le pire des cas, tu peux préciser quelque part sur ton site qu'il s'affichera bien mieux sur un navigateur respectueux des standards, comme Firefox ou Safari (pour n'en citer que deux).

Si MSIE avait une meilleur implémentation de CSS2, nous n'aurions pas à faire face à ce style épineux de problème Smiley cligne
Modifié par Ladytron (05 May 2006 - 11:36)
J'ai déja dit que j'étais teigneux?

Bon, j'ai un début de solution. Smiley lol

Partant de ma théorie sur la "déformation" de bloc lettre, j'ai testé plusieures directions.

Tenter d'imposer au navigateur de prendre la fonte verdana italique à la place de verdana, sans résultat.

Tenter d'utiliser une vieille bidouille css en font-stretch: narrower ; forcement ce n'est plus reconnu. Smiley smile

Donc me restait 2 possibilités :
1 - réduire l'espace entre les lettres avec un :
em
{
	 letter-spacing: -0.1em;
}


Les decallages disparaissaient, mais le texte devenait indigeste, j'ai donc étendu la chose en remplaçant le letter-spacing par :

em
{
	 word-spacing: -0.1em;
}


Disparition des decallages, le texte reste très lisible, on voit bien une difference, mais cela ne nuit pas à la lisibilité, c'est donc jusqu'a preuve du contraire ce que je vais utiliser, parce que en plus, c'est générique.

En un mot : ZONGOOOOOOOOOOO!!! (ceux qui connaissent comprendront, hein marvin le rouge? Smiley cligne ).

Aymeric, content.
Modifié par AymericJ (05 May 2006 - 12:24)
AymericJ a écrit :
Du coups je sais pas si il faut que je mette [Resolu] Smiley lol


Malheureusement je crois que non Smiley sweatdrop

Je suis confronté à ce bug depuis hier, et je croyais avoir trouvé la solution grâce à tes recherches.
Mais le word-spacing:-0.1em ne marche pas dans tous les cas. J'ai une page où je suis obligé de passer à -0.3 em pour que ça fonctionne, ce qui rend le texte illisible, autant qu'avec le letter-spacing:-0.1em.

Ce bug est très ennuyeux dans le cas d'un conteneur flottant car avec le décalage le bloc passe en-dessous de son voisin.

Je n'ai pas le temps de chercher autant que toi, donc je suis sur le point de supprimer les italiques. Smiley confus

A moins que quelqu'un ait une autre piste...
Modifié par Geo (22 May 2006 - 11:34)
C'est bien pour ça que je n'ai pas mis résolu. Smiley cligne
Au cas ou, tu peux essayer, au cas ou ça ne concerne qu'un paragraphe, de "tricher" :
Remplacer un mot par un autre mot plus court par exemple et voir ce que cela rend.
Couper la ligne incriminée avec un retour à la ligne.

Bon promis, j'essaie de trouver une autre solution. Smiley smile

EDIT : ne pas oublier que la valeur em est relative, et est fonction de la police utilisée et de la taille qui lui est affectée.

Si tu peux, envoies moi un lien vers la page avec le problème.
Modifié par AymericJ (22 May 2006 - 11:46)
Bon j'ai trouvé un truc qui fonctionne dans mon cas.
Pour les <i> et les <cite> j'ai remplacé la Verdana par une Arial, en grossissant un poil le corps et en ajoutant même un letter-spacing:0.06em pour l'esthétique.

Ca semble fonctionner partout, en tous cas pour mes pages, donc j'adopte...

Désolé je peux pas mettre en ligne pour l'instant.
Modifié par Geo (22 May 2006 - 12:26)
Ahh bien, content pour toi. Smiley smile

Je pense au final que l'intéret reste d'identifier l'origine du problème, car effectivement, il y'a par la suite tellement de parametres différents d'un site à l'autre que je craint qu'il n'y ait pas de solution miracle.

Tu viens d'en faire la preuve.
L'histoire du letter-spacing me laisse à penser que ce bug est lié à certaines polices comme la Verdana, et que l'Arial y échappe.

C'est à vérifier, mais c'est peut-être une solution qui marche à coup sur.
Il suffit d'ajuster sa taille pour qu'elle soit harmonisée avec la Verdana
opera affiche <em> presque comme un <i> a savoir un italique auquel on à légèrement augmenter la taille de la police.

il me semble même qu'il le sur élève un poil mais bon.

à savoir que textuellement <em> est censé mettre en valeur, et <strong> est censé mettre encore plus en valeur. Après cela dépend de la comprehension des dev...