方法一:
直接取消scoped
- scoped的作用是防止樣式沖突,當前頁面/組件寫的類名與對應的樣式只會作用在當前的頁面/組件
- 取消了scoped以后,頁面的樣式將會作用到全局。
- 這樣會帶來的問題是,如果當前組件/頁面的類名和其他頁面的類名沖突的話會導致頁面間樣式沖突。最容易出現的問題就是:
- 當打開某個頁面,樣式正常,但是跳轉到某個固定頁面后再回到這個頁面時,頁面的樣式很可能被那個特定的頁面覆蓋。
- 這樣出現的BUG如果不熟悉代碼的人,很難復現該BUG,也就難以修復
方法二:
在當前頁面/組件重新寫一個style標簽,專門用來寫改寫UI庫中的樣式。這樣也會出現方法一中的問題。但是想要樣式不沖突。可以使用如下的方法:
- 使用scss/less等預編譯方法,通過父子標簽間的關系寫樣式,這樣編譯后的css樣式將會按照父子標簽間的層級關系展示,父標簽命名得當完全可以避免組件/頁面間樣式沖突的問題
方法三:
直接在scoped內寫樣式,根據父子標簽的關系使用深度選擇器:
如在less預編譯語言中:
.father{ /deep/ .child{ color:red; } }
在scss預編譯中:
.father { >>> .son{ color:red; } }