vue.jsの基礎勉強4-v-bindを用いたclass記法とstyle記法-
はじめに
今回はv-bind
を用いたCSSの当て方について勉強した。
- ソースコードのフルバージョン
See the Pen qBZBaoP by KKZoo (@kkzoo) on CodePen.
class記法について
今回はclass記法を用いて以下のcssを読み込んで行こうと思う。
.large{ font-size: 30px; } .font-red{ color: red; } .bg-green{ background: green; }
v-bindの基礎的な当て方
<!-- 単一で用いる場合 --> <p>{{ messages.first }} <span v-bind:class="{large: 'judg-large'}"> {{ messages.last }}</span> </p> <!-- 複数用いる場合 --> <p>{{ messages.first }} <span v-bind:class="{large: judgLarge, 'font-red': judgRed, 'bg-green': judgGreen }"> {{ messages.last }}</span> </p>
data: { messages: { first: "Hello", last: "Vue.js" }, judgLarge: true, judgRed: true, judgGreen: false }
v-bindと通常の当て方の併用
<p>{{ messages.first }} <span class="font-red" v-bind:class="{large: judgLarge}">{{ messages.last }} </span> </p>
data: { messages: { first: "Hello", last: "Vue.js" }, judgLarge: true }
dataを用いた当て方
<p>{{ messages.first }} <span v-bind:class="objectClass">{{ messages.last }} </span> </p>
data: { objectClass: { large: true, 'font-red': true, 'bg-green': true } }
三項演算子を用いた記法
<p>{{ messages.first }} <span v-bind:class="judg ? objectClass : '' ">{{ messages.last }}</span> </p>
data: { judg: true, objectClass: { large: true, 'font-red': true, 'bg-green': true } }
style記法について
v-bind
を用いた記法にもhtmlと同様にインラインで記述する方法がある。
dataに直接cssを記述する方法
<h2>styleを用いた記法</h2> <p>{{ messages.first }} <span v-bind:style="{color: color, fontSize: fontSize + 'px'}">{{ messages.last }} </span> </p>
data: { color: 'blue', fontSize: '30px' }
dataにobjectとしてまとめた場合の記法
<p>{{ messages.first }} <span v-bind:style="objectStyle">{{ messages.last }} </span> </p>
data: { objectStyle: { color: 'blue', fontSize: '30px' } }
終わりに
今回はv-bind
を用いてデザインを当てていく方法について勉強した。
両方の記法を勉強して感じたのは、style記法だとjavascript内に記述する内容にcssの内容が混在するためコードの可読性を下げる恐れがあると感じたので、個人的にはclass記法を用いてcssを読み込んでいく方が好みだと感じた。