Cov neeg tsim khoom yuav pom Chakra UI los ua lawv tus khub muaj txiaj ntsig tshaj plaws. Raws li cov khoom siv tivthaiv rau cov kev pabcuam online, Chakra UI ua rau nws yooj yim los tsim cov apps suav nrog kev ua haujlwm zoo.
Raws li qhov tshwm sim ntawm nws txoj kev nkag tau yooj yim thiab kev ua raws li WAI-ARIA, Chakra UI cov ntsiab lus yooj yim los kho thiab rov ua lub ntsiab lus siv nws API. Txawm li cas los xij, qhov no tsuas yog qhov ntxeev ntawm cov dej khov nab kuab hais txog qhov zoo nws muaj cov neeg tsim khoom.
Hauv cov ntawv tshaj tawm no, peb yuav ua tib zoo saib qee qhov ntawm cov yam ntxwv siab dua ntawm Chakra UI thiab yuav ua li cas lawv tuaj yeem pab koj ua haujlwm tau zoo dua li tus programmer.
Chakra UI yog dab tsi?
Chakra UI yog cov khoom siv tivthaiv uas pab cov tsim tawm sai sai tsim cov neeg siv khoom siv tau yooj yim thiab rov siv tau rau lawv cov ntawv thov hauv web. Nws tau tsim nyob rau sab saum toj ntawm React thiab siv cov styled system rau nws lub cav theming.
Chakra UI lub hom phiaj yog ua kom yooj yim rau cov programmer tsim kom zoo nkauj, teb, thiab siv tau rau cov neeg siv kev sib cuam tshuam nrog kev siv zog tsawg. Cov cuab yeej muaj xws li ntau yam npaj txhij-rau-siv Cheebtsam uas yog tsim los kom yooj yim composable thiab extensible.
Chakra UI yog qhib qhov chaw, thiab nws txoj kev loj hlob yog txhawb nqa los ntawm Segment.
Yuav ua li cas rau nruab Chakra UI
Koj yuav tsum ntaus cov lus txib hauv qab no los koom nrog Chakra hauv Koj Qhov Kev Ua Haujlwm:
npm i @chakra-ui/react @emotion/react @emotion/styled framer-motion
yarn add @chakra-ui/react @emotion/react @emotion/styled framer-motion
Koj yuav tsum teeb tsa ChakraProvider ntawm lub hauv paus ntawm koj daim ntawv thov tom qab txhim kho Chakra UI. Nyob ntawm lub moj khaum koj siv, qhov no yuav yog nyob rau hauv koj cov ntaub ntawv index.jsx, index.tsx, lossis app.jsx.
import * as React from 'react'
import { ChakraProvider } from '@chakra-ui/react'
function App() {
return (
<ChakraProvider>
<TheRestOfYourApplication />
</ChakraProvider>
)
}
Advanced Techniques hauv Chakra UI
Tsim cov SVGs tiag tiag
Tej zaum koj yuav xav hloov kho koj li SVGs kom muaj kev cuam tshuam cov qauv tsim tam sim no thaum tsim cov ntsiab lus tshiab rau koj lub vev xaib. Qhov no yuav tsum tau tsim cov SVGs sib txawv rau txhua qhov ntawm ntau lub ntsiab lus.
Chakra UI, ntawm qhov tod tes, yog qhov kev xaiv zoo rau cov neeg siv ntau dua. Siv cov useColorMode
nuv hauv Chakra UI, peb tuaj yeem hloov pauv hloov xim ntawm peb SVGs.
UseColorMode tsuas yog siv tau thaum siv hom tsaus nti. Siv hom tsaus nti nrog Chakra UI thawj zaug? Kab lus no yuav qhia koj yuav ua li cas kom nws ua haujlwm zoo.
cov useColorMode
kev xaiv muaj tom qab lub hom tsaus nti tau enabled.
import { LightBulb, Moon, Sun, Vercel } from "../svgs";
import { Box, Button, Center, Stack, useColorMode } from "@chakra-ui/react";
export default function SVG() {
const { colorMode, toggleColorMode } = useColorMode();
return (
<Center>
<Box>
<Center>
<Button onClick={toggleColorMode}>
Switch to {colorMode === "light" ? "Dark" : "Light"}
</Button>
</Center>
<Stack direction={["column", "row"]} spacing="24px" mt={14}>
<LightBulb colorMode={colorMode} />
<Moon colorMode={colorMode} />
<Sun colorMode={colorMode} />
<Vercel colorMode={colorMode} />
</Stack>
</Box>
</Center>
);
}
Cov cai saum toj no integrates lub useColorMode
nuv thiab SVG kom lawv dynamic. Siv useColorMode
peb tuaj yeem khaws thiab hloov xim hom. Yog tias koj xav hloov xim, koj yuav tsum siv ob qho tib si colorMode
los yog lub toggleColor
Hom muaj nuj nqi.
Cov Ntsiab Lus Chakra
Chakra UI cov ntsiab lus yog siv los ntawm Styled System Ntsiab Specification txheej txheem. Cov ntsiab lus hauv Chakra tuaj yeem cuam tshuam ntau yam xws li xim palette rau qhov sib nrug.
Koj tsuas yog yuav tsum tau import cov extendTheme
ua haujlwm thaum ntxiv cov yuam sij los hloov cov tokens hauv qhov preset. Cia peb saib qhov no.
Koj tsuas yog yuav tsum tau tsim ib qho Theme.js
ua ntaub ntawv mus pib.
import { extendTheme } from "@chakra-ui/react";
const themes = {
colors: {
brand: {
100: "#ff0000",
80: "#ff1a1a",
},
},
};
const theme = extendTheme(overrides);
export default theme;
Nws ntxiv ob xim ntxiv rau lub ntsiab khoom kom nws muaj zog thiab txaus siab. Raws li cov software tshwj xeeb, koj tuaj yeem tsim cov cim cim rau hom ntawv, qhov tawg, qhov loj me, kab dav, thiab ntau dua.
Txhawm rau kom tau txais txiaj ntsig zoo ntawm cov tshiab tau tshaj tawm cov yam ntxwv hauv cov ntsiab lus no, koj yuav tsum xub nruab ChakraProvider
ntawm lub hauv paus ntawm daim ntawv thov.
import { ChakraProvider } from "@chakra-ui/react";
import theme from "theme";
import Nav from "Nav";
function MyApp({ Component, pageProps, router }) {
return (
<ChakraProvider theme={theme}>
<Nav />
<Component {...pageProps} />
</ChakraProvider>
);
}
export default MyApp;
Tom qab ntawd, koj ncaj qha ChakraProvider
siv lub ntsiab yam khoom koj tsim ua ntej. Tag nrho cov Chakra Cheebtsam tam sim no tuaj yeem siv hom xim.
Qee qhov haujlwm yuav tsuas yog xav tau hloov Chakra cov ntsiab lus tseem ceeb styling es tsis xav tau kev hloov kho style hauv txhua txoj kev.
Raws li ib qho piv txwv ntawm cov khoom siv style, ntawm no nws yog:
const ComponentStyle = {
// style object for base or default style
baseStyle: {},
// styles for different sizes ("sm", "md", "lg")
sizes: {},
// styles for different visual variants ("outline", "solid")
variants: {},
// default values for `size` and `variant`
defaultProps: {
size: "",
variant: "",
},
}
Tam sim no, peb mam li hloov kho cov Button
thiab Heading
feem.
const overrides = {
components: {
Button: {
baseStyle: {
borderRadius: "none",
},
sizes: {
small: {
px: 5,
h: "50px",
fontSize: "20px",
},
medium: {
px: 7,
h: "60px",
fontSize: "25px",
},
large: {
px: 8,
h: "70px",
fontSize: "30px",
borderRadius: "10px",
},
},
variants: {
primary: {
bg: "primary",
color: "#fff",
},
secondary: {
bg: "secondary",
color: "#fff",
},
ghost: {
bg: "transparent",
border: "1px solid red",
},
primaryGhost: {
bg: "transparent",
border: "1px solid",
borderColor: "primary",
},
secondaryGhost: {
bg: "transparent",
border: "1px solid",
borderColor: "secondary",
_hover: {
color: "#fff",
bg: "#BB1415",
},
},
},
},
Heading: {
baseStyle: {
fontFamily: "Inter",
fontWeight: "600",
},
sizes: {
small: {
fontSize: "20px",
},
medium: { fontSize: "25px" },
large: { fontSize: "30px" },
},
},
},
};
const theme = extendTheme(overrides);
export default theme;
Peb tuaj yeem tshem tawm ntawm ciam teb-voj voog uas tau teeb tsa los ntawm lub neej ntawd rau Button
los ntawm kev tshem nws baseStyle
. Koj tuaj yeem hloov qhov font loj thiab hom ntawv layout rau lub Heading
. Siv cov piv txwv saum toj no, koj tuaj yeem nkag siab yuav ua li cas peb tuaj yeem hloov kho tus qauv styling ntawm Chakra Cheebtsam.
Txhim kho lossis hloov kho cov yam ntxwv ntawm Chakra Cheebtsam muab rau peb pom thiab tswj xyuas cov tsos thiab kev ua haujlwm ntawm peb cov neeg siv interfaces.
Chakra thiab Third-party Cheebtsam
Chakra tso cai rau peb-tog modules tau txais txiaj ntsig los ntawm lawv cov style. Raws li qhov tshwm sim, kev sib txuas cov khoom thib peb nrog Chakra UI yuav tsum muaj tsawg dua cov tswv cuab wrappers.
Cov hauv qab no yog cov npe ntawm HTML ntsiab txhawb los ntawm Chakra Hoobkas:
import Image from "next/image";
import { Box, Center, chakra, HStack, VStack } from "@chakra-ui/react";
import woman from "../public/woman.jpg";
const ChakraNextImage = chakra(Image);
export default function factory() {
return (
<Center><HStack spacing={10}>
<Box width="400px" h="400px" position="relative">
<ChakraNextImage
src={woman}
alt="an img"
layout="fill"
objectFit="cover"
borderRadius="full"
/>
</Box>
</HStack>
</Center>
);
}
Peb koom ua ke Next.js Image
tivthaiv nrog Chakra UI nyob rau hauv cov cai snippet saum toj no. Ces, peb teeb ib ChakraNextImage
tivthaiv, thiab dhau ntawm nws, peb tuaj yeem hla Chakra's style props rau Image
.
animations
Koj tuaj yeem txhais cov animations siv Chakra UI's keyframes
tus pab. Keyframes
coj mus rau hauv CSS keyframe txhais thiab xa ib yam khoom koj tuaj yeem siv hauv cov qauv:
import {
Box,
Button,
Center,
VStack,
keyframes,
} from "@chakra-ui/react";
import { LightBulb } from "svgs";
const spin = keyframes`
from {transform: rotate(0deg);}
to {transform: rotate(360deg)}
`;
export default function Transition() {
const spinAnimation = `${spin} infinite 2s linear`;
return (
<Center>
<VStack spacing={20}>
<Box animation={animation}>
<LightBulb />
</Box>
</VStack>
</Center>
);
}
siv cov keyframes
tus pab, koj tuaj yeem tsim cov animation koj pom ntawm no. Cov animation prop tso cai rau peb ua kom muaj zog Chakra UI Cheebtsam.
Raws li cov kauj ruam kawg, hla spinAnimation
rau hauv lub thawv tivthaiv kom cov animations yuav raug ntxiv rau Chakra UI apps.
Nplooj Hloov
Cov nplooj ntawv hloov pauv tuaj yeem raug ntxiv rau peb cov apps txhawm rau txhim kho cov neeg siv kev paub thaum lawv txav ntawm nplooj ntawv.
Cov hauv qab no yog ib qho piv txwv ntawm yuav ua li cas ua tiav nws nrog Chakra UI:
import { ChakraProvider, ScaleFade } from "@chakra-ui/react";
import theme from "theme";
import Nav from "Nav";
function MyApp({ Component, pageProps, router }) {
return (
<ChakraProvider theme={theme}>
<Nav />
<ScaleFade
key={router.route}
initialScale={0.9}
in="true"
>
<Component {...pageProps} />
</ScaleFade>
</ChakraProvider>
);
}
export default MyApp;
Txhawm rau siv cov nplooj ntawv hloov pauv, siv cov khoom hloov pauv los ntawm Chakra UI. Kev hloov pauv ScaleFade yog siv nyob rau hauv kab saum toj no ntawm cov cai.
Thov qhia ScaleFade
hais txog koj daim ntawv thov txoj hauv kev kom qhov kev hloov pauv tuaj yeem ua haujlwm thaum koj txav mus thoob qhov screen! Cov khoom muab cov ntaub ntawv hais txog txoj kev tam sim no, uas koj tuaj yeem xa mus rau ScaleFade
tus key prop. InitialScale
thiab nyob rau hauv prop yog siv los tsim qhov pib ntsuas ntawm qhov kev hloov pauv thiab ua kom nws tshwm sim thaum cov khoom siv tau ua tiav.
Hauv daim no, peb tau saib qee qhov ntawm cov yam ntxwv thiab lub peev xwm uas Chakra UI muaj thiab nws pab peb li cas hauv peb qhov kev paub zoo meej. Peb kuj tau tshawb nrhiav yuav ua li cas tsim cov khoom siv lub ntsiab lus thiab tsim cov qauv thoob ntiaj teb tuaj yeem pab tswj kev ua kom muaj peev xwm ntawm peb lub cev.
Yog tias koj tseem tsis tau, Peb ntseeg tias tsab xov xwm no tau muab qee cov tswv yim rau koj los txhim kho koj txoj kev txhim kho Chakra UI.
Sau ntawv cia Ncua