应用栏(App bar)
应用栏展示了与当前屏幕内容相关的信息和操作。
顶部应用栏提供与当前屏幕有关的内容和操作。 该组件常用于展示品牌、屏幕标题、导航和操作。
它既可以用作于转换为上下文相关的操作栏,又可以直接充当导航栏。
<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>
固定位置
当您在固定位置渲染应用栏,元素的尺寸不会影响页面的其余内容。 这可能导致您的部分内容被应用栏遮挡而不可见。 以下是3种可能的解决方案:
- 使用
position =“ sticky”
代替 fixed。 ⚠️ sticky 不支持 IE11。 - 可以渲染第二个
<Toolbar />
组件:
function App() {
return (
<React.Fragment>
<AppBar position="fixed">
<Toolbar>{/* 内容 */}</Toolbar>
</AppBar>
<Toolbar />
</React.Fragment>
);
}
- 也可以用
theme.mixins.toolbar
的 CSS:
const Offset = styled('div')(({ theme }) => theme.mixins.toolbar);
function App() {
return (
<React.Fragment>
<AppBar position="fixed">
<Toolbar>{/* 内容 */}</Toolbar>
</AppBar>
<Offset />
</React.Fragment>
);
}
滚动
您可以使用 useScrollTrigger()
钩子来响应用户触发的滚动操作。
隐藏应用栏
向下滚动隐藏应用栏,从而为阅读提供更多空间。
useScrollTrigger([options]) => trigger
参数
options
(object [optional]):options.disableHysteresis
(bool [optional]):默认值是false
。 禁用迟滞的效果。 在决定trigger
的值时会忽略在滚动的方向。options.target
(Node [optional]):默认值是window
。options.threshold
(number [optional]):默认值是100
。 当垂直滚动恰好超过(但不包括)此阈值时,会改变trigger
的值。
返回结果
trigger
: 此滚动的位置符合要求吗?
示例
import useScrollTrigger from '@mui/material/useScrollTrigger';
function HideOnScroll(props) {
const trigger = useScrollTrigger();
return (
<Slide in={!trigger}>
<div>Hello</div>
</Slide>
);
}
启用深色模式颜色
按照Material Design设计准则,color
属性对深色模式下的应用栏外观没有影响。 你可以通过将enableColorOnDark
属性设置为true
覆盖这一行为。
<ThemeProvider theme={darkTheme}>
<AppBar position="static" color="primary" enableColorOnDark>
{appBarLabel('enableColorOnDark')}
</AppBar>
<AppBar position="static" color="primary">
{appBarLabel('default')}
</AppBar>
</ThemeProvider>