【Tailwind和訳】LAYOUT/Box Sizing
この記事について
この記事は、LAYOUT/Box Sizingの記事を和訳したものです。
記事内で使用する画像は、公式ドキュメント内の画像を引用して使用させていただいております。
Box Sizing
ブラウザが要素の合計サイズをどのように計算するかを制御するユーティリティです。
クラス | プロパティ |
---|---|
box-border |
box-sizing: border-box |
box-content |
box-sizing: content-box |
ボーダーとパディングを含む
box-border
を使用すると、要素のbox-sizing
をborder-box
に設定し、要素の高さや幅を指定したときに、その要素のボーダーとパディングを含めるようにブラウザに指示します。
これは、100px×100px の要素に 2px のボーダーと 4px のパディングを付けた場合、100px×100px として表示され、内部のコンテンツエリアは 88px×88px となります。
Tailwind では、プリフライトの基本スタイルで、すべての要素のデフォルトをこれにしています。
<div class="box-border h-32 w-32 p-4 border-4 ...">
<!-- ... -->
</div>
ボーダーとパディングを除外する
box-content
を使用すると、要素のbox-sizing
がcontent-box
に設定され、ブラウザは要素の指定された幅または高さの上にボーダーとパディングを追加するようになります。
つまり、100px×100px の要素に 2px のボーダーと 4px のパディングを施した場合、実際には 112px×112px で表示され、内部のコンテンツ領域は 100px×100px となります。
<div class="box-content h-32 w-32 p-4 border-4 ...">
<!-- ... -->
</div>
レスポンシブ
特定のブレークポイントでボックスサイズを制御するには、既存のボックスサイズ変更ユーティリティーに {screen}:
というプレフィックスを追加します。例えば、md:box-content
を使用すると、中程度のスクリーンサイズ以上でのみbox-content
ユーティリティを適用します。
<div class="box-border md:box-content ...">
<!-- ... -->
</div>
Tailwind のレスポンシブデザイン機能についての詳細は、レスポンシブデザインのドキュメントをご覧ください。
カスタマイズ
バリアント
デフォルトでは、レスポンシブ・バリアントのみがボックス・サイジング・ユーティリティー用に生成されます。
tailwind.config.js
ファイルのvariants
セクションにあるboxSizing
プロパティを変更することで、ボックスサイズ変更ユーティリティー用に生成されるバリアントをコントロールすることができます。
例えば、このコンフィグはホバーとフォーカスのバリアントも生成します。
module.exports = {
variants: {
extend: {
// ...
+ boxSizing: ['hover', 'focus'],
}
}
}
無効化
ボックスサイズ変更ユーティリティをプロジェクトで使用する予定がない場合は、設定ファイルのcorePlugins
セクションでboxSizing
プロパティをfalse
に設定することで、完全に無効にすることができます。
module.exports = {
corePlugins: {
// ...
+ boxSizing: false,
}
}
Discussion