我想在我的 Vue 组件模板中获取Vuetify 材料设计颜色作为十六进制值,这样我就可以在下面执行类似这样的操作来获取字符串#FFD54F
:
<div :style="`border: 5px solid ${ myHexadecimalColor('amber lighten-2') }`"></div>
我阅读了 Vuetify 文档的SASS 变量和颜色部分,但无法确定解决方案。
我可以看到Vuetify 的 github repo @中定义的颜色vuetify/packages/vuetify/src/styles/settings/_colors.scss
,但我不知道如何在我的 Vue 单文件组件中访问这些 Sass 变量。
有谁知道将 Vuetify 材料设计颜色名称转换为十六进制值的最佳方法?
奖金:
根据 Boussadjra Brahim 的回答,我写了一个快速的颜色名称到十六进制的方法来放入 Vue 混合,并将其包含在下面以防对任何人有帮助。
示例:hexColor('amber lighten-2')
退货#FFD54F
import colors from 'vuetify/lib/util/colors'
...
methods: {
hexColor: (name) => {
const [nameFamily, nameModifier] = name.split(' ')
const shades = ['black', 'white', 'transparent']
const util = {family: null, modifier: null}
if (shades.find(shade => shade === nameFamily)){
util.family = 'shades'
util.modifier = nameFamily
} else {
const [firstWord, secondWord] = nameFamily.split('-')
util.family = `${ firstWord }${ secondWord
? secondWord.charAt(0).toUpperCase() + secondWord.slice(1)
: '' }`
util.modifier = nameModifier
? nameModifier.replace('-', '')
: 'base'
}
return colors[util.family][util.modifier]
}
}
临摹微笑
慕村225694
相关分类