index.js
ファイルでは、Vuetify theme
オブジェクトを会社の色で手動でオーバーライドしています。
Vue.use(Vuetify, {
theme: {
primary: '#377ef9',
secondary: '#1b3e70',
accent: '#ff643d',
error: '#ff643d'
...
}
これで、テンプレートのこれらの色を次のように使用できます。
<my-text-field name="input text"
label="text"
value="text text text text..."
type="text"
color="primary">
</my-text-field>
私が望んでいるのは、テンプレートスタイル内で、上記で定義したprimary
オブジェクトまたはtheme
オブジェクトのその他の変数を使用することです。
<script>
import { VTextField } from 'vuetify'
export default {
extends: VTextField
}
</script>
<style scoped lang="stylus">
label
color: <seconday color> <-- this is what I'm after
color: #1b3e70 <-- this works, but not quite good enough for me
</style>
スタイルセクションに色の16進値を簡単に書き込むことができますが、繰り返したくないので、theme
オブジェクトを使用して、色を簡単に変更できるようにします。どこでも、色の定義の間違いにつながるタイプミスを避けます。
:style
属性を利用してこれを回避する方法があります。これを使用して、カスタムCSSプロパティを事後的に設定できます。
計算されたプロパティを追加します。
computed: {
cssProps () {
return {
'--secondary-color': this.$vuetify.theme.secondary
}
}
スタイルをcssPropsにバインドします。
<div id="app" :style="cssProps">
次に、あなたのスタイルで:
<style scoped>
label
color: var(--secondary-color);
</style>
この議論から適応: https://github.com/vuejs/vue/issues/7346