8

私は HTML5 仕様を読んでおり、要素のscoped属性については次のように指定しています。style

scoped属性はブール属性です。style存在する場合、スタイルが全体ではなく、要素の親要素をルートとするサブツリーのみを対象としていることを示しますDocument

style属性を持ち、要素である親ノードを持つ要素によって宣言されたスタイル シートはscoped、要素の親要素であるスコープ要素でスコープされますstyle

スコープ要素がスコープ スタイル シートを介してアクセスできるかどうか、またはスコープ要素のサブツリーの子ノードだけを介してアクセスできるかどうかを判断しようとしています。

この例を MDN からコピーし、少し変更しました。

<article>
    <div>The scoped attribute allows for you to include style elements mid-document. Inside rules only apply to the parent element.</div>
    <p>This text should be black. If it is red your browser does not support the scoped attribute.</p>
    <section>
        <style scoped>
            section {
                color: red;
            }
        </style>
        <p>This should be red.</p>
    </section>
    <section>
        <p>Another section here</p>
    </section>
</article>

サポートされているブラウザー (現時点では Firefox のみ) で例を実行すると、テキストThis should be redはまだ赤色です。sectionただし、スコープ要素の子としての要素はありません。また、「ここの別のセクション」は赤ではなかったため、スタイルはスコープ要素にのみ適用されました。

この動作が仕様に従っているのか、Mozilla の実装のバグなのか、誰か確認できますか?

4

1 に答える 1

2

HTML 5.0 仕様では、scoped属性は定義されていません。しかし、HTML 5.1 仕様には次のように書かれています。

スコープ属性はブール属性です。存在する場合、スタイルがドキュメント全体ではなく、スタイル要素の親要素をルートとするサブツリーのみを対象としていることを示します。

あなたの場合、サブツリーのルートは<section>要素を含む<style>要素です。ルートはツリーの一部であり、スタイルcolor:red;が適用されます。

したがって、この例では、Mozilla の実装は標準に準拠しています。

于 2014-06-29T22:26:14.270 に答える