问题
I am using a package called Buefy which is a Vue.js wrapper for the Bulma CSS framework library. Buefy puts an attribute/property on its template components called type
(e.g., type="is-warning"
). As per the Buefy documentation, the term "is-warning" is pre-defined according to the $colors
variable set within SCSS:
So I followed these instructions from Buefy to be able to customize the the $colors
map, but what I would like to do, however, is keep the initial SCSS defined in those instructions within a single base.scss
file, and then extend with my own customized SCSS file.
I have included the base.scss
file in my Vue project with the following snippet in the vue.config.js
file:
module.exports = {
css: {
loaderOptions: {
sass: {
prependData: `
@import "@/assets/scss/base.scss";
`
}
}
}
}
So my question is, how can I extend the $colors
map in the base.scss
with my own names and values?
This is a snippet from base.scss
, where the $colors
map is defined:
```css
$colors: (
"white": ($white, $black),
"black": ($black, $white),
"light": ($light, $light-invert),
"dark": ($dark, $dark-invert),
"primary": ($primary, $primary-invert),
"info": ($info, $info-invert),
"success": ($success, $success-invert),
"warning": ($warning, $warning-invert),
"danger": ($danger, $danger-invert),
"twitter": ($twitter, $twitter-invert)
);
```
So, again, my question is how can I extend the $colors
map in a different file outside of base.scss
(perhaps in App.vue
) to leave the original untouched? I didn't see any solution shown in the scss docs.
回答1:
Your custom color values would go in a variable (later merged into $colors
) called $custom-colors
, and it's actually described in the docs on "derived variables".
And to customize it:
// Import Bulma's core
@import "~bulma/sass/utilities/_all";
// Set your colors
$custom-colors: (
"facebook": ($blue, $white),
"linkedin": ($dark-blue, $white)
// etc.
);
// Setup $colors to use as bulma classes (e.g. 'is-twitter')
$colors: (
"white": ($white, $black),
"black": ($black, $white),
"light": ($light, $light-invert),
"dark": ($dark, $dark-invert),
"primary": ($primary, $primary-invert),
"info": ($info, $info-invert),
"success": ($success, $success-invert),
"warning": ($warning, $warning-invert),
"danger": ($danger, $danger-invert),
"twitter": ($twitter, $twitter-invert)
);
// Import Bulma and Buefy styles
@import "~bulma";
@import "~buefy/src/scss/buefy";
It's internally using a custom function called mergeColorMaps.
来源:https://stackoverflow.com/questions/62112173/how-to-extend-a-variables-map-in-scss