目前還不太清楚為什麼要放在 node_modules 裡
your-project/
├── scss
│ └── custom.scss
└── node_modules/
└── bootstrap
├── js
└── scss
有兩種方法
bootstrap.scss
(入門)// 選項 A: 放入完整 bs 檔
// 匯入欲覆蓋既有變數的自訂變數(但 function 不會運作)
@import "../node_modules/bootstrap/scss/bootstrap";
// 匯入新增的自訂變數
熟悉之後會建議採取這個方法
一開始會不知道怎麼去取用要哪些檔案
我目前的作法是直接把 bootstrap.scss
裡面有匯入的都先匯入,等到專案做完之後我再把拿掉不影響的檔案拿掉。
//選項 B: 放入部分 bs 檔(只放專案有用到的部份)
// 1. 匯入 functions (按照這個順序,後面可以啟動 manipulate colors, SVGs, calc 等功能)
@import "../node_modules/bootstrap/scss/functions";
// 2. 匯入欲覆蓋既有變數的自訂變數
@import "修改原有變數、map 的 scss";
// 3. 匯入運作 bs 必須的檔案(包含原本的變數檔案)
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
// 4. 匯入「新增或刪除」的自訂變數
@improt "刪除或新增 map 的 scss";
// 4. 匯入選用的 bs 檔案(專案有用到的部份)
@import "../node_modules/bootstrap/scss/root";
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
@import "../node_modules/bootstrap/scss/images";
@import "../node_modules/bootstrap/scss/containers";
@import "../node_modules/bootstrap/scss/grid";
// 5. 匯入其餘自訂的 scss 檔案
@import "其他手刻檔案";
欲修改的內容有幾個部分
預設變數前匯入,並且不加上 !default
// bs 運作的必須檔案先匯入
@import "../node_modules/bootstrap/scss/functions";
// 既有的變數覆蓋成自訂參數,並且拿掉 !default
$body-bg: #000;
$body-color: #111;
// 匯入其他必須檔案,!default 的參數若是已經有遭到更改,則不會讀取
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
// Bootstrap and its default variables
// 匯入其他選用檔案
@import "../node_modules/bootstrap/scss/root";
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
// etc
bs 裡,map 裡出現過的變數,都可以找到額外設定一個獨立的變數
map 是什麼?Sass maps|SCSS 筆記 by Sz
而 map 裡的變數都會從獨立變數匯入
想要更改 map 就必須從獨立變數改起,map 則維持原樣
$primary: #0074d9;
$danger: #ff4136;
$theme-colors: (
"primary": $primary,
"danger": $danger
);
簡單來說,修改變數的動作,與修改 map 是一樣的
一旦是要無中生有或是化有為無的動作就要特別小心
這個動作就是無中生有的部分
要在預設變數匯入之後進行
// 在預設變數匯入之後進行
// 新建的 map 包含子變數
$custom-colors: (
"custom-color": #900
);
// 與 既有的 map Merge 起來
$theme-colors: map-merge($theme-colors, $custom-colors);
刪除原本 map 裡面的內容,時機跟上述的不太一樣,要在必須的檔案匯入後再執行
// Required
@import "../node_modules/bootstrap/scss/functions";
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
$theme-colors: map-remove($theme-colors, "info", "light", "dark");
// Optional
@import "../node_modules/bootstrap/scss/root";
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
// etc
HTML|目錄
CSS|目錄
scss|目錄
bootstrap|目錄
JavaScript|目錄
bootstrap
scss
筆記
六角筆記王