點燈坊

失くすものさえない今が強くなるチャンスよ

如何在 Pug 使用 Variant ?

Sam Xiao's Avatar 2021-05-07

Pug 的 Class 名稱不允許特殊字元,但 Tailwind CSS 的 Variant 使用了 :,在 Pug 使用 Variant 則面臨挑戰。

Version

Tailwind CSS 2.1.1
Pug 3.0.2

odd variant

separator000

使用 odd variant 實現黑白間隔。

<template>
  <ul>
    <li v-for="x in items" class="odd:bg-gray-300">
      {{ x }}
    </li>
  </ul>
</template>

<script setup>
ref: items = [1, 2, 3]
</script>

第 3 行

<li v-for="x in items" class="odd:bg-gray-300">
  • odd:奇數列會改以 bg-gray-300 顯示

Pug

separator001

使用 Pug 改寫後出現錯誤無法顯示。

<template lang='pug'>
ul
  li(v-for='x in items').odd:bg-gray-300 {{ x }}
</template>

<script setup>
ref: items = [1, 2, 3]
</script>

第 3 行

li(v-for='x in items').odd:bg-gray-300 {{ x }}

因為 odd variant 使用了 :,但 Pug 不允許 class 名稱使用特殊字元,因此無法顯示。

Class Attribute

separator000

改用 class attribute 寫法則正常顯示。

<template lang='pug'>
ul
  li(v-for='x in items' class='odd:bg-gray-300') {{ x }} 
</template>

<script setup>
ref: items = [1, 2, 3]
</script>

第 3 行

li(v-for='x in items' class='odd:bg-gray-300') {{ x }} 

凡遇到 Tailwind 在 class 使用特殊字元,改用 class attribute 寫法一定可行,因為允許特殊字元。

Separator

separator000

改用 Tailwind 的 separator 設定亦可行。

<template lang='pug'>
ul
  li(v-for='x in items').odd_bg-gray-300 {{ x }}
</template>

<script setup>
ref: items = [1, 2, 3]
</script>

odd:bg-gray-300 改成 odd_bg-gray-300,如此因為沒有特殊字元,可使用 . 顯示。

tailwind.config.js

module.exports = {
  mode: 'jit',
  purge: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend: {},
  },
  plugins: [
    require('@tailwindcss/forms'),
  ],
  separator: '_'
}

11 行

separator: '_'

將 variant 的 : 改成 _ 配合 Pug。

Conclusion

  • Tailwind 的 variant 會使用 : 特殊字元,可以使用 Pug 方式解,亦可使用 Tailwind 方式解

Reference

Tailwind CSS, Separator