2017-06-15 10 views
2

ここの仕様 - https://drafts.csswg.org/css-scoping/#slots-in-shadow-treeには次のような注意があります。シャドーDOMスロット内での継承

注:要素をスロットに割り当てることは、割り当てられているスロットから継承していることが明らかです。オリジナルのライトツリーの親と、スロットが割り当てられている深いスロットは、継承に影響しません。

だから私は、要素がスロットされると、その要素に適用されますとcolorまたはbackground-colorのように継承できるスタイルは、それが光DOMの親から継承しないことを考えています。

ただし、次の例ではこれが行われます。

ここに私のコードです。

class CustomTitle extends HTMLElement { 
 
    constructor() { 
 
    super(); 
 
    this.attachShadow({ mode: "open" }); 
 
    this.shadowRoot.innerHTML = "<slot name='title'></slot>"; 
 
    } 
 
} 
 
window.customElements.define("custom-title", CustomTitle);
custom-title { 
 
    border: 2px solid; 
 
    display: block; 
 
    color: red; 
 
}
<custom-title> 
 
    <h1 slot='title'>Hi There!</h1> 
 
</custom-title>

私の期待はh1はまだ黒になるということですが、それは赤で表示されます。明らかに私は仕様が何を意味するのか、私は何かばかげています。

誰かが私にこれを説明できますか?

答えて

2

申し訳ありませんが、この注釈は、その要素が最初のスロットからを直接に継承していることを意味しています。継承は、上位スロット、他のシャドウ要素、シャドーツリーをホストするライト要素などから正常に機能します。

この例では、継承を示していません。 h1には色が割り当てられているので、それを使用し、継承を全く使用しません。

+0

である。私の悪い例です。私は上記の質問でそれを修正して、混乱させないようにします。 –

+0

この状況をデモするには? 'とそのスロットが割り当てられるより深いスロット。これは問題の範囲外かもしれませんが、時間がある場合は、例を見つけることができる場所を教えてください。 –

+0

私はちょうどそれが最初のスロットであるということについてちょっと混乱しています。また、私はシャドーツリー内の 'slot'にスタイルを適用してテキストノードをスタイリングしようとしましたが、そこに継承はありません。 https://codepen.io/praveenpuglia/pen/jwMmWd –

関連する問題