關(guān)于iview和elementUI組件樣式覆蓋無(wú)效問(wèn)題及解決
iview和elementUI組件樣式覆蓋無(wú)效
iview和elementUI是我們?cè)谟胿ue開(kāi)發(fā)項(xiàng)目時(shí)比較常用到的ui組件,在我們使用第三方UI組件庫(kù)開(kāi)發(fā)時(shí)有時(shí)需要對(duì)這些組件進(jìn)行一些樣式修改。
為了vue頁(yè)面樣式模塊化,不對(duì)全局樣式造成污染,我們往往都會(huì)加入scoped屬性用來(lái)限制樣式的作用域,然而這也會(huì)導(dǎo)致當(dāng)我們修改部分ui組件樣式失效。為了避免這種情況,我們常用以下方式來(lái)解決。
新建一個(gè)不含scoped的style標(biāo)簽覆蓋組件樣式
不推薦使用,因?yàn)槿绻麤_突會(huì)導(dǎo)致其他樣式覆蓋異常
<style scoped> ?? ?/*頁(yè)面樣式*/ </style> // ui組件覆蓋 <style> ? .home .ivu-card-body { ? ? height: 345px; ? } </style>
深度作用選擇器( >>> )
<style scoped> .box >>> .content { ? font-size:20px; } </style>
/deep/ 預(yù)處理器less下使用
深度選擇器/deep/與>>>作用相同
<style scoped lang="less"> .select { ? ? ?/deep/ .ivu-card-body { ? ? ? ? width: 100%; ? ? ? } ? ? } </style>
然而最近谷歌瀏覽器對(duì)于/deep/貌似不太友好,控制臺(tái)提示/deep/將要被移除。
[Deprecation] /deep/ combinator is no longer supported in CSS dynamic profile.It is now effectively no-op, acting as if it were a descendant combinator. /deep/ combinator will be removed, and will be invalid at M65. You should remove it. See https://www.chromestatus.com/features/4964279606312960 for more details.
所以我們也可以在less下另類調(diào)用>>>,如下:
// 采用的less的轉(zhuǎn)義和變量插值 <style scoped lang="less"> @deep: ~'>>>'; .select { ? ? ?@{deep} .ivu-card-body { ? ? ? ? width: 100%; ? ? ? } ? ? } </style>
Element-ui與IView中的樣式覆蓋問(wèn)題
在合作開(kāi)發(fā)時(shí),在大哥定好全局樣式之后,我們個(gè)人頁(yè)面的開(kāi)發(fā)中是不可以影響到全局樣式的,是不可以的?。ú蝗粫?huì)被罵的,就算不被罵,當(dāng)你辛辛苦苦改出一個(gè)樣式的時(shí)候,一回頭,發(fā)現(xiàn)你沒(méi)動(dòng),但是樣式卻變了,你惱火么,我很惱火?。┧栽陂_(kāi)發(fā)自己的頁(yè)面時(shí),規(guī)定樣式范圍很重要。所以今天我們來(lái)講一下這個(gè)雖然很小但是很重要的知識(shí)點(diǎn)。
在進(jìn)行自己頁(yè)面開(kāi)發(fā)需要獨(dú)立樣式時(shí)請(qǐng)這樣使用
scoped字段的意義就是相當(dāng)于你在控制你的<div>容器時(shí)為了唯一識(shí)別而給他的一個(gè)id比如<div id="xxxx">。當(dāng)你給style加上scoped時(shí),在編譯之后樣式就會(huì)帶上自己的id比如
這樣子之后,這個(gè)樣式就只屬于這個(gè)頁(yè)面了,不會(huì)影響到全局的樣式。
當(dāng)然,在自己編寫的容器中我們可以直接定義,但是在我們使用了其他的UI組件之后,我們會(huì)發(fā)現(xiàn),在scoped中改變的樣式并不能影響到樣式了。因?yàn)槲覀兪窃谌种袑?duì)其樣式進(jìn)行引入的,所以在自己規(guī)定的小區(qū)域內(nèi)的改變并不能影響到他,但是直接寫一個(gè)<style></style>在這里面進(jìn)行修改則又會(huì)影響到全局的樣式。接下來(lái)我們講一下解決方法。
在Element-UI中覆蓋樣式
Element-UI跟IView覆蓋的方式有點(diǎn)不同。在對(duì)Element-UI的樣式進(jìn)行覆蓋時(shí),我們需要在
中進(jìn)行全局影響,而不可以在
中進(jìn)行修改。如果有需要的話,寫兩個(gè),一個(gè)帶scoped,一個(gè)不帶也是可以的。
之后我們?cè)贓lement-UI的組件上給他加一個(gè)父層樣式選擇器
然后在樣式中這樣進(jìn)行覆蓋
這樣做,在進(jìn)行樣式判斷的時(shí)候會(huì)順著層次順序,只修改fatherclass下面的dialog的樣式,這樣就影響不到全局的樣式了。
在IView中覆蓋樣式
IView中,則需要在外層套接一個(gè)容器,直接在組件上增加父層樣式選擇器是不起作用的。
具體做法如下
我們?cè)诮M件外面套接了一層自己的容器,之后進(jìn)行樣式改變
這樣就成功了!可喜可賀,可喜可賀!
TIP:
1.定義的父層樣式選擇器可以不進(jìn)行樣式的編寫,因?yàn)樗麄冎皇菫榱朔奖阄覀兌x一個(gè)固定的影響區(qū)域。
2.如何找到我需要修改的樣式名稱
打開(kāi)控制臺(tái),去頁(yè)面上尋找
之后在
去尋找你需要修改的樣式,調(diào)節(jié)好之后直接把樣式復(fù)制到你的代碼中就可以了。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
VantUI封裝自定義Tabbar路由跳轉(zhuǎn)的實(shí)現(xiàn)
本文主要介紹了VantUI封裝自定義Tabbar路由跳轉(zhuǎn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05vue?serve及其與vue-cli-service?serve之間的關(guān)系解讀
這篇文章主要介紹了vue?serve及其與vue-cli-service?serve之間的關(guān)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10Vue項(xiàng)目獲取url中的參數(shù)(親測(cè)可用)
這篇文章主要介紹了Vue項(xiàng)目獲取url中的參數(shù),本文通過(guò)兩種情況分析給大家詳細(xì)介紹,感興趣的朋友一起看看吧2022-08-08Vue腳手架配置代理服務(wù)器的兩種方式(小結(jié))
本文主要介紹了Vue腳手架配置代理服務(wù)器的兩種方式(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01vue 實(shí)現(xiàn)路由跳轉(zhuǎn)時(shí)更改頁(yè)面title
今天小編就為大家分享一篇vue 實(shí)現(xiàn)路由跳轉(zhuǎn)時(shí)更改頁(yè)面title,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11vue 路由緩存 路由嵌套 路由守衛(wèi) 監(jiān)聽(tīng)物理返回操作
這篇文章主要介紹了vue 路由緩存 路由嵌套 路由守衛(wèi) 監(jiān)聽(tīng)物理返回操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08