アットルール
CSSのアットルールは、CSSの動作を既定するものです。
Yamada UIでは、特によく使われる@media
, @container
と@keyframes
の3つをサポートしています。
他のアットルールもYamada UIが提供するStyle Prop
のsx
またはcss
で定義することができます。
@media
@media`は、メディアクエリを使用して、特定のメディアタイプ(スクリーン、プリントなど)や条件(画面幅、解像度など)に基づいてスタイルを適用するために使用されます。これにより、異なるデバイスやビューポートサイズに対応したレスポンシブなデザインを実現することができます。
例えば、@media
のメディア種別のprint
を使い、印刷プレビューモードで表示されるスタイルを変更する場合は、type
に"print"
を設定します。
編集可能な例
<Center p="md" rounded="md" borderWidth="1px" boxSize="3xs" _media={[{ type: "print", css: { color: "primary" } }]} > Print me </Center>
上記のコードは、次のようなCSS
が生成されます。
.Center {/* ... */@media print {color: var(--ui-colors-primary);}}
複数のクエリを使う
複数のクエリを使う場合は、配列内に複数の値を設定します。
編集可能な例
<Box w="full" p="md" bg="primary" _media={[ { maxW: "1440px", css: { bg: "secondary" } }, { minW: "481px", maxW: "1280px", css: { bg: "warning" } }, { maxW: "480px", css: { bg: "danger" } }, ]} color="white" > This is Box </Box>
上記のコードは、次のようなCSS
が生成されます。
.Box {/* ... */background: var(--ui-colors-primary);@media (max-width: 1440px) {background: var(--ui-colors-secondary);}@media (min-width: 481px) and (max-width: 1280px) {background: var(--ui-colors-warning);}@media (max-width: 480px) {background: var(--ui-colors-danger);}}
Yamada UIは、テーマのトークンを用いたレスポンシブスタイルを推奨しています。テーマのトークンを用いたレスポンシブスタイルは、こちらをご覧ください。
任意のクエリを使う
任意のクエリを使う場合は、query
に文字列を設定します。
編集可能な例
<Box w="full" p="md" bg="primary" _media={[ { query: "(min-width: 977px) and (max-width: 1440px)", css: { bg: "secondary" }, }, ]} color="white" > This is Box </Box>
@container
@containerは、コンテナクエリを使用して、特定のコンテナのサイズや条件に基づいてスタイルを適用するために使用されます。これにより、コンテンツが配置されているコンテナのサイズに応じてスタイルを調整することができます。
編集可能な例
<Center containerType="inline-size" p="md" rounded="md" borderWidth="1px" resize="horizontal" overflow="auto" boxSize="3xs" > <Text _container={[{ minW: "320px", maxW: "560px", css: { color: "primary" } }]} > Resize me </Text> </Center>
上記のコードは、次のようなCSS
が生成されます。
.Center {container-type: inline-size;/* ... */@container (min-width: 320px) and (max-width: 560px) {color: var(--ui-colors-primary);}}
コンテナ名を指定する
編集可能な例
<Center containerName="parent" containerType="size" p="md" rounded="md" borderWidth="1px" resize="both" overflow="auto" boxSize="xs" > <Center containerName="child" containerType="size" p="md" rounded="md" borderWidth="1px" resize="both" overflow="auto" boxSize="3xs" > <Text _container={[ { name: "parent", orientation: "portrait", css: { color: "primary" } }, { name: "child", orientation: "landscape", css: { color: "danger" } }, ]} > Resize me </Text> </Center> </Center>
上記のコードは、次のようなCSS
が生成されます。
.Center1 {container-name: parent;container-type: size;/* ... */}.Center2 {container-name: child;container-type: size;/* ... */@container parent (orientation: portrait) {color: var(--ui-colors-primary);}@container child (orientation: landscape) {color: var(--ui-colors-danger);}}
@keyframes
@keyframesは、アニメーションの中間状態を定義するために使用されます。アニメーションは、指定された時間内に一連のスタイルの変更を実行します。
アニメーションは、別セクションにドキュメントがあります。詳しくは、アニメーションをご覧ください。
Yamada UIでは、Style props
として@keyframes
を提供していません。要素をアニメーションさせたい場合は、上記のアニメーションをご覧ください。
他のアットルール
他のアットルールを使う場合は、Style props
のsx
またはcss
で定義します。
編集可能な例
<Box w="full" p="md" bg="primary" sx={{ "@<identifier> (RULE)": { // Define the style you want to customize. }, }} > This is Box </Center>
GitHubでこのページを編集する