如何用MUI制作圆形复选框?

2022-02-22 00:00:00 reactjs javascript material-ui

我要尝试匹配的设计要求复选框为圆形。我正在将MUI与Reaction一起使用。

边框半径不起作用,因为实际图标的边框不是"可见"复选框的边框。

我不能只使用像Font Awesom这样的内容,因为它实际上需要选中和取消选中。

// Current Styling
const styles = theme => ({
  nested: {
    paddingLeft: theme.spacing.unit * 4,
  },
  icon: {
    margin: theme.spacing.unit,
    fontSize: 25,
  },
  root: {
    color: cyan['A400'],
    '&$checked': {
      color: cyan['A400'],
    },
  },
  checked: {},
});

// Actual checkbox code
return (
  // Holds the individual step with edit icon and delete icon
  <>
    <ListItemIcon>
      {/* Checkbox */}
      <Checkbox
        type="checkbox"
        defaultChecked={step.completed} 
        onChange={this.onChange}
        value="true"
        classes={{
          root: classes.root,
          checked: classes.checked,
        }}
      />
    </ListItemIcon>

我希望保留MUICheckbox的工作代码,但只需更改一些样式,使边缘成为完美的圆形(类似于单选按钮,但中间带有复选标记)。


解决方案

材料的Checkboxsupports custom icons。有圆形checked circle Material icons,对于空的圆可以稍微作弊一下,Radio输入使用图标(大小一样,效果很好):

import Checkbox from '@material-ui/core/Checkbox';
import CircleChecked from '@material-ui/icons/CheckCircleOutline';
import CircleCheckedFilled from '@material-ui/icons/CheckCircle';
import CircleUnchecked from '@material-ui/icons/RadioButtonUnchecked';

…

<Checkbox
  icon={<CircleUnchecked />}
  checkedIcon={<CircleChecked />}
  …
/>

// or with filled checked icon:

<Checkbox
  icon={<CircleUnchecked />}
  checkedIcon={<CircleCheckedFilled />}
  …
/>

…看起来是这样的(fooisCheckCircleOutline,barisCheckCircle):

相关文章