導入
皆様こんにちは。
サッカー観戦をしながらジンギスカンを食べて休日を過ごしているシロクマです。
まじめに勉強をしようと思ったのですが、腰が重い為今回はFEライブラリで少し遊んでみました。
ChatGPTにお勧めのUIライブラリを聞いたところChakura UIをお勧めされたので使い方をまとめてみます。
3) レイアウトの基本(覚える順)
- Box:万能div(まずこれ)
- Stack:縦並び(間隔 spacing が楽)
- HStack/VStack:横/縦のStack
- Flex:整列・余白・左右寄せ(Spacerが便利)
- Container:中央寄せ&最大幅
- SimpleGrid:カード一覧など
例:左右寄せヘッダー
<Flex align="center">
<Heading size="md">Title</Heading>
<Spacer />
<Button>Action</Button>
</Flex>
4) よく使うスタイルprops
-
余白・サイズ
p, px, py, m, mt, mb...
w, h, minW, maxW -
見た目
bg(背景)
color(文字色)
borderWidth, borderColor
rounded("md"|"lg"|"xl"|"2xl")
boxShadow
例:
<Box p={6} bg="blackAlpha.300" borderWidth="1px" rounded="2xl" />
5) 擬似状態(超重要)
- _hover
- _focus
- _active
- _disabled
例:
<Button
_hover={{ transform: "translateY(-1px)" }}
_focus={{ boxShadow: "0 0 0 2px rgba(99,102,241,.6)" }}
>
Save
</Button>
6) レスポンシブ(Chakraの強み)
<SimpleGrid columns={{ base: 1, md: 2, lg: 3 }} spacing={6} />
<Input w={{ base: "160px", md: "320px" }} />
- フォーム(型)
基本はこのセット:
- FormControl
- FormLabel
- Input / Textarea / Select
- FormHelperText
- FormErrorMessage
例:
<FormControl isInvalid={!!error}>
<FormLabel>Title</FormLabel>
<Input value={title} onChange={...} />
<FormHelperText>Short summary</FormHelperText>
</FormControl>
8) ダークモード(v2は標準)
トグル
const { colorMode, toggleColorMode } = useColorMode()
色をモードで変える
const bg = useColorModeValue("white", "gray.900")
<Box bg={bg} />
9) テーマ(extendTheme)
「毎回 props を書くのが面倒」になったら theme に寄せる。
例:初期をダーク固定
const config = { initialColorMode: "dark", useSystemColorMode: false }
export const theme = extendTheme({ config })
例:Input(filled)の文字色とplaceholderを統一
components: {
Input: {
variants: {
filled: {
field: {
color: "whiteAlpha.900",
_placeholder: { color: "whiteAlpha.500" },
},
},
},
},
}
10) 便利フック(覚えると強い)
- useToast():通知
- useDisclosure():Modal/Drawer開閉
- useBreakpointValue():レスポンシブで値切り替え
- useColorModeValue():ダーク対応
11) “困った時”の基本ルール
- だいたい Stack / Flex / SimpleGrid で解決する
- “見た目がバラける” → theme に寄せる
- “hover/focusが弱い” → _hover, _focus に明示
- “Inputが読みにくい” → color と _placeholder を明示
12) よくある設計パターン(頻出)
AppShell(Header/Main/Footer)
一覧:SimpleGrid + Card
詳細:Container + Heading + Text
フォーム:Card + Stack + FormControl
管理画面:Flex + Sidebar + Main
13) 使ってみた
という訳で要点をチャッピーにまとめてもらいました。
Material uiを使っていたのでBoxとかあると安心しますね。
実際に実装もしてもらったので例として載せておきます。
AppSchellは12で設計パターンとして出てきました。
ページをHeaderやFooterで事前にレイアウトを作っておきます。
Rootingと合わせて使うと使いやすいですね。
他にもChakura UIっぽい見た目でBlogを作ってもらったら結構いい感じの見た目になりました。
実際使い方を覚えてもshadowの付け方とかはなれるのに時間がかかるので、
AIの恩恵をめちゃめちゃ感じますね。
あとがき
という訳で今回はお楽しみ会でした。
UIライブラリって触っている時楽しいですよね。
FEエンジニアはコーディングですぐ見た目に反映できるので楽しいです。
それではまたお会いしましょう(`・ω・´)ゞ



