1. 程式人生 > 其它 >微信自定義元件修改其他元件樣式

微信自定義元件修改其他元件樣式

1、需求:需要在微信的一個元件內改引用的其他元件樣式屬性,發現不能直接像在page上直接修改,也沒有vue的:v-deep、/deep/之類的樣式穿透

2、解決:怎麼處理這種樣式隔離問題呢

微信裡面有種屬性就是指定特殊的樣式隔離選項styleIsolation,官網網址:

https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#%E7%BB%84%E4%BB%B6%E6%A0%B7%E5%BC%8F%E9%9A%94%E7%A6%BB

Component({
...
  options: {
    styleIsolation: 
'shared' } ... })

從小程式基礎庫版本 2.10.1 開始,也可以在頁面或自定義元件的 json 檔案中配置 styleIsolation (這樣就不需在 js 檔案的 options 中再配置)

{
  "component": true,
  "styleIsolation":"shared",
  "usingComponents": {}
}

styleIsolation 選項從基礎庫版本 2.6.5 開始支援。它支援以下取值:

isolated 表示啟用樣式隔離,在自定義元件內外,使用 class 指定的樣式將不會相互影響(一般情況下的預設值);
apply
-shared 表示頁面 wxss 樣式將影響到自定義元件,但自定義元件 wxss 中指定的樣式不會影響頁面; shared 表示頁面 wxss 樣式將影響到自定義元件,自定義元件 wxss 中指定的樣式也會影響頁面和其他設定了 apply-shared 或 shared 的自定義元件。(這個選項在外掛中不可用。)

使用後兩者時,請務必注意元件間樣式的相互影響。

如果這個 Component 構造器用於構造頁面 ,則預設值為 shared ,且還有以下幾個額外的樣式隔離選項可用:

page-isolated 表示在這個頁面禁用 app.wxss ,同時,頁面的 wxss 不會影響到其他自定義元件;
page
-apply-shared 表示在這個頁面禁用 app.wxss ,同時,頁面 wxss 樣式不會影響到其他自定義元件,但設為 shared 的自定義元件會影響到頁面; page-shared 表示在這個頁面禁用 app.wxss ,同時,頁面 wxss 樣式會影響到其他設為 apply-shared 或 shared 的自定義元件,也會受到設為 shared 的自定義元件的影響。