Material UI 5 学习01-按钮组件

news2024/11/16 5:32:08

Material UI 5 学习01-按钮组件

  • 一、安装Material UI
  • 二、 组件
    • 1、Button组件
      • 1、基础按钮
      • 2、variant属性
      • 3、禁用按钮
      • 4、可跳转的按钮
      • 5、disableElevation属性
      • 6、按钮的点击事件onClick
    • 2、Button按钮的颜色和尺寸
      • 1、Button按钮的颜色
      • 2、按钮自定义颜色
      • 3、Button按钮的尺寸
    • 3、图标按钮
      • 1、带有图标的按钮

一、安装Material UI

首先我们创建React工程。然后安装样式和字体。下面使用yarn安装

//Material UI
yarn add @mui/material @emotion/react @emotion/styled
//styled-components
yarn add @mui/material @mui/styled-engine-sc styled-components
//安装Roboto字体
yarn add @fontsource/roboto
//安装MUI图标
yarn add @fontsource/roboto

//在public index.html引入google字体样式
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap"/>
//在public index.html引入google MUI字体样式
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"/>

二、 组件

我们先学习MUI的组件

1、Button组件

1、基础按钮

最基本的button按钮定义:

import {Button} from "@mui/material";
function App() {
  return (
    <div>
        <Button>这是一个按钮</Button>
    </div>
  );
}
export default App;

在这里插入图片描述
可以看出,最基本的按钮没有边框,字体默认是蓝色的,其鼠标点击上去有背景颜色,是淡蓝色。其他的就没有什么了。
在这里插入图片描述

2、variant属性

序号属性值含义
1text文本按钮,这个是按钮的默认属性。文本按钮 通常用于不太明显的动作,包括那些位于对话框、卡片中的动作。 在卡片中,文本按钮有助于保持卡片内容的重点。
2contained包含按钮。包含按钮 是高度强调的,以其使用的抬高和填充来区分。 它们包含对你的应用来说是主要的操作。
3outlined轮廓按钮。轮廓按钮也是包含按钮的一种较低强调度的选择, 或者更强调文本按钮的替代品。

代码演示:

<Button variant='text'>这是一个文本按钮</Button>
<Button variant='contained'>这是包含按钮</Button>
<Button variant='outlined'>这是轮廓按钮</Button>

在这里插入图片描述

3、禁用按钮

加上disabled属性可以禁用按钮。默认是true。false就不是禁用了。

<Button variant='text' disabled>禁用文本按钮</Button>

4、可跳转的按钮

加尚href属性,可以进行跳转

<Button variant='text' href="#">禁用文本按钮</Button>
import {Button} from "@mui/material";
function App() {
  return (
    <div>
        <Button variant='text'>这是一个文本按钮</Button>
        <Button variant='text' disabled>禁用文本按钮</Button>
        <Button variant='text' href="#">禁用文本按钮</Button>
    </div>
  );
}
export default App;

在这里插入图片描述

5、disableElevation属性

disableElevation是禁用阴影的意思。加上此属性,那么点击按钮没有阴影。
默认的按钮点击之后都存在阴影,左边的按钮是默认的按钮,右边的加了disableElevation属性,因此右边的点击没有阴影
在这里插入图片描述
在这里插入图片描述

6、按钮的点击事件onClick

import {Button} from "@mui/material";

function App() {
    const showData = () => {
        alert('按钮被点击了');
    }
    return (
        <div>
            <Button onClick={showData} variant='contained'>按钮</Button>
        </div>
    );
}

export default App;

上面的代码也可以简写:

import {Button} from "@mui/material";
function App() {
    return (
        <div>
            <Button onClick={()=>{alert("按钮被点击")}} variant='contained'>按钮</Button>
        </div>
    );
}
export default App;

2、Button按钮的颜色和尺寸

1、Button按钮的颜色

按钮使用color属性即可设置值:color=“primary”
默认的按钮属性值有7个

序号属性值含义
1color=“inherit”按钮文字的颜色取决于父组件的颜色
2color=“primary”强调重要行为的按钮
1color=“secondary”次要行为的按钮
1color=“success”显示操作成功的按钮
1color=“error”显示操作错误的按钮
1color=“info”陈述按钮
1color=“warning”警告按钮

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

2、按钮自定义颜色

使用Theme自定义颜色
创建Theme.jsx文件,编写自定义的样式

import {createTheme} from "@mui/material";
export const  theme = createTheme({
    palette: {
        primary: {
            main: '#000000',
        },
        secondary: {
            main: '#F5EBF7',
            light: '#F5EBFF',
            contrastText: '#47008F',
        },
    },
});

在index中使用ThemeProvider引入theme

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import reportWebVitals from './reportWebVitals';
import {ThemeProvider} from "@mui/material";
import {theme} from './Theme'

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
      <ThemeProvider theme={theme}>
          <App />
      </ThemeProvider>
  </React.StrictMode>
);

reportWebVitals();

最后在按钮中应用

import {Button, Stack} from "@mui/material";

function App() {
    return (
        <div >
            <Stack spacing={3}>
                <Button variant='contained' color="primary">主要的按钮</Button>
            </Stack>
        </div>
    );
}
export default App;

由于自定义的primary为黑色,所以最终按钮呈现黑色
在这里插入图片描述

疑惑点:Button好像颜色属性只能从那7个属性值去选择。虽然可以自定义7个属性值的颜色。但是无法使用main、light、dark更为详细的定义。Box就可以定义具体的色调

export const  theme = createTheme({
    palette: {
        primary: {
            main: '#000000',
            light: '#F5EBF7',
            contrastText: '#80ff80',/*文本颜色*/
        },
        secondary: {
            main: '#F5EBF7',
            light: '#F5EBFF',
            contrastText: '#47008F',
        },
    },
});

也就是说Button组件默认就是main。不知道如何使用light。

3、Button按钮的尺寸

使用size属性申明

序号属性含义
1size=“small”小按钮
2size=“medium”中按钮
3size=“large”大按钮
import {Button, Stack} from "@mui/material";

function App() {
    return (
        <div >
            <Stack spacing={3}>
                <Button variant='contained' size="small">按钮1</Button>
                <Button variant='contained' size="medium">按钮2</Button>
                <Button variant='contained' size="large">按钮3</Button>
            </Stack>
        </div>
    );
}
export default App;

在这里插入图片描述

3、图标按钮

使用图标,可以直接在Material Icons中选择,前提是安装icon库

yarn add @mui/icons-material @mui/material @emotion/styled @emotion/react

1、带有图标的按钮

序号属性含义
1startIcon={<图标组件/>}在按钮文字前面的图标
2endIcon={<图标组件 />}在按钮文字之后的图标
import {Button, Stack} from "@mui/material";
import DeleteIcon from '@mui/icons-material/Delete';
import SendIcon from '@mui/icons-material/Send';

function App() {
    return (
        <div >
            <Stack spacing={3}>
                <Button variant="outlined" startIcon={<DeleteIcon />}>
                    Delete
                </Button>
                <Button variant="contained" endIcon={<SendIcon />}>
                    Send
                </Button>
            </Stack>
        </div>
    );
}
export default App;

上面的代码引入了两个图标组件DeleteIcon 、SendIcon 。图标可以自定搜索
在这里插入图片描述

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

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

相关文章

Topaz Gigapixel AI:让每一张照片都焕发新生mac/win版

Topaz Gigapixel AI 是一款革命性的图像增强软件&#xff0c;它利用先进的人工智能技术&#xff0c;能够显著提升图像的分辨率和质量。无论是摄影爱好者还是专业摄影师&#xff0c;这款软件都能帮助他们将模糊的、低分辨率的照片转化为清晰、细腻的高分辨率图像。 Topaz Gigap…

每日五道java面试题之mysql数据库篇(三)

目录&#xff1a; 第一题. 百万级别或以上的数据如何删除&#xff1f;第二题. 前缀索引第三题. 什么是最左前缀原则&#xff1f;什么是最左匹配原则?第四题. B树和B树的区别第五题. 使用B树和B树好处 第一题. 百万级别或以上的数据如何删除&#xff1f; 关于索引&#xff1a;…

【微服务】微服务中常用认证加密方案总结

目录 一、前言 二、登录认证安全问题 3.1 认证方式选择 三、常用的加密方案 3.1 MD5加密算法 3.1.1 md5特点 3.1.2 md5原理 3.1.3 md5使用场景 3.2 AES加密算法 3.2.1 AES简介 3.2.2 AES加解原理 3.2.3 AES算法优缺点 3.2.4 AES算法使用场景 3.3 RSA加密算法 3.3…

【IDEA+通义灵码插件】实现属于你的大模型编程助手

目录 1.前言 2.下载安装 3.解释代码 4.生成单元测试 5.生成注释 6.智能补全 1.前言 大模型到底该以一种什么方式落地&#xff0c;从而嵌入我们的工作当中&#xff0c;助力我们工作效率的提升&#xff0c;其实最好的方式也许就是虚拟助手的方式&#xff0c;就像钢铁侠的&…

无极低码:无极低码部署版操作指南

无极低码 &#xff1a;https://wheart.cn 无极低码是一个面向开发者的工具&#xff0c;旨在为开发者、创业者或研发企业&#xff0c;提供快速&#xff0c;高效&#xff0c;标准化&#xff0c;可定制&#xff0c;私有化部署的平台&#xff0c;在兼顾开发速度的同时&#xff0c;兼…

ChemDraw Pro 2022:呈现专业化学绘图的极 致之作 mac/win版

PerkinElmer ChemDraw Pro 2022是一款功能强大的化学绘图软件&#xff0c;专为化学家、科研工作者和教育者设计。这款软件凭借其卓越的性能和丰富的功能&#xff0c;已经成为化学绘图领域的领导者。 PerkinElmer ChemDraw Pro 2022软件获取 ChemDraw Pro 2022提供了广泛的化学…

可重入锁-隐式锁与显式锁

可重入锁 隐式锁&#xff08;即synchronized关键字使用的锁&#xff09;&#xff0c;默认是可重入锁 在一个synchronized修饰的方法或者代码块的内部调用本类的其他synchronized修饰的方法或者代码块时&#xff0c;是永远可以得到锁。 显式锁&#xff08;即Lock&#xff09;也…

【yolov8部署实战】VS2019环境下使用Onnxruntime环境部署yolov8目标检测|含源码

一、前言 部署yolo项目&#xff0c;是我这几个月以来做的事情&#xff0c;最近打算把这几个月试过的方法&#xff0c;踩过的坑&#xff0c;以博客的形式&#xff0c;分享一下。关于下面动态中讲到的如何用opencv部署&#xff0c;我在上一篇博客中已经详细讲到了&#xff1a;【…

【C++】const成员

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. const成员3. 取地址及const取地址操作符重载 1. 前言 在之前已经已经分享过了关于 【C】类和对象之常引用与运算符重载&#xff0c;这次分享的有关const的内容&#xff0c;话不多说&#xff0c;正文开始。…

Mybatis 框架 基础语法

Mybtais 中文网站 Maven 仓库 考点&#xff1a; SQL 注入 #{}最终生成预编译sql&#xff0c;预编译Sql语句中?替换#{}内容 一个#{} 替换一个? 在模糊查询时要使用 &#xff0c; ′ {}&#xff0c;% &#xff0c;′{}%’ &#xff0c;因为&#xff1f;不能出现在‘’中&…

2024最新算法:鹦鹉优化算法(Parrot optimizer,PO)求解23个基准函数

一、鹦鹉优化算法 鹦鹉优化算法&#xff08;Parrot optimizer&#xff0c;PO&#xff09;由Junbo Lian等人于2024年提出的一种高效的元启发式算法&#xff0c;该算法从驯养的鹦鹉中观察到的觅食、停留、交流和对陌生人行为的恐惧中汲取灵感。这些行为被封装在四个不同的公式中…

2024年自动化测试五大趋势

目录 2024年QA自动化趋势&#xff1a;塑造软件开发的未来 1.自动化测试中的AI和ML集成 2.DevOps中的持续测试 3.无代码自动化工具的使用 4.更加重视安全测试 5.定制化测试解决方案 有效实施2024年QA自动化趋势 1.集成AI和ML实现更智能的测试 2.在敏捷和DevOps文化中嵌入…

5.STL源码解析-算法、仿函数、适配器

算法 STL算法总览 仿函数与适配器 C标准模板库&#xff08;STL&#xff09;是C程序员的得力工具&#xff0c;提供了许多强大而高效的数据结构和算法。在STL中&#xff0c;仿函数&#xff08;Functor&#xff09;和适配器&#xff08;Adapter&#xff09;是两个重要的概念…

windows上elasticsearch的ik分词器的安装

下载 下载地址 在elasticsearch下的plugins文件夹下创建ik的文件夹 下载的ik压缩包解压到plugins/ik 重启elasticsearch 验证 http://ip:9200/_cat/plugins

OSCP靶场--Squid

OSCP靶场–Squid 考点(1.squid代理绕过 2.phpmyadmin写webshell 3.受限服务账户【LOCAL SERVICE或NETWORK SERVICE】恢复特权 4.SeImpersonatePrivilege提权) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.188.189 --min-rate 2000 Starti…

05-Linux部署MySQL

Linux部署MySQL 在今后的使用过程中&#xff0c;需要频繁使用Linux系统&#xff0c;所以在Linux上安装软是必不可少的操作 。 前置要求 需要学习前四章知识&#xff0c;初识Linux、Linux基础命令、Linux权限管理、Linux高阶技巧这4个章节。需要开启多态虚拟机&#xff0c;电…

LeetCode 热题 100 | 图论(三)

目录 1 前缀树 1.1 什么是前缀树 1.2 如何构建前缀树 2 208. 实现 Trie&#xff08;前缀树&#xff09; 菜鸟做题&#xff0c;语言是 C 1 前缀树 1.1 什么是前缀树 前缀树&#xff0c;也被称作字典树&#xff08;Trie&#xff09;或者键树&#xff0c;是一种用于检…

顶会ICLR2024论文Time-LLM:基于大语言模型的时间序列预测

文青松 松鼠AI首席科学家、AI研究院负责人 美国佐治亚理工学院(Georgia Tech)电子与计算机工程博士&#xff0c;人工智能、决策智能和信号处理方向专家&#xff0c;在松鼠AI、阿里、Marvell等公司超10年的技术和管理经验&#xff0c;近100篇文章发表在人工智能相关的顶会与顶刊…

实战:Oracle Weblogic 11g配置无密码启动,启动关闭脚本,修改节点内存

导读 上篇博文介绍了Oracle Weblogic 11g的安装部署&#xff0c;本文介绍Weblogic安装后的基本配置 包括&#xff1a;设置weblogic启动关闭的无密码验证&#xff0c;启动关闭脚本&#xff0c;修改默认的节点内存。 1、配置无密码启动 [weblogicw1 base_domain]$ cd servers/ […

【Java数据结构 -- 二叉树+树的深度优先遍历】

二叉树 1. 二叉树1.1 二叉树的介绍1.2 两种特殊的二叉树1.3 二叉树的性质1.4 二叉树的存储 2. 二叉树的基本操作2.1 二叉树的创建2.2 二叉树的优先遍历2.3 递归实现二叉树遍历2.4 用非递归实现二叉树遍历 1. 二叉树 1.1 二叉树的介绍 二叉树是一种数据结构&#xff0c;一颗二…