【Vue.js】如何修改第三方組件庫(kù)默認(rèn)樣式及修改失效原因

在vue項(xiàng)目開(kāi)發(fā)中,我們經(jīng)常需要用到第三方組件庫(kù),如elementUI、Vant等,這些組件的特點(diǎn)之一是樣式都是封裝好的,有時(shí)候組件的默認(rèn)樣式和我們需要的樣式會(huì)有一些差別,這時(shí)就需要做一些修改。

一、修改組件默認(rèn)樣式

首先我們隨便用一個(gè)組件來(lái)舉個(gè)例子,就用elementUI主要按鈕吧。

<template>
  <div class="index-wrap">
    <el-button type="primary">我是一個(gè)主要按鈕</el-button>
  </div>
</template>

默認(rèn)是藍(lán)色背景高度40的,現(xiàn)在我們想讓它變成粉色背景,高度30。


這時(shí)我們可以通過(guò)檢查網(wǎng)頁(yè)的元素獲取組件的類名,得到這個(gè)按鈕組件的類名有"el-button" 和 "el-button--primary" 。

image.png

我們選擇哪個(gè)都可以添加樣式,為了不影響其它類型的按鈕,我們就把樣式加給"el-button--primary"類吧。

<style scoped>
.el-button--primary {
  background: pink;
  border-color: pink;
  height: 30px;
}
</style>

看上去毫無(wú)問(wèn)題,可是我們的修改卻失敗了。


甚至連檢查元素發(fā)現(xiàn)我們寫(xiě)的屬性根本沒(méi)有加上去:

二、失敗原因及注意事項(xiàng)

其實(shí)我們修改方法并沒(méi)有問(wèn)題,問(wèn)題出在了scoped身上,大家都知道在style標(biāo)簽上加上這個(gè)是控制所寫(xiě)的樣式不影響其它頁(yè)面(或組件),可是第三方組件庫(kù)的東西,其實(shí)是一個(gè)我們引入的、外來(lái)的、寫(xiě)好的組件啊,準(zhǔn)確地說(shuō)它并不是我們當(dāng)前這個(gè)頁(yè)面(組件)的內(nèi)容,scoped只影響當(dāng)前頁(yè)面(組件),所以我們?cè)趕coped里肯定修改不到第三方組件的樣式。

所以這時(shí)候我們就要去掉scoped,為了不影響當(dāng)前頁(yè)面其它內(nèi)容,我們可以再寫(xiě)一個(gè)不帶scoped的style標(biāo)簽,同時(shí),為了不污染項(xiàng)目中其它地方使用的到的第三方組件,我們一定要加上一個(gè)獨(dú)有的類名,比如我寫(xiě)的這個(gè)組件的類名index-wrap。
當(dāng)然,如果確定整個(gè)項(xiàng)目的這個(gè)組件都要改,我們也可以直接寫(xiě)到公共樣式文件里。
現(xiàn)在修改如下:

<style scoped>
    /* 其它樣式 */
</style>

<style>
.index-wrap .el-button--primary {
  background: pink;
  border-color: pink;
  height: 30px;
}
</style>

現(xiàn)在可以看到我們的自定義樣式已經(jīng)添加上去了,其它的第三方組件修改方法也是一樣的~ 可以根據(jù)自己的需求修改。


image.png
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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