css - Material UI,左侧为 Appbar Logo ,中间为 Tabs

标签 css reactjs material-ui css-grid

我制作了一个 react Material ui AppBar。

有一个标志和标签。
选项卡应位于 AppBar 的中央, Logo 位于左侧。
但是我不能让 Logo 向左移动。

我怎样才能让它向左走?

我正在使用mui的Grid系统,但如果有更好的解决方案也没关系。

这是一个活生生的例子 https://codesandbox.io/embed/delicate-feather-mmf3k

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

  return (
    <nav className={classes.root}>
      <AppBar position="static" color="default">
        <Toolbar style={{ alignItems: "center", justifyContent: "center" }}>
          <Grid justify={"center"} alignItems={"center"} container>
            <Grid style={{ justifySelf: "flex-start" }} item>
              <img
                className={classes.logo}
                src={
                  "https://upload.wikimedia.org/wikipedia/commons/a/a7/React-icon.svg"
                }
                alt="Logo"
              />
            </Grid>
            <Grid item>
              <Grid container justify={"center"}>
                <Tabs
                  onChange={(e, v) => setValue(v)}
                  value={value}
                  aria-label="Navigation Tabs"
                >
                  <Tab label={"page 1"} />
                  <Tab label={"page 2"} />
                </Tabs>
              </Grid>
            </Grid>
          </Grid>
        </Toolbar>
      </AppBar>
    </nav>
  );
};

在这种情况下, Logo 和标签都位于中心。

我厌倦了在 Logo 上将 justifySelfalignSelf 样式设置为 flex-start 无济于事。
xs 添加到第二个 Grid 项,使 Logo 向左移动,但在这种情况下选项卡并不完全位于中心。

最佳答案

我想到的解决方案是添加空的 3rd Grid 项。
在 Grid 容器上对齐 'space-between'
xs={1} 赋给第一个 Grid 元素,其中是 Logo 。
xs={4} 赋给标签网格项。
xs={1} 赋给第三个 Grid 项。

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

  return (
    <nav className={classes.root}>
      <AppBar position="static" color="default">
        <Toolbar>
          <Grid justify={"space-between"} container>
            <Grid xs={1} item>
              <img
                className={classes.logo}
                src={
                  "https://upload.wikimedia.org/wikipedia/commons/a/a7/React-icon.svg"
                }
                alt="Logo"
              />
            </Grid>
            <Grid xs={4} item>
              <Grid container justify={"center"}>
                <Tabs
                  onChange={(e, v) => setValue(v)}
                  value={value}
                  aria-label="Navigation Tabs"
                >
                  <Tab label={"page 1"} />
                  <Tab label={"page 2"} />
                </Tabs>
              </Grid>
            </Grid>
            <Grid item xs={1} />
          </Grid>
        </Toolbar>
      </AppBar>
    </nav>
  );
};

工作演示:https://codesandbox.io/s/great-cloud-zwghk

关于css - Material UI,左侧为 Appbar Logo ,中间为 Tabs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57208417/

相关文章:

javascript - YayraBox 数据表 JavaScript CDN 与 Laravel 冲突

html - 为什么文本出现在具有高 z-index 的图像上方

javascript - 如何管理每行动态创建的按钮的功能?

javascript - 更改 Material UI 的颜色选择组件边框不起作用

html - border-bottom CSS 规则不会在鼠标关闭时过渡,但会在悬停时过渡

javascript - 数据绑定(bind)angularjs与onsen ui变量未定义

javascript - React babel loader - 你可能需要一个合适的加载器来处理这种文件类型

javascript - 使用高阶 reducers 去除重复的 redux Action 逻辑

reactjs - Material UI : Is it possible to put the makeStyle styles in a separate file?

reactjs - 如何在固定时间段内平滑地制作 Material UI LinearProgress 动画?