主页名称出现在 AppBar 后面,我该如何解决?

Posted

技术标签:

【中文标题】主页名称出现在 AppBar 后面,我该如何解决?【英文标题】:Homepage name appears behind the AppBar, How do I fix this? 【发布时间】:2021-10-09 07:39:44 【问题描述】:

我有一个 appBar,主页会出现在 appbar 的后面。我希望它出现在它下面。这是它的样子:

AppBar 代码:

const Header = () => 
  const [value, setValue] = React.useState(0);

  const handleChange = (event, newValue) => 
    setValue(newValue);
  ;

  //Breakpoints
  const theme = useTheme();
  const isMatch = useMediaQuery(theme.breakpoints.down("md"));
  return (
    <div>
      <AppBar>
        <Toolbar>
          /* //or just change this typography to an icon or picture */
          <Typography>Website</Typography>
          isMatch ? (
            <h1>
              <DrawerComponent />
            </h1>
          ) : (
            <Tabs
              value=value
              indicatorColor="secondary"
              onChange=handleChange
              aria-label="simple tabs example"
            >
              <Tab disableRipple label="Homepage" to="/" component=Link />
              <Tab disableRipple label="Login" to="/login" component=Link />
              <Tab disableRipple label="Settings" />
              <Tab disableRipple label="Sample1" />
              <Tab disableRipple label="Sample2" />
              <Tab disableRipple label="Sample3" />
            </Tabs>
          )
        </Toolbar>
      </AppBar>
    </div>
  );
;

export default Header;

我需要输入&lt;br/&gt; 才能看到主页:

const Homepage = (props) => 
  return (
    <section>
      <br />
      <h1>Homepage</h1>
    </section>
  );
;

export default Homepage;

而且我有这个用于小屏幕尺寸的抽屉组件,更糟糕的是,你将无法再看到任何消息,除非在消息之前会有很多 &lt;br/&gt;

const DrawerComponent = () => 
  const useStyles = makeStyles((theme) => (
    drawerContainer: ,
    iconButtonContainer: 
      marginLeft: "auto",
      color: "white",
    ,

    menuIconToggle: 
      fontSize: "3rem",
    ,
    link: 
      textDecoration: "none",
    ,
  ));

  const [openDrawer, setOpenDrawer] = useState(false);

  //Css
  const classes = useStyles();
  return (
    <div>
      <Drawer
        anchor="left"
        classes= paper: classes.drawerContainer 
        onClose=() => setOpenDrawer(false)
        open=openDrawer
        onOpen=() => setOpenDrawer(true)
      >
        <List className=classes.link>
          <Link to="/">
            <ListItem divider button onClick=() => setOpenDrawer(false)>
              <ListItemIcon>
                <ListItemText> Homepage</ListItemText>
              </ListItemIcon>
            </ListItem>
          </Link>

          <Link to="/login">
            <ListItem divider button onClick=() => setOpenDrawer(false)>
              <ListItemIcon>
                <ListItemText> Login</ListItemText>
              </ListItemIcon>
            </ListItem>
          </Link>
          <ListItem divider button onClick=() => setOpenDrawer(false)>
            <ListItemIcon>
              <ListItemText>Sample</ListItemText>
            </ListItemIcon>
          </ListItem>

          <ListItem divider button onClick=() => setOpenDrawer(false)>
            <ListItemIcon>
              <ListItemText> Sample</ListItemText>
            </ListItemIcon>
          </ListItem>
        </List>
      </Drawer>

      <IconButton
        edge="end"
        className=classes.iconButtonContainer
        onClick=() => setOpenDrawer(!openDrawer)
        disableRipple
      >
        <MenuIcon className=classes.menuIconToggle />
      </IconButton>
    </div>
  );
;

export default DrawerComponent;

【问题讨论】:

【参考方案1】:

解决此问题的一种方法是将margin-toppadding-top 添加到您的homepage 组件中,等于appbar 的高度。

然而,更好的方法是在您的 appBar 上使用以下 CSS 属性。

.app-bar 
  position: sticky;
  top: 0;

这将使您的 appbar 贴在顶部,并会自动调整其后续 DOM 元素的高度。

【讨论】:

【参考方案2】:

这篇文章可能会回答你的问题:Creating a navbar with material-ui

你可以试试:

使用 CSS 实现 padding-top(使用“em”而不是“px”作为响应式填充高度) 重新组织您的 React 组件,确保页眉 (appbar) 不在页面中,而是在同一级别的组件(请参阅上面链接的帖子)

【讨论】:

以上是关于主页名称出现在 AppBar 后面,我该如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何仅在滚动后显示 AppBar?

AppBar中的分隔线没有出现

如何使文本出现在 mui AppBar/Toolbar 组件的右侧?

为啥我会收到“找不到数据源名称且未指定默认驱动程序”,我该如何解决?

为啥我会收到“找不到数据源名称且未指定默认驱动程序”,我该如何解决?

为啥我会收到“找不到数据源名称且未指定默认驱动程序”,我该如何解决?