28173 sujets

CSS et mise en forme, CSS3

Bonjour,

Voilà, tout partait d'une idée très simple : faire un logo tout simple, centré!
Sauf que, à ma grande surprise, je n'y arrive pas... Smiley sweatdrop

De plus je me rend compte que la mise en forme du code nuit à la mise en forme de la page web!
N'y a t'il donc pas, à la base, un réel problème de structure du langage html qui rend la mise en forme des pages html si prise de tête?

Un petit lien pour illustrer mes dires.

Bon, évidemment, je suis nouveau dans le monde du web donc il est possible que mon ignorance soit réel cause de mon problème.
Cependant, touchant un peu à PHP, je trouve la séparation entre les contenu et le code mieux pensé.
Modifié par Amalgame (14 Sep 2006 - 22:01)
Salut,

il manque une déclaration de type de document (DTD) à la page mise en lien, ça ne répond pas à ta question mais bon il se trouve que c'est important.
Modérateur
Hello,

Il y aussi les balises p d'ouverture qui contiennent toutes un espace alors qu'il n'en faut pas.
Bon, je crois que j'ai virer tout les espaces en trop... désolé

Mais quand vous sélectionnez sous firefox par exemple tout le texte on remarque une légère différence et surtout l'espace entre les deux span alors qu'il n'y a rien.

Le fait de mettre en forme mon code vient modifier moa page.

Je cherche la petite bête vous allez me dire, je sens.. Smiley sweatdrop
Modifié par Amalgame (14 Sep 2006 - 22:19)
Non, non Mpop en a parlé dans un post. Tu devrais lui envoyer un mp pour l'informer de ta question en cours. Il y a une bonne raison pour ça même si de mémoire ça concernait plus les balises de type block qu'inline.
A part ça c'est quand même la propriété letter-spacing qui semble fiche le bazard dans ton affaire. Il y a surement quelque chose à creuser de ce coté là.
Amalgame a écrit :
Le fait de mettre en forme mon code vient modifier moa page.

Hmm... oui et non.

Voici un petit exemple :
<p><span>alsacreation</span><span>s</span></p>

<p><span>alsacreation</span> <span>s</span></p>

<p>
	<span>alsacreation</span>
	<span>s</span>
</p>

On obtiendra le rendu suivant :
alsacreations
alsacreation s
alsacreation s

On remarque que le cas où les deux span sont séparés d'une espace donne le même rendu que lorsque le deuxième span passe à la ligne.

Il faut se rappeler qu'en HTML, une suite d'espaces sera, par défaut, tronquée à UNE espace maximum. On peut donc, dans le code, espacer les mots autant que l'on veut, on n'aurait toujours qu'une seule espace entre deux mots. À noter que ce type de rendu peut être modifié via un élément pre ou la propriété CSS white-space ( http://wiki.media-box.net/documentation/css/white-space ).

Je viens de parler d'espace (qui correspond à un caractère précis), mais il s'agit en fait de tous les « espaces blancs », qui comprennent : l'espace, la tabulation, le retour à la ligne (les retours à la ligne ?).

Bref, les deux notations suivantes sont équivalentes :
1)
<span>alsacreation</span> <span>s</span>

2)
<span>alsacreation</span>
<span>s</span>

Ici, c'est le retour à la ligne (retour chariot) qui est interprété comme une espace.


Précisons avant tout affolement

Ce n'est pas parce qu'un code est indenté que des espaces inopportuns vont apparaître un peu partout sur une page ! Smiley biggol
Les espaces, tabulations et retours chariot entre deux éléments de type bloc (div, p, hN, ul, li, etc.) seront ignorés. De même, les espaces blancs en début et en fin d'un élément de type bloc (au début ou à la fin d'un paragraphe p, par exemple) ne seront pas rendus. Les seuls espaces blancs qui seront rendus sont ceux qui séparent des éléments de type en-ligne ou des chaînes de caractères.

Un exemple courant : si vous voulez obtenir une succession d'images de petite ou moyenne taille sur une même ligne, vous pouvez écrire :
<p><img src="anywhere/hophop/images/sentence/first.png" alt="Ceci" /><img src="anywhere/hophop/images/sentence/second.png" alt="est un" /><img src="anywhere/hophop/images/sentence/third.png" alt="exemple" /></p>

Mais comme le code pour les informations des images (texte alternatif, emplacement de l'image) est un peu long, on aura tendance à les mettre sur plusieurs lignes de code :
<p>
	<img src="anywhere/hophop/images/sentence/first.png" alt="Ceci" />
	<img src="anywhere/hophop/images/sentence/second.png" alt="est un" />
	<img src="anywhere/hophop/images/sentence/third.png" alt="exemple" />
</p>

Les deux notations ne sont pas équivalentes. Il faut imaginer que chaque image est un caractère : « a », « b » et « c ». Si on écrit « a b c », ça n'est pas la même chose que si l'on écrit « abc » !
On aura donc, dans le cas du code sur plusieurs lignes, des espaces entre les images. Si on voulait que les images soient complètement collées, c'est raté.


Un cas-limite : espaces excédentaires entre des items de liste avec IE Win

Laurent denis détaille le cas de la prise en compte des espaces non significatifs dans les listes dont les items sont dotés de layout.
Il s'agit d'un bug très particulier d'Internet Explorer Windows, mais que l'on rencontre souvent tôt ou tard, et qui se manifeste par des items de liste (souvent ceux d'un menu de navigation vertical) qui s'écartent très fortement en hauteur, de façon inexpliquée.

Le bug (détaillé, avec une solution, dans la page du lien ci-dessus) fait que les espaces non significatifs (retours à la ligne, tabulations, espaces) deviennent des lignes vides entre les items de liste, ce qu'ils ne sont pas censés faire, bien entendu ! Smiley eek

On résoud ce bug soit en combattant le mal par le mal (cf. la notion de HasLayout, et la solution proposée), soit en supprimant ces espaces non significatifs (ce qui peut faire un code difficile à lire et à gérer), mais uniquement pour les éléments problématiques, pas pour toute la page, bien entendu ! Smiley cligne
Modifié par mpop (15 Sep 2006 - 00:05)
ça c'est du post! Smiley eek

Heu.. vu l'heure, je le relirais demain même la réponse semble très clair! ^^
Mais je crois que tu réponds pile poil à ma question! Smiley biggrin