Chakra-ui

一、chakra-ui组件库介绍

Chakra UI 是⼀个简单的, 模块化的易于理解的 UI 组件库. 提供了丰富的构建 React 应⽤所需的UI组件.

⽂档: https://chakra-ui.com/docs/getting-started

  1. Chakra UI 内置 Emotion,是 CSS-IN-JS 解决⽅案的集⼤成者
  2. 基于 Styled-Systems https://styled-system.com/
  3. ⽀持开箱即⽤的主题功能
  4. 默认⽀持⽩天和⿊夜两种模式
  5. 拥有⼤量功能丰富且⾮常有⽤的组件
  6. 使响应式设计变得轻⽽易举
  7. ⽂档清晰⽽全⾯. 查找API更加容易
  8. 适⽤于构建⽤于展示的给⽤户的界⾯
  9. 框架正在变得越来越完善

二、Chakra-UI快速开始

1、下载 chakra-ui

npm install @chakra-ui/core@1.0.0-next.2

2、克隆默认主题

Chakra-UI 提供的组件是建⽴在主题基础之上的, 只有先引⼊了主题组件才能够使⽤其他组件.
npm install @chakra-ui/theme

3、 引⼊主题

在这里插入图片描述

三、样式属性

Style Props 是⽤来更改组件样式的, 通过为组件传递属性的⽅式实现. 通过传递简化的样式属性以达到提升开发效率的⽬的
在这里插入图片描述
Style Props 是⽤来更改组件样式的, 通过为组件传递属性的⽅式实现. 通过传递简化的样式属性以达到提升开发效率的⽬的.

在这里插入图片描述
在这里插入图片描述

四、样式主题

1 颜⾊模式(color mode)

chakra-ui 提供的组件都⽀持两种颜⾊模式, 浅⾊模式(light)和暗⾊模式(dark).
可以通过 useColorMode 进⾏颜⾊模式的更改.

在这里插入图片描述
Chakra 将颜⾊模式存储在 localStorage 中, 并使⽤类名策略来确保颜⾊模式是持久的.

在这里插入图片描述
在这里插入图片描述

五、主题 useColorModeValue钩子函数

根据颜⾊模式设置样式

chakra 允许在为元素设置样式时根据颜⾊模式产⽣不同值. 通过 useColorModeValue 钩⼦函数实现

在这里插入图片描述

六、强制组件颜⾊模式

使组件不受颜⾊模式的影响, 始终保持在某个颜⾊模式下的样式.

在这里插入图片描述

七、 颜⾊模式通⽤设置

  1. 设置默认颜⾊模式
    通过 theme.config.initialColorMode 可以设置应⽤使⽤的默认主题.

  2. 使⽤操作系统所使⽤的颜⾊模式
    通过 theme.config.useSystemColorMode 可以设置将应⽤的颜⾊模式设置为操作系统所使⽤的颜⾊模式.

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

八、主题对象–颜色

在设置颜⾊时, 可以但不限于取主题中提供的颜⾊值.

在这里插入图片描述
颜色后面的数字代表深浅
在这里插入图片描述

九、主题对象–间距大小

使⽤ space 可以⾃定义项⽬间距. 这些间距值可以由 padding, margin 和 top, left, right, bottom 样式引⽤.

每次增加0.25rem
在这里插入图片描述

十、主题对象-响应式断点

配置响应数组值中使⽤的默认断点. 这些值将⽤于⽣成移动优先(即最⼩宽度)的媒体查询

在这里插入图片描述
响应式
在这里插入图片描述

十一、创建标准的chakra-ui组件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置默认样式
在这里插入图片描述
在这里插入图片描述

十二、 全局化 Chakra-UI 组件样式

a. 在 src ⽂件夹中创建 lagou ⽂件夹⽤于放置⾃定义 Chakra-UI 组件
b. 在 lagou ⽂件夹中创建 button.js ⽂件并将组件样式放置于当前⽂件中并进⾏默认导出

在这里插入图片描述
c. 在 lagou ⽂件夹中创建 index.js ⽂件⽤于导⼊导出所有的⾃定义组件

在这里插入图片描述
d. 在 src ⽂件夹中的 index.js ⽂件中导⼊⾃定义 Chakra-UI 组件并和 components 属性进⾏合并

在这里插入图片描述
e. 在组件中使⽤样式化组件

在这里插入图片描述

代码示例:
src/lagou/botton.js

const LaGouButton = {baseStyle: {borderRadius: 'lg'},sizes: {sm: {px: '3',py: '1',fontSize: '12px'},md: {px: '4',py: '2',fontSize: '14px'}},variants: {primary: {bgColor: 'blue.500',color: 'white'},danger: {bgColor: 'red.500',color: 'white'}},defaultProps: {size: 'sm',variant: 'primary'}
}export default LaGouButton;

src/lagou/index.js

import LaGouButton from './button';export default {LaGouButton
}

src/index.js

import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import theme from "@chakra-ui/theme";
import { ChakraProvider, CSSReset } from "@chakra-ui/core";
import LaGouComponents from './LaGou';// 1. 设置默认颜色模式 
// theme.config.initialColorMode = 'dark';// 2. 使用操作系统所使用的颜色模式
// theme.config.useSystemColorMode = true;console.log(theme);const myTheme = {...theme,components: {...theme.components,...LaGouComponents}
}console.log(myTheme)ReactDOM.render(<ChakraProvider theme={myTheme}><CSSReset /><App /></ChakraProvider>,document.getElementById("root")
);

src/app.js

import React from "react";
import {Input,InputGroup,Stack,InputLeftAddon,InputRightAddon,FormHelperText,RadioGroup,Radio,Select,Switch,FormLabel,Flex,Button,FormControl
} from "@chakra-ui/core";
import { FaUserAlt, FaLock, FaCheck } from "react-icons/fa";export default function SignUp() {return (<form><Stack spacing="2"><FormControl isDisabled isInvalid><InputGroup><InputLeftAddon children={<FaUserAlt />} /><Input placeholder="请输入用户名" /></InputGroup><FormHelperText>用户名是填项</FormHelperText></FormControl><InputGroup><InputLeftAddon children={<FaLock />} /><Input type="password" placeholder="请输入密码" /><InputRightAddon children={<FaCheck />} /></InputGroup><RadioGroup defaultValue="0"><Stack spacing={4} direction="horizontal"><Radio value="0"></Radio><Radio value="1"></Radio></Stack></RadioGroup><Select appearance="none" placeholder="请选择学科"><option value="Java">Java</option><option value="大前端">大前端</option></Select><Flex><Switch id="deal" mr="3" /><FormLabel htmlFor="deal">是否同意协议</FormLabel></Flex><Button _hover={{ bgColor: "tomato" }} w="100%" colorScheme="teal">注册</Button></Stack></form>);
}

在这里插入图片描述

十四、选项卡组件的使用方式

import React from "react";
import {Tabs,TabList,Tab,TabPanel,TabPanels,Box,Image,useColorModeValue
} from "@chakra-ui/core";
import SignUp from "./SignUp";
import SignIn from "./SignIn";import chakraUILight from "../assets/images/chakra-ui-light.png";
import chakraUIDark from '../assets/images/chakra-ui-dark.png';export default function Form() {const bgColor = useColorModeValue('gray.200', 'gray.700');const chakraUI = useColorModeValue(chakraUILight, chakraUIDark)return (<Box bgColor={bgColor} p={3} w="100%" boxShadow="lg" borderRadius="lg"><Image w="250px" mx="auto" mt="2" mb="6" src={chakraUI} /><Tabs isFitted><TabList><Tab _focus={{ boxShadow: "none" }}>注册</Tab><Tab _focus={{ boxShadow: "none" }}>登录</Tab></TabList><TabPanels><TabPanel><SignUp /></TabPanel><TabPanel><SignIn /></TabPanel></TabPanels></Tabs></Box>);
}

在这里插入图片描述

十五、布局组件板式组件的使用

import React from "react";
import { Box, Image, Badge, Text, Stack, Flex, Button, useColorModeValue, useColorMode } from "@chakra-ui/core";
import chakraUI from "../assets/images/chakra-ui.png";
import { AiFillStar } from "react-icons/ai";export default function Card() {const bgColor = useColorModeValue('gray.200', 'gray.700');const textColor = useColorModeValue('gray.700', 'gray.100');return (<BoxbgColor={bgColor}w={1 / 2}borderRadius="lg"boxShadow="lg"overflow="hidden"><Image src={chakraUI} /><Box p={3}><Stack direction="horizontal" align="center"><Badge variant="solid" colorScheme="teal" borderRadius="full" px="2">New</Badge><Badge variant="solid" colorScheme="teal" borderRadius="full" px="2">React</Badge><Badge variant="solid" colorScheme="teal" borderRadius="full" px="2">Chakra-UI</Badge><Text color={textColor}>拉钩出品 必属精品</Text></Stack><TextfontSize="xl"pt={3}pb={2}color={textColor}as="h3"fontWeight="semibold">Chakra-UI 框架专题课程</Text><Text fontWeight="light" fontSize="sm" lineHeight="tall">Chakra UI 是一个简单的, 模块化的易于理解的 UI 组件库. 提供了丰富的构建React 应用所需的UI组件.在整个应用程序中,在任何组件上快速、轻松地引用主题中的值。组件的构建考虑到了组合。你可以利用任何组件来创造新事物。Chakra-UI严格遵循WAI-ARIA标准。所有组件都有适当的属性和现成的键盘交互。ChakraUI 是一个简单的, 模块化的易于理解的 UI 组件库. 提供了丰富的构建 React应用所需的UI组件.</Text><Flex align="center" mt={2}><Flex color="teal.500"><AiFillStar /><AiFillStar /><AiFillStar /><AiFillStar /></Flex><AiFillStar /><Text ml={1}>100 评论</Text></Flex></Box><Button w="100%" colorScheme="teal">登录</Button></Box>);
}

在这里插入图片描述

十六、表单和卡片的颜色兼容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1621573.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

8.6.tensorRT高级(3)封装系列-终极封装形态,以及考虑的问题

目录 前言1. 终极封装总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT 高级-终极封装形态&#xff0c;以及考虑的…

android版本360ui,国产手机UI系统有哪些

国产手机UI系统有哪些 UI系统的用户体验、生态系统的建立等“软实力”将是移动终端厂商的主战场&#xff0c;拥有生态系统的厂商才能掌握主动。那么&#xff0c;都有国产手机UI系统?下面就和jy135小编一起看看吧! 最好用的九大国产手机UI系统 一、小米MIUI MIUI是小米旗下的定…

仿华为EmotionUI 3.0滑动效果

华为美腿妻手机卖的比较火&#xff0c;其中的一个两点是Emotion 3.0&#xff0c;里面各种UI让人耳目一新的感觉。 一开始看到我就喜欢了其中的很多设计。其中的一个是左右滑动类似于开源项目Indecator的。但是他的实现不仅仅是这个。 于是我就再别人的基础上改动了一下&#x…

中国人需要了解华为鸿蒙系统的8个事实,真的这么美好吗?

1. 华为的鸿蒙系统是怎么回事? 华为于昨天推出的鸿蒙系统是谷歌安卓系统的替代品&#xff0c;可应用于电视、汽车、平板电脑和其他设备。 之前民间一直传言说&#xff0c;华为正在为手机、平板电脑和其他智能设备开发自己的操作系统&#xff0c;以防无法使用谷歌的Android软件…

Android学习之路(11) ActionBar与ToolBar的使用

自android5.0开始&#xff0c;AppCompatActivity代替ActionBarActivity&#xff0c;而且ToolBar也代替了ActionBar&#xff0c;下面就是ActionBar和ToolBar的使用 ActionBar 1、截图 2、使用 2.1、AppCompatActivity和其对应的Theme AppCompatActivity使用的是v7的ActionBa…

十六、pikachu之SSRF

文章目录 1、SSRF概述2、SSRF&#xff08;URL&#xff09;3、SSRF&#xff08;file_get_content&#xff09; 1、SSRF概述 SSRF(Server-Side Request Forgery&#xff1a;服务器端请求伪造)&#xff1a;其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能&…

基于体素形态学测量分析(VBM)的工具包比较及其在年龄预测中的应用

摘要 基于体素的形态学测量分析(VBM)通常用于灰质体积(GMV)的局部量化。目前存在多种实现VBM的方法。然而&#xff0c;如何比较这些方法及其在应用中的效用(例如对年龄效应的估计)仍不清楚。这会使研究人员疑惑他们应该在其项目中使用哪种VBM工具包。本研究以用户为中心&#…

使用MV制作最简单的游戏:我要做游戏(4)

公众号原文 本期将设计游戏中基本,也是核心的数值元素。不想循规蹈矩的朋友也可自行回顾前三期的内容: 我要做游戏(1) 我要做游戏(2) 我要做游戏(3) 呃,说道数值,可能一些人脑海里觉得它是这样的: 这么想其实也没错啦,不过实际游戏设计中,攻击力与防御力只是…

On-Manifold Optimization: Local Parameterization

Overview Manifold Space vs Tangent Space Jacobian w.r.t Error State Jacobian w.r.t Error State vs True State According 1 2.4, The idea is that for a x ∈ N x \in N x∈N the function g ( δ ) : f ( x ⊞ δ ) g(\delta) : f (x \boxplus \delta) g(δ):f(x…

DeforGAN:用GAN实现星际争霸开全图外挂!

点击上方“机器学习与生成对抗网络”&#xff0c;关注"星标" 获取有趣、好玩的前沿干货&#xff01; 文章来源&#xff1a;机器之心 作者&#xff1a;Yonghyun Jeong等 参与&#xff1a;李诗萌、Geek AI 对于广大星际争霸迷来说&#xff0c;地图全开作弊代码「Black …

局域网联机_七日杀v17.2(B27)版/支持局域网联机/多项修改器/初始存档/局域网联机教程...

点击蓝字关注我们&#xff0c;每日提供优质游戏 游戏介绍 那时地球表面已经变成废墟&#xff0c;更糟的是&#xff0c;没有人知道到底是因为辐射、生化武器还是天灾&#xff0c;导致地面上出现了一群僵尸。玩家将扮演在美国亚历桑纳地区的一名幸存者&#xff0c;那里是地球最后…

魔兽争霸 / 星际争霸 无法使用 CTRL + 1 进行编队

打游戏时发现不好编队&#xff0c; 应该是快捷键冲突导致。 查了一下&#xff0c;是输入法的问题。 目前用的QQ五笔输入法里用到了 CTRL 1&#xff0c;所以在游戏里就用不了了。 如下面所示&#xff0c;把最后的 CTRL 1 的复选框勾掉就可以了。

DeepMind《星际争霸2》AI碾压人类遭Gary Marcus猛怼:通用智能就是空谈

来源&#xff1a;新智元 本文 3635 字 &#xff0c;建议阅读 10分钟 。 本文介绍了Marcus对AI碾压人类以及未来通用智能研究意义的质疑。 针对DeepMind前几日发布的《星际争霸2》智能体AlphaStar进化版&#xff0c;他在Twitter再次提出了自己的质疑。不过这次&#xff0c;Marcu…

星际2数据编辑器

转自&#xff1a;https://blog.csdn.net/xoyojank/article/details/8122886 只列了技能的划分&#xff0c;其余的参考链接 对象类型 星际2就对象有很多类型, 这里只说一下比较常见的. 这些类型还有子类型, 对象的实例之间是可以进行数据拷贝和派生的. Units(单位) 大多数人应…

nodejs里面的event loop

1. event loop 1.1 什么是event-loop js的标准文档定义如下 https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#event_loop https://javascript.info/event-loop html的标准定义 https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-proc…

chatgpt赋能python:如何用Python编写炒股软件

如何用Python编写炒股软件 随着股票投资的普及和互联网技术的发展&#xff0c;越来越多的人开始尝试使用计算机辅助炒股&#xff0c;以获取更好的投资回报。Python作为一种简单易学、高效实用的编程语言&#xff0c;受到了众多股票投资者的青睐。本文将介绍如何用Python编写炒…

单例模式:保证一个类仅有一个实例

单例模式&#xff1a;保证一个类仅有一个实例 欢迎来到设计模式系列的第二篇文章&#xff01;在上一篇中&#xff0c;我们已经对设计模式有了初步的了解&#xff0c;今天让我们深入研究第一个模式——单例模式。 什么是单例模式&#xff1f; 在软件开发中&#xff0c;我们经…

RabbitMQ从原理到实战—基于Golang【万字详解】

文章目录 前言一、MQ是什么&#xff1f;优势劣势 二、MQ的用途1、应用解耦2、异步加速3、削峰填谷4、消息分发 三、RabbitMQ是什么1、AMQP 协议2、RabbitMQ 包含的要素3、RabbitMQ 基础架构 四、实战1、Simple模式(即最简单的收发模式)2、Work Queues 模型3、Publish/Subscribe…

lnmp架构-mysql

1.MySQL数据库编译 make完之后是这样的 mysql 初始化 所有这种默认不在系统环境中的路径里 就这样加 这样就可以直接调用 不用输入路径调用 2.初始化 重置密码 3.mysql主从复制 配置master 配置slave 当master 端中还没有插入数据时 在server2 上配slave 此时master 还没进…

Tornado服务器连接数据库

环境 python3.6.1 vscode mysql navicat 安装需要的包 pip install torndb_for_python3 pip install pymysql0.8.0 #请安装pymysql的0.8.0版本&#xff0c;否则可能出现一个FLAG不存在的bug。亲测0.8.0可用。 tornadb不适用于python3&#xff0c;torndb_for_python3 是修改过的…