web-dev-qa-db-fra.com

Balises de paragraphe vides - devrais-je autoriser dans l'éditeur HTML ou non?

J'utilise CKEditor 4, qui semble avoir un paramètre par défaut utilisant <p></p> pour indiquer une ligne vide. Jusqu'à présent, j'ai toujours vu des lignes vierges en HTML représentées par <p>&nbsp;</p> - c'est à dire. pas une balise vide.

Ainsi, la sortie par défaut de CKEditor représentant une ligne vide est, par exemple:

<p>paragraph before blank line</p>
<p></p>
<p>paragraph after blank line</p>

Le problème est que, pour changer, IE7, 8, 9 semble rendre ceci "correctement" comme une ligne vide, contrairement à Firefox et Chrome - ils semblent ignorer les balises <p> et <div> vides, en termes de présentation.

Donc, pour le moment, je dois dire à CKEditor d’inclure &nbsp; dans les lignes vides (ce qui n’est pas le paramètre par défaut pour une raison quelconque) et, à l’arrière, de remplacer toutes les occurrences de balises <p> vides qui risquent de glisser.

Ma question est la suivante: quel est le standard idéal pour représenter des lignes vides en HTML? Le bon vieux <p>&nbsp;</p> ou autre chose?

De plus, étant donné que le paramètre par défaut de CKEditor est une balise <p> vide pour les lignes vides, Chrome et Firefox ont-ils tort de les ignorer? Ou IE a-t-il tort de les rendre sous forme de lignes vierges et le paramètre par défaut de CKEditor devrait être d'utiliser <p>&nbsp;</p>?

14
ingredient_15939

Conformément à HTML 4.01 sur l'élément p , <p></p> est valide mais ne doit pas être utilisé et les navigateurs doivent l'ignorer. Le comportement du navigateur est incohérent et n'obéit généralement pas aux spécifications. Vous testez cela avec <hr><hr><p></p><hr> par exemple - sous Chrome, cela montre que, bien que l'élément p ait une hauteur nulle, il comporte des marges supérieure et inférieure, de sorte qu'il affecte le rendu, c'est-à-dire qu'il n'est pas ignoré. - Le responsable de la certification HTML5 semble ne rien dire à ce sujet, c’est-à-dire qu’il ne dit rien de spécifique à propos d’un élément p avec un contenu vide. Mise à jour: HTML5 a une instruction general sur les éléments dont le contenu est exprimé en mode contenu (tel que p): un tel élément devrait contenir «devrait avoir au moins un nœud Texte descendant qui ne soit pas espaces blancs inter-éléments, ou au moins un nœud d'élément descendant qui est un contenu incorporé ». Cela signifie que <p></p> ne doit pas être utilisé; mais il s’agit d’une recommandation et non d’une exigence de conformité («devrait», pas «doit»).

L'effet de <p>&nbsp;</p> n'est pas défini par la spécification (le rendu du caractère d'espacement absolu n'a pas été défini), mais les navigateurs considèrent généralement cet espace comme un autre caractère graphique, qui se trouve simplement être restitué avec un glyphe vide. Donc, en pratique, il génère une boîte de ligne, avec une hauteur déterminée par la valeur calculée de line-height.

Par défaut, il existe des marges entre les éléments p, correspondant à une ligne vide. Donc, le besoin d'une ligne vide entre les éléments p semble avoir été provoqué par le remplacement du style par défaut, par quelque chose comme p { margin: 0 } en CSS. Pour éviter cela, il convient d'utiliser un élément CSS supplémentaire plutôt qu'un élément artificiel p. C'est-à-dire que certains éléments p doivent avoir une marge inférieure ou supérieure appropriée non nulle.

Le HTML 4.01 définit «caractères d'espacement» comme faisant référence à l'espace Ascii, à l'onglet Ascii, à l'alimentation de formulaire Ascii et à l'espace de largeur nulle (ainsi, non à l'espace insécable, par exemple), définit leur rendu et ajoute: «Cette spécification n'indique pas le comportement, le rendu ou autre, des caractères d'espace autres que ceux explicitement identifiés ici comme des espaces. Pour cette raison, les auteurs doivent utiliser des éléments et des styles appropriés pour obtenir des effets de formatage visuels impliquant des espaces, plutôt que des caractères d'espacement. ”

27
Jukka K. Korpela

Je dirais que IE a celui-ci faux, les paragraphes vides n'ont aucun sens pour moi.

De w3.org:

Nous décourageons les auteurs d'utiliser des éléments P vides. Les agents utilisateurs doivent ignorer les éléments P vides.

Je suggérerais que lorsque vous créez des lignes vides, vous placez leur texte sous forme de paragraphes.

Donc au lieu de:

before line break<p>&nbsp;</p>after line break

Vous devriez générer

<p>before line break</p><p>after line break</p>

Logique?

2
Mikael Härsjö

Lors du codage utilisant un codage HTML et CSS conforme aux normes, le facteur clé du contenu textuel du site Web sera placé dans une balise de paragraphe normale. Ceci est écrit comme <p>. Pour rendre le texte de paragraphe convivial pour le référencement lors de la rédaction de texte de paragraphe, il est utile de consulter le sous-titre précédent, puis de créer un contenu de page Web expliquant et développant ce titre. Oui, vous devez utiliser les balises de paragraphe vides dans l'éditeur HTML.

1
Spook SEO

Je pense que pour le référencement, il n’est pas bon que les navigateurs affichent un <p> vide. Je le remplace par js ou php avant de l'enregistrer sur ddbb :)

0
newpatriks