web-dev-qa-db-ja.com

空の段落タグ-HTMLエディターで許可するかどうか

私はCKEditor 4を使用していますが、これには<p></p>を使用して空白行を示すデフォルト設定があるようです。これまで、<p>&nbsp;</p>で表されるHTMLには空白行がありました。空のタグではありません。

したがって、空白行を表すCKEditorのデフォルトの出力は次のようになります。

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

問題は、変更の場合、IE7,8,9がこれを「正しく」空白行としてレンダリングしているように見えるのに対し、FirefoxとChromeはそうではありません-空の<p>タグと<div>タグを無視しているようです、レイアウトの観点から。

したがって、現時点では、CKEditorに&nbsp;を空白行に含め(何らかの理由でデフォルト設定ではない)、バックエンドで、抜ける可能性のある空の<p>タグをすべて置き換えるように指示する必要があります。

私の質問は、HTMLで空白行を表すためのゴールドスタンダードは何ですか?古き良き<p>&nbsp;</p>、または何か他のもの?

また、CKEditorのデフォルト設定が空白行の空の<p>タグであるとすると、ChromeおよびFirefoxがそれらを無視するのは間違っていますか?またはIEそれらをレンダリングするのは間違っています空白行として、CKEditorのデフォルトは実際に<p>&nbsp;</p>を使用する必要がありますか?

17

HTML 4.01 on the p element のとおり、<p></p>は有効ですが使用しないでください。ブラウザはこれを無視する必要があります。ブラウザの動作に一貫性がなく、一般に仕様に準拠していません。たとえば、これを<hr><hr><p></p><hr>でテストします。Chromeでは、p要素の高さはゼロですが、上部と下部にマージンがあるため、レンダリングに影響するため、無視されません。 – HTML5 CRはこの問題について何も述べていないようです。つまり、内容が空のp要素について何も具体的には述べられていません。 更新:HTML5には、コンテンツモードとしてフレージングコンテンツを含む要素について 一般的なステートメント があります(pなど) ):このような要素には、「要素間空白ではない子孫Textノードが少なくとも1つあるか、コンテンツが埋め込まれている子孫要素ノードが少なくとも1つある必要があります」が含まれている必要があります。つまり、<p></p>は使用しないでください。しかし、これは推奨事項であり、適合要件ではありません(「すべき」ではなく「すべき」)。

<p>&nbsp;</p>の効果は仕様では定義されていませんが(ノーブレークスペース文字のレンダリングは定義されていません)、ブラウザは通常、ノーブレークスペースをさらに別のグラフィック文字として扱います。空のグリフ。そのため、実際には、line-heightの計算値によって高さが決定されるラインボックスが生成されます。

デフォルトでは、p要素間にマージンがあり、1つの空行に対応しています。したがって、p要素の間に空白行が必要なのは、CSSのp { margin: 0 }のように、デフォルトのスタイル設定を上書きしたために発生したようです。これをオーバーライドするには、人工的なp要素ではなく、追加のCSSを使用する必要があります。つまり、一部のp要素には、適切なゼロ以外の下マージンまたは上マージンが必要です。

HTML 4.01は、ASCIIスペース、ASCIIタブ、ASCIIフォームフィード、およびゼロ幅スペースを参照する 「空白文字」 を定義しています(したがって、ではありませんたとえば、改行なしスペースに)、それらのレンダリングを定義し、次のように追加します。「この仕様は、ここで空白文字として明示的に識別されているもの以外のスペース文字の動作、レンダリングなどを示しません。このため、作成者は適切な要素とスタイルを使用して、スペース文字ではなく、空白を含む視覚的なフォーマット効果を実現する必要があります。」

29

IEこれは間違っている、空の段落は私には意味がないと私は言うでしょう。

W3.orgから:

空のP要素を使用しないようにしてください。ユーザーエージェントは空のP要素を無視する必要があります。

ユーザーが空白行を作成するときは、テキストを段落で囲むことをお勧めします。

だから代わりに:

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

生成する必要があります

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

理にかなっていますか?

2
Mikael Härsjö

標準に準拠したHTMLおよびCSSコーディングを使用してコーディングする場合、Webサイトのテキストコンテンツの主要な要素は通常の段落タグに配置されます。これは<p>。段落テキストを作成するときにSEOフレンドリーな段落テキストを作成するには、前のサブ見出しを確認してから、この見出しテキストを説明および拡張するWebページコンテンツを作成する必要があります。はい、HTMLエディターで空の段落タグを使用する必要があります。

1
Spook SEO

ナビゲーターが空の<p>。 ddbbに保存する前に、jsまたはphpに置き換えます:)

0
newpatriks