What Is A+ Theme And Font Add-on Available For?
Typography
The theme provides a ready of type sizes that work well together, and also with the layout grid.
Font family
You can change the font family with the theme.typography.fontFamily
property.
For example, this case uses the system font instead of the default Roboto font:
const theme = createTheme ( { typography : { fontFamily : [ '-apple-system' , 'BlinkMacSystemFont' , '"Segoe UI"' , 'Roboto' , '"Helvetica Neue"' , 'Arial' , 'sans-serif' , '"Apple Color Emoji"' , '"Segoe UI Emoji"' , '"Segoe UI Symbol"' , ] . join ( ',' ) , } , } ) ;
Cocky-hosted fonts
To self-host fonts, download the font files in ttf
, woff
, and/or woff2
formats and import them into your code.
⚠️ This requires that y'all take a plugin or loader in your build procedure that can handle loading ttf
, woff
, and woff2
files. Fonts volition not be embedded inside your package. They will be loaded from your webserver instead of a CDN.
import RalewayWoff2 from './fonts/Raleway-Regular.woff2' ;
Next, you need to change the theme to apply this new font. In society to globally ascertain Raleway every bit a font confront, the CssBaseline
component can be used (or any other CSS solution of your option).
import RalewayWoff2 from './fonts/Raleway-Regular.woff2' ; const theme = createTheme ( { typography : { fontFamily : 'Raleway, Arial' , } , components : { MuiCssBaseline : { styleOverrides : ` @font-confront { font-family: 'Raleway'; font-mode: normal; font-display: swap; font-weight: 400; src: local('Raleway'), local('Raleway-Regular'), url( ${RalewayWoff2} ) format('woff2'); unicodeRange: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF; } ` , } , } , } ) ; // ... return ( < ThemeProvider theme = {theme} > < CssBaseline /> < Box sx = { { fontFamily : 'Raleway' , } } > Raleway </ Box > </ ThemeProvider > ) ;
Annotation that if you want to add additional @font-face up
declarations, you lot need to apply the string CSS template syntax for adding fashion overrides, and so that the previosly defined @font-face
declarations won't exist replaced.
Font size
MUI uses rem
units for the font size. The browser <html>
chemical element default font size is 16px
, but browsers take an pick to change this value, so rem
units allow us to conform the user's settings, resulting in a better accessibility back up. Users change font size settings for all kinds of reasons, from poor eyesight to choosing optimum settings for devices that can be vastly dissimilar in size and viewing distance.
To modify the font-size of MUI you tin provide a fontSize
property. The default value is 14px
.
const theme = createTheme ( { typography : { // In Chinese and Japanese the characters are unremarkably larger, // so a smaller fontsize may be appropriate. fontSize : 12 , } , } ) ;
The computed font size past the browser follows this mathematical equation:
Responsive font sizes
The theme.typography.*
variant backdrop map straight to the generated CSS. You tin can use media queries inside them:
const theme = createTheme ( ) ; theme.typography.h3 = { fontSize : '1.2rem' , '@media (min-width:600px)' : { fontSize : '1.5rem' , } , [theme.breakpoints. upwardly ( 'dr.' ) ] : { fontSize : 'two.4rem' , } , } ;
To automate this setup, you tin use the responsiveFontSizes()
helper to make Typography font sizes in the theme responsive.
Y'all can run across this in action in the example below. Conform your browser's window size, and notice how the font size changes as the width crosses the unlike breakpoints:
import { createTheme, responsiveFontSizes } from '@mui/material/styles' ; permit theme = createTheme ( ) ; theme = responsiveFontSizes (theme) ;
Fluid font sizes
To exist done: #15251.
HTML font size
You might want to change the <html>
element default font size. For instance, when using the 10px simplification.
The theme.typography.htmlFontSize
property is provided for this use instance, which tells MUI what the font-size on the <html>
element is. This is used to conform the rem
value so the calculated font-size always friction match the specification.
const theme = createTheme ( { typography : { // Tell MUI what'south the font-size on the html element is. htmlFontSize : 10 , } , } ) ;
html { font-size : 62.5%; /* 62.5% of 16px = 10px */ }
You lot demand to apply the higher up CSS on the html element of this page to see the below demo rendered correctly
Variants
The typography object comes with 13 variants by default:
- h1
- h2
- h3
- h4
- h5
- h6
- subtitle1
- subtitle2
- body1
- body2
- push
- caption
- overline
Each of these variants can be customized individually:
const theme = createTheme ( { typography : { subtitle1 : { fontSize : 12 , } , body1 : { fontWeight : 500 , } , button : { fontStyle : 'italic' , } , } , } ) ;
Adding & disabling variants
In addition to using the default typography variants, you can add custom ones, or disable whatsoever y'all don't demand. Here is what y'all demand to exercise:
Footstep 1. Update the theme'south typography object
const theme = createTheme ( { typography : { poster : { color : 'red' , } , // Disable h3 variant h3 : undefined , } , } ) ;
Step 2. Update the necessary typings (if you are using TypeScript)
You need to make sure that the typings for the theme's typography
variants and the Typography
'south variant
prop reflects the new set of variants.
declare module '@mui/material/styles' { interface TypographyVariants { poster: React.CSSProperties; } // allow configuration using `createTheme` interface TypographyVariantsOptions { poster? : React.CSSProperties; } } // Update the Typography's variant prop options declare module '@mui/material/Typography' { interface TypographyPropsVariantOverrides { poster: truthful ; h3: false ; } }
Step three. You can now utilise the new variant
< Typography variant = "poster" > poster </ Typography > ; /* This variant is no longer supported */ < Typography variant = "h3" > h3 </ Typography > ;
Default values
You can explore the default values of the typography using the theme explorer or by opening the dev tools console on this folio (window.theme.typography
).
What Is A+ Theme And Font Add-on Available For?,
Source: https://mui.com/material-ui/customization/typography/
Posted by: irvintionot.blogspot.com
0 Response to "What Is A+ Theme And Font Add-on Available For?"
Post a Comment