sass、lessのscopedプロパティ
2324 ワード
1、scopedの実現原理
Vue,Lessにおけるscoped属性の効果は主にPostCssによって実現される.コードの例:
PostCSSは、1つのコンポーネントのすべてのdomにユニークなダイナミックプロパティ(例えば、上のdata-v-558831 a)を追加し、cssセレクタに対応するプロパティセレクタを追加してコンポーネントのdomを選択します.これにより、スタイルがそのプロパティを含むdom要素(コンポーネント内部のdom)にのみ作用します.
要約すると、scopedのレンダリングルールは次のとおりです. HTMLのdomノードに重複しないdata属性(例えば、data-v-558831 a)を追加して、このdom要素 を一意に識別する.各文のcssセレクタの最後(コンパイル後に生成されたcss文)に現在のコンポーネントのdata属性セレクタ(例えば[data-v-558831 a])を追加してスタイル をプライベート化する.
2、scoped貫通
scoped Vueプロジェクトでは、サードパーティ製コンポーネントライブラリを導入する場合、scopedプロパティを削除してコンポーネント間のスタイルを上書きしないで、ローカルコンポーネントでサードパーティ製コンポーネントライブラリのスタイルを変更する必要があります.この場合、scopedを特殊な方法で貫通することができます.
スタイルの透過には>>>を使用します.
sassとlessのスタイル貫通使用/deep/
以下を参照してください.https://segmentfault.com/a/1190000015932467
3、scoped使用中の問題
styleラベルにscopedプロパティを追加すると、styleラベルのスタイルは他のコンポーネントではなくコンポーネントにのみ作用しますが、他の共通スタイルはコンポーネントに作用します.たとえば、親コンポーネントにscopedプロパティが追加されている場合、親コンポーネントのスタイルは子コンポーネントには作用しません.
親コンポーネントにscopedプロパティがなく、子コンポーネントに存在する場合、親コンポーネントから子コンポーネントを開くと、親コンポーネントに設定されたスタイルが子コンポーネントに作用しますが、子コンポーネントページを直接ジャンプして開くと、親コンポーネントのスタイルが子コンポーネントに作用しません.コンポーネントでスタイルを設定するには、scopedプロパティをできるだけ追加する必要があります.
Vue,Lessにおけるscoped属性の効果は主にPostCssによって実現される.コードの例:
//
scoped
//
scoped
.example[data-v-5558831a] {
color: red;
}
PostCSSは、1つのコンポーネントのすべてのdomにユニークなダイナミックプロパティ(例えば、上のdata-v-558831 a)を追加し、cssセレクタに対応するプロパティセレクタを追加してコンポーネントのdomを選択します.これにより、スタイルがそのプロパティを含むdom要素(コンポーネント内部のdom)にのみ作用します.
要約すると、scopedのレンダリングルールは次のとおりです.
2、scoped貫通
scoped Vueプロジェクトでは、サードパーティ製コンポーネントライブラリを導入する場合、scopedプロパティを削除してコンポーネント間のスタイルを上書きしないで、ローカルコンポーネントでサードパーティ製コンポーネントライブラリのスタイルを変更する必要があります.この場合、scopedを特殊な方法で貫通することができます.
スタイルの透過には>>>を使用します.
>>>
.wrapper >>> .swiper-pagination-bullet-active
background: #fff
sassとlessのスタイル貫通使用/deep/
/deep/ {
}
.wrapper /deep/ .swiper-pagination-bullet-active{
background: #fff;
}
以下を参照してください.https://segmentfault.com/a/1190000015932467
3、scoped使用中の問題
styleラベルにscopedプロパティを追加すると、styleラベルのスタイルは他のコンポーネントではなくコンポーネントにのみ作用しますが、他の共通スタイルはコンポーネントに作用します.たとえば、親コンポーネントにscopedプロパティが追加されている場合、親コンポーネントのスタイルは子コンポーネントには作用しません.
親コンポーネントにscopedプロパティがなく、子コンポーネントに存在する場合、親コンポーネントから子コンポーネントを開くと、親コンポーネントに設定されたスタイルが子コンポーネントに作用しますが、子コンポーネントページを直接ジャンプして開くと、親コンポーネントのスタイルが子コンポーネントに作用しません.コンポーネントでスタイルを設定するには、scopedプロパティをできるだけ追加する必要があります.