現在公開されているVue.js(2.x系)では、styleブロックに定義されたCSSスタイルの値を(コンポーネントのdataやpropsに基づいて)動的に変更することはできません。
要素のstyle属性を直接操作したくない場合、styleごとにCSSクラスを用意し、動的にclass属性を切り替えることで対応できます(一般的な方法です)。
html
1<template>
2 <div :class="colorClass">Hello</div>
3</template>
4
5<script>
6export default {
7 props: {
8 color: {
9 type: String,
10 default: 'red'
11 }
12 },
13 computed: {
14 colorClass () {
15 switch (this.color) {
16 case 'red':
17 return 'red-class'
18 case 'blue':
19 return 'blue-class'
20 }
21 }
22 }
23}
24</script>
25
26<style>
27.red-class {
28 color: red;
29}
30.blue-class {
31 color: blue;
32}
33</style>
:class=""
は動的にCSSクラスを設定するためのものですが、Vue.jsでは、静的なCSSクラスと併用もできます。
html
1<template>
2 <div :class="colorClass" class="static-class">Hello</div>
3</template>
その他、詳しい解説は公式サイトの該当部分を確認されるといいと思います。
ちなみに、8月にリリース予定のVue.js 3では、sabxさんが提示しているやり方に近いものが実現できるようになるかもしれません(Targetの部分をみると、Vue.js 2.x系にも逆輸入される可能性があります)。
参考資料
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。