LoginSignup
2
1

More than 3 years have passed since last update.

Vue.js CSSプロパティを要素に付与する方法

Posted at

この記事は初心者向け Vue.jsで複数のclassを付与する方法について記述した自分用メモになります。
誤っている点がありましたらご指摘をお願いいたします。

この記事は以下の方向けの記事となっております。

推定読者:
・v-bindの使い方は分かるが複数のclassを要素に付与する方法が分からない方

CSSプロパティを付与する方法は2つある

複数のプロパティを付与する方法には以下の2つがあります。

・要素に直接複数のプロパティを指定して付与する
・予めvue側で用意したオブジェクト型を用いて付与する(推奨)

要素に直接複数のプロパティを指定して付与する

以下、基本的な書き方

<p :class={クラス名: true(もしくはfalse), クラス名: true(もしくはfalse)}

「trueもしくはfalse」は、「指定したクラスを付与する(true)かしない(false)か」を指定しています。
実際にこのやり方で記述した例が以下になります。


<h4 :class="{ textcolor: false, 'bg-color': true}">テキストカラーが赤(falseなので適用されない)、背景カラーがスカイブルー(trueなので適用)</h4>
.textcolor {
    color: red;
}
.bg-color {
    background-color: skyblue;
}

実行結果
directSelector.png

また上記の方法はtrue falseでクラスを付与したり外したりする事を可能としています。
もし取り外す必要がない場合や同じプロパティで別のものを指定したい場合などは以下の方法もあります。

以下、基本的な書き方

<p :style="{セレクタ名: 変数名, セレクタ名: 変数名}"></p>

<script>
new Vue({
    el: '#app',
    data: {
       変数名: '具体的な値',
       変数名: '具体的な値',
 }
})
</script>

上記の例では{プロパティ名:変数名}としていますが、直接具体的な値を直接記述することもできます。(例:{color: 'red'})
実際にこのやり方で記述した例が以下になります。

<h4 :style="{color: textColor, 'background-color': bgColor}">テキストカラーが赤、背景カラーがスカイブルー</h4>

<script>
new Vue({
    el: '#app',
    data: {
       textColor: 'red',
       bgColor: 'skyblue',
 }
})
</script>

実行結果
indirectSelector.png

予めvue側で用意したオブジェクト型を用いて付与する(推奨)

以下、基本的な書き方

<h1 :class="classObj"></h1>

new Vue({
    el: '#app',
computed: {
   classObj() {
     return { textcolor: true, 'bg-color': true}
     }
  }
})

.textcolor {
    textcolor: red;
}
.bg-color {
    background-color: skyblue;
}

実行結果
objectSelector.png

おまけ Object型を二つ付与する方法

以下、基本的な書き方

<p :style="[オブジェクト名, オブジェクト名]"></p>
<script>
  new Vue({
     el: '#app',
     data: {
        オブジェクト名: {
            セレクタ名: '指定する値', 
            セレクタ名: '指定する値'
       },
        オブジェクト名: {
            セレクタ名: '指定する値'
      }
    }
})
</script>    

実際にこのやり方で記述した例が以下になります。

<h4 :style="[styleObj, pxObj]">Object型を二つ付与する</h4>

<script>
  new Vue({
     el: '#app',
     data: {
        styleObj: {
            color: 'red', 
            'background-color': 'skyblue'
       },
        pxObj: {
            fontSize: '100px'
      }
    }
})
</script>    

実行結果

objectsSelector.png

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1