レスポンシブスタイル
Yamada UIは、すぐに使えるレスポンシブスタイルをサポートしています。スタイルのprops
にオブジェクトを渡すだけでPCファーストのレスポンシブスタイルに対応します。
Yamada UIは、デフォルトで@media(max-width)
のメディアクエリを用いたレスポンシブデザインを採用しています。もし、@media(min-width)
のメディアクエリを採用したい場合は、コンフィグをカスタマイズするをご覧ください。
ブレイクポイントについて
レスポンシブスタイルは、テーマで定義されたブレイクポイントを参照します。Yamada UIには、デフォルトのテーマがあり、ブレイクポイントが定義されています。
実際に定義されている値はこちらです。
breakpoints.ts
export const breakpoints = {sm: "30em", // 480pxmd: "48em", // 768pxlg: "61em", // 976pxxl: "80em", // 1280px"2xl": "90em", // 1440px}
ブレイクポイントを変更したい場合は、こちらをご覧ください。
レスポンシブスタイルの構文
レスポンシブスタイルを設定する場合は、スタイルのprops
にオブジェクトを渡すだけでPCファーストのレスポンシブスタイルに対応します。
- オブジェクトのキーは、テーマのブレイクポイントで設定されているキーを定義します。
- オブジェクトの値は、キーで設定するスタイルの値を定義します。
編集可能な例
<Box w="full" p="md" bg={{ base: "primary", "2xl": "secondary", xl: "warning", lg: "danger" }} color="white" > This is Box </Box>
上記のコードは、次のようなCSS
が生成されます。
.Box {background: var(--ui-colors-primary);@media screen and (max-width: 1440px) {background: var(--ui-colors-secondary);}@media screen and (max-width: 1280px) {background: var(--ui-colors-warning);}@media screen and (max-width: 976px) {background: var(--ui-colors-warning);}@media screen and (max-width: 480px) {background: var(--ui-colors-danger);}}
レスポンシブのユーティリティ
Yamada UIには、レスポンシブなレイアウトを構築するために便利なカスタムフックを提供しています。
useBreakpoint
を使う
コンポーネント内で現在のブレイクポイントを取得する場合には、useBreakpoint
を使用します。
編集可能な例
const breakpoint = useBreakpoint() return <Box p="md">The current breakpoint is "{breakpoint}"</Box>
useBreakpointValue
を使う
useBreakpointValue
は、引数で渡されたオブジェクトから現在のブレイクポイントの値を返すカスタムフックです。
編集可能な例
const breakpoint = useBreakpoint() const bg = useBreakpointValue({ base: "red.500", "2xl": "pink.500", xl: "blue.500", lg: "green.500", md: "yellow.500", sm: "purple.500", }) return ( <Box bg={bg} p="md" color="white"> The current breakpoint is "{breakpoint}" </Box> )
これは、Yamada UI以外のライブラリのコンポーネントのスタイルを設定するのに適しています。
ブレイクポイントをカスタマイズする
シナリオによっては、アプリケーションのブレークポイントの定義が必要になる場合があります。
sm
・md
・lg
・xl
などの一般的なエイリアスを使用することをオススメします。
import { UIProvider, extendTheme } from "@yamada-ui/react"const breakpoints = {sm: "376px",md: "768px",lg: "960px",xl: "1200px","2xl": "1440px",}const customTheme = extendTheme({ breakpoints })({ omit: "breakpoints" })const App = () => {return (<UIProvider theme={customTheme}><YourApplication /></UIProvider>)}
テーマをもっと学びたい場合は、テーマをカスタマイズするやコンポーネントのスタイルをご覧ください。
GitHubでこのページを編集する