ホームへ vueトップへ 回答のはじめ方ガイド

💪 そこそこ

条件に沿ってクラスを付け替えてみよう

#クラスバインディング #TailwindCSS

次のような在庫データの配列があります:

const products = [
  { name: "りんご", stock: 2 },
  { name: "バナナ", stock: 8 },
  { name: "ぶどう", stock: 0 },
  { name: "みかん", stock: 13 },
];

このデータを<table>で表示してください。
さらに、在庫数(stock)に応じてセルの背景色を切り替えてください。
スタイルはTailwind CSSを使い、それぞれ以下のクラスを利用して色分けしてください。

  • 在庫がしきい値以下: bg-yellow-100
  • 在庫がしきい値より多い: bg-green-100

しきい値は5個とします。

表示例

商品名在庫数
りんご2個
バナナ8個
ぶどう0個
みかん13個

ベースとする<table>の例

<table class="w-full border-collapse border border-stone-300 [&_th,td]:border [&_th,td]:border-stone-300 [&_th,td]:p-2">
  <thead class="bg-stone-100">
    <tr>
      <th>商品名</th>
      <th>在庫数</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>りんご</td>
      <td>X個</td>
    </tr>
  </tbody>
</table>

ヒント

ヒントを見る
  • クラスを動的に切り替えるには、v-bind:class(省略形:class)を使います。これをクラスバインディングと呼びます。
  • クラスを条件で切り替えたいときは、:classの中で三項演算子を使うと簡潔に書けます。
  • 在庫数がしきい値以下かどうかを条件式にして、2種類の背景色クラスを切り替える方法を考えてみましょう。このとき、しきい値は定数として定義するのがおすすめです。

チャレンジ課題

在庫が0個のとき、セルの背景色を赤色(bg-red-100)にしてください。
ヒント: 算出プロパティを使って実装するのがおすすめ!公式ドキュメントを参考にしてみましょう。

公式ドキュメント

参考記事

チェックリスト