🗽

【Tailwind和訳】CUSTOMIZATION/Theme

2021/10/23に公開約9,100字

この記事について

この記事は、CUSTOMIZATION/Themeの記事を和訳したものです。

記事内で使用する画像は、公式ドキュメント内の画像を引用して使用させていただいております。

Theme Configuration

プロジェクトのデフォルトテーマをカスタマイズします。

tailwind.config.js ファイルの theme セクションでは、プロジェクトのカラーパレット、タイプスケール、フォント、ブレークポイント、境界線の半径の値などを定義します。

tailwind.config.js
const colors = require('tailwindcss/colors')

module.exports = {
  theme: {
    screens: {
      sm: '480px',
      md: '768px',
      lg: '976px',
      xl: '1440px',
    },
    colors: {
      gray: colors.coolGray,
      blue: colors.lightBlue,
      red: colors.rose,
      pink: colors.fuchsia,
    },
    fontFamily: {
      sans: ['Graphik', 'sans-serif'],
      serif: ['Merriweather', 'serif'],
    },
    extend: {
      spacing: {
        '128': '32rem',
        '144': '36rem',
      },
      borderRadius: {
        '4xl': '2rem',
      }
    }
  }
}

開始するための非常に寛大な値のセットを備えた賢明なデフォルトテーマを提供しますが、変更または拡張することを恐れないでください。デザインの目標に合わせて、必要なだけカスタマイズすることをお勧めします。

テーマの構造| Theme structure

theme オブジェクトには、screenscolorsspacing のキーと、カスタマイズ可能なコアプラグインごとのキーが含まれています。

テーマオプションの完全なリストは、テーマ設定リファレンスまたはデフォルトテーマを参照してください。

Screens

screens キーでは、プロジェクトのレスポンシブブレークポイントをカスタマイズすることができます。

tailwind.config.js
module.exports = {
  theme: {
    screens: {
      'sm': '640px',
      'md': '768px',
      'lg': '1024px',
      'xl': '1280px',
      '2xl': '1536px',
    }
  }
}

詳しくは、ブレークポイントのカスタマイズに関するドキュメントをご覧ください。

Colors

colors キーでは、プロジェクトのグローバルカラーパレットをカスタマイズすることができます。

tailwind.config.js
module.exports = {
  theme: {
    colors: {
      transparent: 'transparent',
      black: '#000',
      white: '#fff',
      gray: {
        100: '#f7fafc',
        // ...
        900: '#1a202c',
      },

      // ...
    }
  }
}

デフォルトでは、これらの色は、backgroundColorborderColortextColor などのすべての色関連のコアプラグインに継承されます。

詳しくは、カラーカスタマイズのドキュメントをご覧ください。

Spacing

spacing キーでは、プロジェクトに合わせてグローバルスペーシングとサイジングスケールをカスタマイズすることができます。

tailwind.config.js
module.exports = {
  theme: {
    spacing: {
      px: '1px',
      0: '0',
      0.5: '0.125rem',
      1: '0.25rem',
      1.5: '0.375rem',
      2: '0.5rem',
      2.5: '0.625rem',
      3: '0.75rem',
      3.5: '0.875rem',
      4: '1rem',
      5: '1.25rem',
      6: '1.5rem',
      7: '1.75rem',
      8: '2rem',
      9: '2.25rem',
      10: '2.5rem',
      11: '2.75rem',
      12: '3rem',
      14: '3.5rem',
      16: '4rem',
      20: '5rem',
      24: '6rem',
      28: '7rem',
      32: '8rem',
      36: '9rem',
      40: '10rem',
      44: '11rem',
      48: '12rem',
      52: '13rem',
      56: '14rem',
      60: '15rem',
      64: '16rem',
      72: '18rem',
      80: '20rem',
      96: '24rem',
    },
  }
}

デフォルトでは、これらの値は、paddingmarginwidthheightmaxHeightgapinsetspacetranslate の各コアプラグインに継承されます。

詳しくは、スペーシングのカスタマイズに関するドキュメントをご覧ください。

Core plugins

theme セクションの残りの部分は、個々のコアプラグインで利用できる値を設定するために使用されます。

例えば、borderRadius キーでは、どのような境界半径のユーティリティーを生成するかをカスタマイズできます。

tailwind.config.js
module.exports = {
  theme: {
    borderRadius: {
      'none': '0',
      'sm': '.125rem',
      DEFAULT: '.25rem',
      'lg': '.5rem',
      'full': '9999px',
    },
  }
}

キーは、生成されるクラスのサフィックスを決定し、値は、実際の CSS 宣言の値を決定します。

上記の borderRadius の設定例では、次のような CSS クラスが生成されます。

.rounded-none {
  border-radius: 0;
}
.rounded-sm {
  border-radius: 0.125rem;
}
.rounded {
  border-radius: 0.25rem;
}
.rounded-lg {
  border-radius: 0.5rem;
}
.rounded-full {
  border-radius: 9999px;
}

テーマの設定で DEFAULT というキーを使うと、サフィックスなしで rounded クラスが作成されることに気づくでしょう。これは、Tailwind での一般的な慣習であり、すべてのコアプラグインでサポートされています。

特定のコア・プラグインのカスタマイズについての詳細は、そのプラグインのドキュメントをご覧ください。

利用可能なテーマプロパティとそのデフォルト値の完全なリファレンスについては、デフォルトのテーマ設定を参照してください。

デフォルトテーマのカスタマイズ| Customizing the default theme

初期設定のままでは、プロジェクトは自動的にデフォルトのテーマ設定の値を継承します。デフォルトのテーマをカスタマイズしたい場合は、目的に応じていくつかの選択肢があります。

デフォルトテーマを拡張する

テーマオプションのデフォルト値を維持しつつ、新しい値を追加したい場合は、設定ファイルの theme セクションにある extend キーの下にエクステンションを追加します。

例えば、既存のブレークポイントを維持したまま、新たなブレークポイントを追加したい場合は、screens プロパティを拡張します。

tailwind.config.js
module.exports = {
  theme: {
    extend: {
      // Adds a new breakpoint in addition to the default breakpoints
      screens: {
        '3xl': '1600px',
      }
    }
  }

デフォルトテーマを上書きする

デフォルトテーマのオプションをオーバーライドするには、tailwind.config.jstheme セクションの下にオーバーライドを直接追加します。

tailwind.config.js
module.exports = {
  theme: {
    // Replaces all of the default `opacity` values
    opacity: {
      '0': '0',
      '20': '0.2',
      '40': '0.4',
      '60': '0.6',
      '80': '0.8',
      '100': '1',
    }
  }
}

これは、そのキーに対する Tailwind のデフォルトの設定を完全に置き換えることになりますので、上記の例では、デフォルトの不透明度のユーティリティーは何も生成されません。

あなたが提供していないキーは、デフォルトのテーマから継承されますので、上記の例では、色、間隔、境界線の半径、背景の位置などのデフォルトのテーマの設定が維持されます。

もちろん、同じ設定の中で、デフォルトのテーマの一部を上書きしたり、デフォルトのテーマの他の部分を拡張したりすることができます。

tailwind.config.js
module.exports = {
  theme: {
    opacity: {
      '0': '0',
      '20': '0.2',
      '40': '0.4',
      '60': '0.6',
      '80': '0.8',
      '100': '1',
    },
    extend: {
      screens: {
        '3xl': '1600px',
      }
    }
  }
}

他の値を参照する| Referencing other values

テーマ内の他の値を参照する必要がある場合は、静的な値の代わりにクロージャを提供することで可能になります。クロージャは theme() 関数を受け取り、これを使ってテーマ内の他の値をドット記法で検索することができます。

例えば、塗りつぶし設定で theme('colors')を参照することで、カラーパレットのすべての色の塗りつぶしユーティリティを生成することができます。

tailwind.config.js
module.exports = {
  theme: {
    colors: {
      // ...
    },
    fill: theme => theme('colors')
  }
}

theme()関数は、完全にマージされたテーマオブジェクトから探している値を見つけようとするので、デフォルトのテーマ値だけでなく、独自のカスタマイズを参照することができます。また、再帰的に動作するため、チェーンの最後に静的な値がある限り、探している値を解決することができます。

この種のクロージャーは、各セクション内のキーではなく、トップレベルのテーマキーでのみ使用できることに注意してください。

❌  個々の値に関数を使用することはできません

tailwind.config.js
module.exports = {
  theme: {
    fill: {
      gray: theme => theme('colors.gray')
    }
  }
}

✅  トップレベルのテーマキーの使用機能

tailwind.config.js
module.exports = {
  theme: {
    fill: theme => ({
      gray: theme('colors.gray')
    })
  }
}

デフォルトのテーマを参照する| Referencing the default theme

何らかの理由でデフォルトテーマの値を参照したい場合は、tailwindcss/defaultTheme からインポートすることができます。

これが便利な例としては、Tailwind のデフォルトフォントスタックの一つにフォントファミリーを追加したい場合があります。

tailwind.config.js
const defaultTheme = require('tailwindcss/defaultTheme')

module.exports = {
  theme: {
    extend: {
      fontFamily: {
        sans: [
          'Lato',
          ...defaultTheme.fontFamily.sans,
        ]
      }
    }
  }
}

コアプラグイン全体を無効にする| Disabling an entire core plugin

特定のコアプラグインのクラスを生成したくない場合は、テーマの設定でそのキーに空のオブジェクトを提供するよりも、corePlugins の設定でそのプラグインを false にする方が良いでしょう。

❌  テーマ構成で空のオブジェクトを割り当てないでください

tailwind.config.js
module.exports = {
  theme: {
    opacity: {},
  }
}

✅   corePlugins 構成でプラグインを無効にしてください

tailwind.config.js
module.exports = {
  corePlugins: {
    opacity: false,
  }
}

最終結果は同じですが、多くのコアプラグインは構成を公開しないため、とにかく corePlugins を使用してのみ無効にできます。したがって、一貫性を保つことをお勧めします。

独自のキーを追加する| Adding your own keys

theme オブジェクトに独自のキーを追加すると便利な場合がいくつかあります。

例えば、複数のコアプラグイン間で共通する値のための単一の情報源を作るために、新しいキーを追加することができます。例えば、backgroundPosition プラグインと objectPosition プラグインの両方から参照される共有 position オブジェクトを抽出することができます。

tailwind.config.js
module.exports = {
  theme: {
    positions: {
      bottom: 'bottom',
      center: 'center',
      left: 'left',
      'left-bottom': 'left bottom',
      'left-top': 'left top',
      right: 'right',
      'right-bottom': 'right bottom',
      'right-top': 'right top',
      top: 'top',
    },
    backgroundPosition: theme => theme('positions'),
    objectPosition: theme => theme('positions'),
  }
}

別の例は、カスタムプラグイン内で参照する新しいキーを追加することです。たとえば、プロジェクトの filters プラグインを作成した場合、プラグインが参照するthemeオブジェクトに filters キーを追加できます。

tailwind.config.js
module.exports = {
  theme: {
    filters: {
      none: 'none',
      grayscale: 'grayscale(1)',
      invert: 'invert(1)',
      sepia: 'sepia(1)',
    }
  },
  plugins: [
    require('./plugins/filters')
  ],
}

テーマ関数を使用して theme オブジェクト全体を CSS で使用できるため、CSS で参照できるようにするためだけにキーを追加することもできます。

Configuration reference

screenscolorsspacing を除き、theme オブジェクトのすべてのキーは、Tailwind のコアプラグインの 1 つに対応しています。多くのプラグインは、静的な値のセットしか受け取らない CSS プロパティを担当しているので(例えば float のように)、すべてのプラグインが theme オブジェクトに対応するキーを持っているわけではないことに注意してください。

これらのキーはすべて、デフォルトテーマの拡張を可能にする theme.extend キーの下でも利用可能です。

https://tailwindcss.com/docs/theme#configuration-reference

Discussion

ログインするとコメントできます