2 回答
TA贡献1982条经验 获得超2个赞
将颜色导入您的组件,然后使用它的修饰符访问颜色,例如:
import colors from 'vuetify/lib/util/colors'
....
<div :style="`border: 5px solid ${ colors['amber']['lighten2'] }`"></div>
TA贡献1880条经验 获得超4个赞
success因此,虽然接受的答案是正确的,但我认为更完整的功能还包括翻译主题颜色(例如, error)及其阴影(例如)的能力success darken-2,以及在颜色已经通过时处理输入十六进制、RGB 或 RGBA。
这是我在 mixin 中实现的一个函数,它执行以下操作:
import colors from 'vuetify/lib/util/colors';
...
methods: {
translateColor(color) {
if ('string' !== typeof color || color.trim().length == 0) {
return color;
}
if (color.startsWith('#') || color.startsWith('rgb')) {
return color;
}
const themeColors = Object.keys(this.$vuetify.theme.currentTheme);
const themeColorIndex = themeColors.indexOf(color);
if (themeColorIndex > -1) {
return this.$vuetify.theme.currentTheme[color];
}
let baseColor;
let shade;
if (color.includes(' ')) {
const [bc, s] = color.split(' ');
baseColor = bc;
shade = s;
}
else {
baseColor = color;
shade = 'base';
}
const generalColors = Object.keys(colors);
const generalColorsIndex = generalColors.indexOf(baseColor);
const themeColorsShadeIndex = themeColors.indexOf(baseColor);
if (generalColorsIndex > -1) {
const fixedShade = shade.toLowerCase().replace('-', '');
const co = colors[generalColors[generalColorsIndex]];
return co[fixedShade];
}
else if (themeColorsShadeIndex > -1) {
const fixedShade = shade.toLowerCase().replace('-', '');
const co = this.$vuetify.theme.parsedTheme[themeColors[themeColorsShadeIndex]]
return co[fixedShade];
}
return color;
}
}
现在我确定我的方法可以优化,但一般的想法是它能够从包含的 Material Design 颜色和主题的颜色中读取。
添加回答
举报