我开始使用React/Material-UI,也是CSS等的新手。我有一个简单的页面布局与应用程序栏。不幸的是,这个AppBar与它下面的元素重叠。
我找到了这个答案:AppBar Material UI questions
但这感觉完全不对。如果我的AppBar有一个可变的高度,取决于图标,显示模式等?
我尝试创建一个垂直网格,将元素 Package 在不同的项目中,将顶部容器设置为Flex容器,并使用Flex设置,似乎没有任何工作,应用程序栏总是位于文本的顶部。
代码非常简单:
import React from 'react';
import { AppBar, Typography, Box } from '@material-ui/core';
function App() {
return (
<div>
<AppBar>
<Typography variant='h3'>
AppBar
</Typography>
</AppBar>
<Box>
<Typography variant='h1' style={{ border: '1px solid black' }}>
Hello
</Typography>
</Box>
</div>
)
}
export default App;
“Hello”文本块只有一半可见:
8条答案
按热度按时间eiee3dmh1#
这是因为MaterialUI应用程序栏默认为
position="fixed"
。这将其与标准DOM的布局分开,以允许内容在其下方滚动,但结果是页面上没有为它留出空间。您可以通过将其下面的所有内容 Package 在div中并指定足够的边距来解决此问题,或者通过更改
<AppBar>
的position
属性使其不再是"fixed"
。在您的示例中,如果<AppBar>
下面只有<Box>
内容,您也可以将样式应用于<Box>
。例如
8qgya5xd2#
MaterialUI为AppBar提供了一个主题mixin,可以提供帮助。不确定你是否在使用推荐的JSS设置,但你可以这样做:
mixin将给予div与AppBar相同的高度,并将其他内容向下推。
xkrw2x1b3#
根据Material-ui,这个问题有三种解决方案。
https://material-ui.com/components/app-bar/#fixed-placement
1.你可以使用position=“sticky”代替fixed。IE️ 11不支持粘性过滤。
1.您可以渲染第二个组件
1.你可以使用theme.mixins.toolbar CSS
我个人喜欢使用第二种解决方案。
8tntrjer4#
<AppBar position='static'>
使用这个它会这样做,内容不会隐藏在出现
oaxa6hgo5#
我认为有一个良好的应用程序设置是固执己见,但我会建议以下
qzlgjiam6#
试试这个!
您可以像这样将上述内容添加到代码中
有关更多文档,请访问material-ui断点自定义
yruzcnhs7#
最短的技巧可以给位置作为粘性的Appbar。作为参考,你可以看到下面的附加图像!
enter image description here
svdrlsy48#
我在我的Vite-React应用程序中使用了MUI ResponsiveAppBar组件,并尝试了这里所说的所有内容来更改栏的属性,但没有成功,因为栏在每个页面上呈现,并且不“知道”在特定页面上呈现的其他组件。我的解决方案是在index.css中添加一个css类,如下所示:
然后将该类作为属性添加到每个页面中,以使div呈现其余组件。例如在主页中:
这将在页面的顶部创建一个边距(您可以指定),以便应用栏不会“覆盖”页面上的其他内容。从我检查的内容来看,它不应该以任何方式影响应用程序的响应特性。