2016-02-28 8 views
8

HTMLでカスタム要素またはサポートされていない要素を使用する場合でも、スタイルを設定してブラウザでレンダーすることができます。認識されないHTML要素のデフォルト設定

たとえば、HTML5 main要素はInternet Explorer 11以前ではサポートされていません(source)。 mainがIEによってレンダリングされる場合、marginoverflowを含むCSSルールは無視されます。これは、認識されない要素のdisplayの値がinlineであることを意味します。

未認識要素の初期設定はどこで定義されていますか?

(注:私は、カスタム要素を使用しての長所と短所について尋ねていないよ、私はちょうどCSSは、デフォルトでは何をするかを知りたい。。)

+0

のような他の表示値についても同様です。どのようにデフォルトプロパティを持つことができますか?あなたは仕様を確認する必要があります。私はそれがブラウザ固有のことを示唆したいと思います。 = https://www.w3.org/TR/custom-elements/ –

+0

ありがとう、@Paulie_D。私は、CSSが認識できない要素を処理するためのルールを持っているという印象を受けています([この回答のコメント](http://stackoverflow.com/a/35688664/3597276)参照))。このルールは、CSSプロパティの初期値を取ることにすぎない場合があります。私は、仕様がどこで定義されているのかを見出そうとしていますが、検索で結果が得られません。 –

+0

私が考えているのは、開発者がそれらを定義するはずだから** **定義されていないということです。だから、各ブラウザが何をするかは任意です。 –

答えて

5

それはそんなに認識されていない要素ではありません、すべてのとして要素。 CSSはHTMLだけでなくXMLもサポートしています。 XMLでは、すべての要素は、CSS 2.1仕様に未認識

あるsection 6.1.1は言う:

ユーザエージェントは最初 に基づいて、各プロパティに指定された値を割り当てる必要があり

6.1.1指定された値を

  1. カスケードの結果が値の場合は、 これを使って。それ以外の場合は、値が '継承'の場合、指定された値は「The 'は' 値を継承します。 '」で定義されています。

  2. それ以外の場合、プロパティが継承され、要素がドキュメントツリーのルートでない場合は、親の計算値である 要素を使用します。

  3. それ以外の場合は、プロパティの初期値を使用します。各プロパティの初期値は、プロパティの定義に示されています。定義により

、認識されない要素は、ユーザーエージェントのスタイルシートには触れていません、と私たちは、デフォルトの動作の話をしていることから、いずれかの著者のスタイルシートに言及されることはありません。したがって、1は適用されません。

表示プロパティは9.2.4 The 'display' propertyで定義されています。そこのルールではInherited: noと言われているので、2は適用されません。

だから3が適用されます。再び9.2.4のルールから、Initial: inlineがあるので、要素はインラインです。

HTMLブロックレベルの要素の場合、ユーザーエージェントのスタイルシートに単純にリストされているため、デフォルトでブロックされます。 table,list-itemなど

+0

明確にする:それはユーザーエージェントのスタイルシート要素はデフォルトでは 'display:inline'でしょうか?すべての要素はCSSプロパティの初期値を使用しますか? –

+1

@Michael_B - そうです。とにかく多かれ少なかれ:HTMLにはCSSで直接複製できないものがいくつかあります。フォーム要素(たとえば、表のrowspan&colspan)。時折、ブラウザはHTML要素を「魔法」として扱うことがあります。 – Alohci

+1

@Michael_B:はい - これが初期値の概念が存在する理由です。 – BoltClock

関連する問題