App bar
The App bar displays information and actions relating to the current screen.
The top App bar provides content and actions related to the current screen. Ela é utilizada para a identidade visual, títulos de tela, navegação e ações.
Ela pode se transformar em uma barra de ações contextual ou ser utilizada como uma barra de navegação.
<AppBar position="static">
<Toolbar variant="dense">
<IconButton edge="start" color="inherit" aria-label="menu" sx={{ mr: 2 }}>
<MenuIcon />
</IconButton>
<Typography variant="h6" color="inherit" component="div">
Photos
</Typography>
</Toolbar>
</AppBar>
Fixed placement
When you render the app bar position fixed, the dimension of the element doesn't impact the rest of the page. This can cause some part of your content to be invisible, behind the app bar. Here are 3 possible solutions:
- Você pode usar
position="sticky"
ao invés de fixed. ⚠️ sticky não é suportado pelo IE11. - Você pode renderizar um segundo componente
<Toolbar />
:
function App() {
return (
<React.Fragment>
<AppBar position="fixed">
<Toolbar>{/* content */}</Toolbar>
</AppBar>
<Toolbar />
</React.Fragment>
);
}
- Você pode usar o CSS
theme.mixins.toolbar
:
const Offset = styled('div')(({ theme }) => theme.mixins.toolbar);
function App() {
return (
<React.Fragment>
<AppBar position="fixed">
<Toolbar>{/* content */}</Toolbar>
</AppBar>
<Offset />
</React.Fragment>
);
}
Scrolling
You can use the useScrollTrigger()
hook to respond to user scroll actions.
Hide App bar
The app bar hides on scroll down to leave more space for reading.
Elevate App bar
The app bar elevates on scroll to communicate that the user is not at the top of the page.
Voltar ao topo
A floating action buttons appears on scroll to make it easy to get back to the top of the page.
useScrollTrigger([options]) => trigger
Argumentos
options
(object [opcional]):options.disableHysteresis
(bool [opcional]): Padrãofalse
. Desabilita a histerese. Ignora a direção de rolagem ao determinar o valor detrigger
.options.target
(Node [opcional]): Padrãowindow
.options.threshold
(number [opcional]): Padrão100
. Modifica o valor limite que aciona atrigger
quando a barra de rolagem vertical cruzar ou chegar a este limite.
Retornos
trigger
: Does the scroll position match the criteria?
Exemplos
import useScrollTrigger from '@mui/material/useScrollTrigger';
function HideOnScroll(props) {
const trigger = useScrollTrigger();
return (
<Slide in={!trigger}>
<div>Olá</div>
</Slide>
);
}
Enable color on dark
Following the Material Design guidelines, the color
prop has no effect on the appearance of the app bar in dark mode. You can override this behavior by setting the enableColorOnDark
prop to true
.
<ThemeProvider theme={darkTheme}>
<AppBar position="static" color="primary" enableColorOnDark>
{appBarLabel('enableColorOnDark')}
</AppBar>
<AppBar position="static" color="primary">
{appBarLabel('default')}
</AppBar>
</ThemeProvider>