Design Systemに則ったTypographyのスタイルを提供
Example#
Props#
| Name | Type | Default | Description |
|---|---|---|---|
| as | HTMLの要素名 | 'p' | レンダリングされる要素を指定。renderとは違い、HTMLのネイティブ要素に限定 また、指定した要素に応じて対応する属性も合わせて使用可能に |
| bold optional | boolean | - | 太字とするかどうか |
| children optional | ReactNode | - | 表示するテキスト pやdivなどを含めないでください(文法的にNGです) |
| color | 'main''sub''link' | 'main' | 文字色の抽象値 |
| data-* optional | string | - | Custom data attributes |
| id optional | string | - | HTMLのid属性 |
| leading optional | 'typeごとの値' | - | 行送りの抽象値(`line-height`) |
| noWrap optional | boolean | - | 領域が狭い場合でも折り返えさない |
| render optional | ReactElement | - | レンダリングされる要素を変更。フレームワークのリンクコンポーネントを想定しています 指定した場合、colorがデフォルトでlinkになります |
| size | 'typeごとの値' | md | フォントサイズの抽象値 |
| textAlign optional | leftcenterright | - | テキストの配置。指定しない場合、親要素の配置を継承 |
| type | 'body''heading''button' | body | テキストの種類 |
Feature#
Typography トークンに基づいたスタイルを提供します。
Usage#
- テキストのスタイルに困った場合、シンプルに
<Text>でテキストを囲ってくださいpropsを指定しなくとも、本文で使用するスタイル(type='body'、size='md')がデフォルトで適用されています
- デフォルトでは、
<p>要素としてレンダリングされます
<Text>内の一部を装飾したい#
例えば一部の単語を強調したいケースなどがあります。<Text>をネストし、as propでspanを指定、装飾したいpropを追加します。
<Text type="note" size="lg">
<Text as="span" type="note" size="lg" color="red" bold>
Alert:
</Text>
Please fill in all fields
</Text>
実際の動作例はtext in textを参照してください。
<p>要素が適さない場合#
- おおむね
<p>要素を使用すれば問題有りません - ただし、いくつかのケースで問題があります
<p>要素に<p>要素を内包できません- ネストした場合、ブラウザの修復により構造が崩れる可能性があります
<button>のような、<p>などのフローコンテンツを子に持てない要素が存在します1- これらの解決策として、
aspropでレンダリングされる要素を変更します。spanが良いでしょう
ブロックレベル要素が適さない場合#
<p>はブロックレベル要素2のため水平方向の領域を占有します- デザイン上、不都合がある可能性があります
- いくつかの解決策が考えられます
aspropでインラインレベルの要素に変更- CSSで
display: inlineなどを指定 <Text>の親要素のdisplayにflexやgridを指定
「テキスト」に使えるマークアップ#
代表的なもの列挙します。
<div>や<span>を使う前に、以下のマークアップを検討してください。
- 見出し
<h1>〜<h6>
- 注釈など
<small>(単純に「小さい文字」ではないため注意)
- 強調
<strong><b>
- 引用
<blockquote><q>
- ルビ
<ruby><rt><rp>
- 日時
<time>
- 省略
<abbr>
Related resources#
Footnotes#
-
(記述コンテンツ - コンテンツカテゴリー - HTML: ハイパーテキストマークアップ言語 | MDN)[https://developer.mozilla.org/ja/docs/Web/HTML/Content_categories#%E8%A8%98%E8%BF%B0%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84] ↩
-
Block-level content (ブロックレベルコンテンツ) - Block-level content (ブロックレベルコンテンツ) - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN | MDN ↩