正確更改Ant?Design?of?Vue樣式的問題
背景
最近在搞項(xiàng)目,改用了 Ant Design UI 框架,根據(jù)項(xiàng)目要求肯定要更改原有樣式,但使用 Ant Design 過程中發(fā)現(xiàn)一個(gè)問題:直接在 <style></style> 內(nèi)改樣式改不了!
不得已去找官方文檔解決,但遺憾的是我看得一頭霧水...官方文檔給出好幾種更改方式,但這里我推薦使用 less 方式對(duì)樣式進(jìn)行覆蓋,
首先來看看官方文檔怎么描述的:
對(duì)于以上文檔,存在的問題是:
1. __at__ 指的是 @,在 main.js 下是不能那樣寫的,就算去掉 @,寫成 import "~ant-design-vue/dist/antd.less" ,npm run dev 也會(huì)出錯(cuò);
2.自己建立的 less 文件中寫入以上代碼,同樣出錯(cuò)。網(wǎng)絡(luò)資料下的寫法是 向你自己建立的 less 文件 寫入以下代碼:
@import "~ant-design-vue/dist/antd.less"; // 引入官方提供的 less 樣式入口文件 @import "your-theme-file.less"; // 用于覆蓋上面定義的變量
但遺憾的是同樣運(yùn)行不了。而正確寫法應(yīng)該是這種(看步驟):
步驟
1.添加less和less-loader依賴
確保正確安裝 less 和 less-loader 依賴,在控制臺(tái)輸入以下命令:
npm install --save-dev less-loader less
下載太慢,請(qǐng)改用 cnpm 下載。
2.開啟javascriptEnabled
注:以下三種方式選擇一種適合自己的即可。
webpack@4:修改 webpack.config.js 文件:
// webpack.config.js module.exports = { rules: [{ test: /\.less$/, use: [{ loader: 'style-loader', }, { loader: 'css-loader', // translates CSS into CommonJS }, { loader: 'less-loader', // compiles Less to CSS options: {javascriptEnabled: true}, }], // ...other rules }], // ...other config }
注意:less-loader 的處理范圍不要過濾掉 node_modules 下的 antd 包。
vue-cli 2:修改 build/utils.js 文件:
// build/utils.js // less: generateLoaders('less'), less: generateLoaders('less', {javascriptEnabled: true}),
vue-cli 3&4:修改 vue.config.js 文件(不存在就新建一個(gè)):
// vue.config.js module.exports = { css: { loaderOptions: { less: {javascriptEnabled: true} } } }
3.新建reset.less重置樣式
在項(xiàng)目的 static 文件夾下新建一個(gè) less 文件,這里以 reset.less 為例,如圖:
4.添加樣式引用
自行安裝 ant-design-vue 依賴,在 src/main.js 文件下添入以下代碼:
//只添加未被注釋代碼行即可 //import Vue from 'vue' import Antd from 'ant-design-vue' //import App from './App' import '../static/reset.less' //———>引入 reset.less,請(qǐng)確保路徑正確。 //Vue.config.productionTip = false Vue.use(Antd) //new Vue({ // el: '#app', // components: { App }, // template: '<App/>' //})
5.添加測(cè)試代碼
在 src/components 下的 HelloWorld.vue 添加 antd 樣式按鈕,如圖:
6.添加覆蓋樣式
在剛才建立的 reset.less 文件夾下添加以下代碼進(jìn)行覆蓋樣式測(cè)試:
@import '~ant-design-vue/dist/antd.less'; //———>后綴是 less,別寫成 css 。 .ant-btn-primary { background-color: #F56C6C; border-color: #F56C6C; } .ant-btn-primary:hover, .ant-btn-primary:focus { background-color: #f55252; border-color: #f55252; }
然后進(jìn)行 npm run dev,此時(shí)瀏覽器顯示的應(yīng)該是這樣的畫面:
按鈕變成紅色樣式,而不是藍(lán)色默認(rèn)樣式。如果沒有效果或者編譯出錯(cuò)的話,嘗試把 less 依賴降級(jí)到 2.7.3 看看(less-loader 版本不用管它)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
el-table樹形數(shù)據(jù)序號(hào)排序處理方案
這篇文章主要介紹了el-table樹形數(shù)據(jù)序號(hào)排序處理方案,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-03-03vue事件監(jiān)聽函數(shù)on中的this指針域使用
這篇文章主要介紹了vue事件監(jiān)聽函數(shù)on中的this指針域使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08vue中對(duì)象數(shù)組去重的實(shí)現(xiàn)
這篇文章主要介紹了vue中對(duì)象數(shù)組去重的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02Vue使用mind-map實(shí)現(xiàn)在線思維導(dǎo)圖
Vue中的Mind-Map通常是指使用Vue.js這個(gè)前端框架構(gòu)建的思維導(dǎo)圖組件或庫(kù),它可以幫助開發(fā)者在Web應(yīng)用中創(chuàng)建動(dòng)態(tài)、交互式的思維導(dǎo)圖,讓用戶可以直觀地組織信息和結(jié)構(gòu)化數(shù)據(jù),本文介紹了Vue使用mind-map實(shí)現(xiàn)在線思維導(dǎo)圖,需要的朋友可以參考下2024-07-07Vue3?跨域配置devServer的參數(shù)和設(shè)置方法
這篇文章主要介紹了Vue3?跨域配置devServer的參數(shù)和設(shè)置,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04vue3為什么要用proxy替代defineProperty
這篇文章主要介紹了vue3為什么要用proxy替代defineProperty,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10