Text
Expressive typography
Semantic elements and visual roles stay independent.
Type scale
Headline large
Headline small
import { Surface, Text } from '@language-lit/material3-expressive'
export function TextExample() {
return (
<Surface
as="section"
aria-labelledby="text-example-title"
color="surface-container"
shape="extra-large"
className="text-example"
>
<Text
as="h2"
id="text-example-title"
variant="displaySmall"
emphasis="emphasized"
>
Expressive typography
</Text>
<Text as="p" variant="bodyLarge">
Semantic elements and visual roles stay independent.
</Text>
<Surface color="inverse-surface" shape="medium" className="text-example__inverse">
<Text variant="labelLarge" emphasis="emphasized">
Content color is inherited
</Text>
</Surface>
<Text as="h3" variant="titleMedium" emphasis="emphasized">
Type scale
</Text>
<Text as="div" variant="displayLarge">
Display large
</Text>
<Text as="strong" variant="displayMedium">
Display medium
</Text>
<Text as="h1" variant="headlineLarge">
Headline large
</Text>
<Text as="div" variant="headlineMedium">
Headline medium
</Text>
<Text as="blockquote" variant="headlineSmall">
Headline small
</Text>
<Text as="div" variant="titleLarge">
Title large
</Text>
<Text as="div" variant="titleSmall">
Title small
</Text>
<Text as="div" variant="bodyMedium" emphasis="baseline">
Body medium (explicit baseline)
</Text>
<Text as="div" variant="bodySmall">
Body small
</Text>
<Text as="label" variant="labelMedium">
Label medium
</Text>
<Text as="div" variant="labelSmall">
Label small
</Text>
</Surface>
)
}Textは、明示的に選択したネイティブHTML要素にMaterial 3のタイプスケールを適用します。見た目のタイポグラフィと文書上の意味は独立しています。
import { Text } from '@language-lit/material3-expressive'
import '@language-lit/material3-expressive/styles.css'
<Text as="h1" variant="displayLarge" emphasis="emphasized">
Account
</Text>
<Text as="p" variant="bodyLarge">
The heading level comes from `as`; the visual scale comes from `variant`.
</Text>仕様
asの既定値はspanです。span、p、div、h1〜h6、label、legend、strong、em、small、blockquote、figcaptionを指定できます。variantの既定値はbodyLargeです。Materialのdisplay、headline、title、body、labelの各サイズでLarge、Medium、Smallを指定できます。emphasisの既定値はbaselineです。emphasizedを指定すると、同じロールに対応する現在のMaterial 3 Expressiveのスタイルになります。- ネイティブ属性、ARIA/data属性、スタイル、クラス、イベントハンドラー、子要素、選択した要素に適したrefを渡します。
- Textは選択した要素にユーザーエージェントの余白があれば取り除き、同じ視覚ロールで安定したレイアウトを実現します。ネイティブの表示形式は変更しません。
variant="displayLarge"を指定しても見出しにはなりません。ページの文書構造に合わせてas="h1"〜as="h6"を選んでください。反対に、実際の見出しに小さな視覚ロールを適用しても、見出しレベルは維持されます。
Expressiveタイプスケール
15種類のロールは次のとおりです。
displayLarge、displayMedium、displaySmallheadlineLarge、headlineMedium、headlineSmalltitleLarge、titleMedium、titleSmallbodyLarge、bodyMedium、bodySmalllabelLarge、labelMedium、labelSmall
各ロールにはベースラインと強調スタイルがあります。強調スケールは単純な太字切り替えではなく、個別にテーマ設定できるMaterialのスケールです。テーマでは、ベースライン側を変えずにフォントファミリー、太さ、サイズ、行の高さ、字間、可変フォント軸を変更できます。
タイポグラフィトークンとフォント
Textは--m3e-sys-typescale-{emphasis}-{kebab-role}-*変数から、選択したロールのフォントファミリー、太さ、サイズ、行の高さ、字間、およびCRSV、FILL、GRAD、HEXP、ROND、opsz、slnt、wdth、wghtの各軸を直接取得します。Textコンポーネント用のトークンはありません。標準のTextはシステムのタイプスケールと継承されたコンテンツ色を直接使用します。
Textのレンダー時にフォントをダウンロードしたり注入したりすることはありません。アプリケーション側でフォントファイルと@font-faceを用意し、theme.reference.typeface.brandと.plainを設定します。フォントが対応していない可変軸は無視されます。設定した軸をすべて適用するには、十分な軸に対応した可変フォントを使ってください。
Textは周囲からcolorを継承します。SurfaceはMaterialに合うコンテンツ色を指定します。意図的に例外を設ける場合は、利用側の通常のCSSで色などの表示を上書きできます。
アクセシビリティと適応
Textはロール、フォーカス対象、キーボード動作、アクセシブルな状態、操作を追加しません。ネイティブの見出し、ラベル、凡例、テキストレベルの意味付けが優先されます。labelは有効なフォームコントロールとの関連付けがある場合のみ使い、見た目のロールにかかわらず見出しレベルを文書構造に沿って保ってください。
コンポーネント独自のモーション、物理方向のレイアウト、ブレークポイント、強制カラー上書きはありません。ブラウザーの文字拡大、書字方向、強制カラー、利用側のレスポンシブCSSはそのまま適用されます。自動フィットや文字の省略はExpressiveのタイプロールではなくレイアウト上の方針のため、この基盤APIの対象外です。