当前位置: 首页 > 知识库问答 >
问题:

材质UI中心按钮文本忽略图标

姬昀
2023-03-14

我想在一个材料UI按钮中居中文本,以便文本居中,而不管它旁边的图标。目前,图标包括在居中。

演示中的顶部两个按钮显示了它目前的外观,我正在寻找文本,因为它在底部两个按钮中出现。这些按钮的前后分别带有图标,而不影响按钮的文字。

最后两个是期望输出

https://codesandbox.io/s/material-demo-forked-tj8ko?file=/demo.js

import React from "react";
import Button from "@material-ui/core/Button";
import { makeStyles } from "@material-ui/core/styles";
import KeyboardArrowRightIcon from "@material-ui/icons/KeyboardArrowRight";
import KeyboardArrowLeftIcon from "@material-ui/icons/KeyboardArrowLeft";

const useStyles = makeStyles((theme) => ({
  button: {
    width: "100%",
    marginBottom: theme.spacing(1),
    marginTop: theme.spacing(1)
  }
}));

export default function IconLabelButtons() {
  const classes = useStyles();

  return (
    <div>
      <Button
        variant="contained"
        color="secondary"
        className={classes.button}
        startIcon={<KeyboardArrowLeftIcon />}
      >
        Back
      </Button>
      {/* This Button uses a Font Icon, see the installation instructions in the Icon component docs. */}
      <Button
        variant="contained"
        color="primary"
        className={classes.button}
        endIcon={<KeyboardArrowRightIcon />}
      >
        Forward
      </Button>
      <Button variant="contained" color="secondary" className={classes.button}>
        Back
      </Button>
      {/* This Button uses a Font Icon, see the installation instructions in the Icon component docs. */}
      <Button variant="contained" color="primary" className={classes.button}>
        Forward
      </Button>
    </div>
  );
}

共有1个答案

蒋波光
2023-03-14

可以将图标移动到按钮的内部html中,并分别调整边距。这有点奇怪,但解决了你的问题。我把你的演示和更新分叉了:https://codesandbox.io/s/material-demo-forked-xmltd?file=/demo.js

  <Button variant="contained" color="secondary" className={classes.button}>
    <KeyboardArrowLeftIcon style={{ marginLeft: -28 }} />
    Back
  </Button>
  <Button variant="contained" color="primary" className={classes.button}>
    Forward
    <KeyboardArrowRightIcon style={{ marginRight: -28 }} />
  </Button>

您可以在仍然使用startIconendIcon时获得相同的效果,方法是使用withStyles自定义开始/结束图标的样式,然后使用生成的自定义组件:

const CenteredTextButton = withStyles({
  startIcon: {
    marginLeft: -28
  },
  endIcon: {
    marginRight: -28
  }
})(Button);
 类似资料:
  • 我有一个如下: 然而,所有的标签都向右对齐,我想把它们对齐到中心。使用对象,我可以只传递以属性,但是,它与不一样。 我怎样才能像处理

  • 我不知道如何在材质UI中居中放置按钮。这是我的代码: 我怎样才能使我的按钮居中?

  • 我试图得到分页从材料UI,但我想中心的箭头和页数的按钮。 我试图通过创建

  • 如何在单击按钮后聚焦文本字段。我尝试使用自动对焦,但没有成功:示例沙盒

  • 我正在尝试使用谷歌开发的Material按钮。由于依赖第三方,我无法使用androidx存储库,因此我目前正在使用android支持库(v28.0.0-alpha1、alpha3不允许我使用material按钮) 我试图通过一个宽按钮来实现这一点,在文本旁边有一个居中的文本图标: 但我能得到的只是一个居中的文本,按钮边缘有一个图标: 这和最初的Android按钮一样,它也有同样的问题。当时的想法是