Angular2如何修改父子組件樣式

場(chǎng)景:需要根據(jù)實(shí)際項(xiàng)目需求,修改引入的第三方組件的部分樣式

目錄

  1. 修改父組件的元素的樣式
  • 修改子組件的元素的樣式
  • 依據(jù)父組件有無某個(gè)類,來修改組件本身的樣式

一、修改父組件的元素的樣式

:host

:host偽類,這是在組件內(nèi)部獲取到其宿主元素的唯一方式,會(huì)向上一直查找到根元素body

具體使用方法:

// 默認(rèn)當(dāng)前在一個(gè)組件中,該組件位于一個(gè)父組件中,且該組件引入了第三方子組件
// 以下內(nèi)容為當(dāng)前組件引用的css文件里的內(nèi)容

// 第一種方式
// ele : 當(dāng)前元素
ele:host h1 {
  font-size: 20px;
}
// 效果: 修改父組件的h1元素字體大小為20px。

// 第二種方式
ele:host(.active) h1 {
  font-size: 20px;
}
// 效果: 修改父組件類為active元素下的h1元素的字體大小。

二、 修改子組件的元素的樣式

/deep/>>>

/deep/ 和 >>> 是一個(gè)意思兩種寫法,都是操作子組件的元素的。

具體使用方法:

ele /deep/ h1 {
  font-size : 16px;
}
// 效果:/deep/ 最好是寫在一個(gè)元素后面, 不然編輯器lint會(huì)報(bào)紅, 這里是查找子組件的h1元素,并修改它的字體大小

等同于:
ele >>> h1 {
  font-size : 16px;
}

三、 依據(jù)父組件有無某個(gè)類,來修改組件本身的樣式

:host-context

:host-context,和:host類似,都是獲取宿主元素,雖然都是查找宿主元素,但它們是有區(qū)別的, :host修改的還是宿主元素,:host-context修改卻是當(dāng)前組件,后者是針對(duì)父組件是否具備某個(gè)類名作出相應(yīng)的樣式改變響應(yīng)。

具體使用方法:

ele:host-context(.active) h1 {
  border: 1px dotted #f00;
}
// 效果: 當(dāng)宿主元素?fù)碛衋ctive類時(shí),才修改當(dāng)前組件的h1元素的border屬性樣式。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,093評(píng)論 1 92
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,765評(píng)論 25 709
  • Sharding-JDBC是當(dāng)當(dāng)開源的分庫分表中間件,通過重寫jdbc api的方式為Java應(yīng)用提供分庫分表的能...
    Yuan2021閱讀 5,916評(píng)論 1 8
  • 好像所有的故事,開頭都有一個(gè)“在很久很久以前”...... 在很久很久以前,有一個(gè)森林王國(guó),我忘記它的名字叫什么了...
    小野椰子閱讀 759評(píng)論 0 2

友情鏈接更多精彩內(nèi)容