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

如何覆盖材质界面的选项卡选择颜色?

任小云
2023-03-14

我正在用materialui-tabs主题https://material-ui.com/api/Tab/构建一个React16.13.0应用程序。我在组件中创建了这些样式...

const theme = createMuiTheme({
  overrides: {
    MuiTab: {
      root: {
        "&.MuiTab-root": {
          backgroundColor: "black",
          border: 0,
          borderBottom: "2px solid",
          "&:hover": {
            border: 0,
            borderBottom: "2px solid",
          },
        },
        "&.Mui-selected": {
          backgroundColor: "none",
          borderBottom: "2px solid #373985",
          borderColor: "#373985",
        }
      }
    }
  }
});

const useStyles = makeStyles((theme) => ({
  root: {
    width: "100%",
    flexGrow: 1,
    color: "#3739B5",
    backgroundColor: "white",
  },
  viewButtons: {
    marginTop: theme.spacing(2),
    marginBottom: theme.spacing(1),
  },
}));

这些应用于

  <ThemeProvider theme={theme}>
  <AppBar position="static">
    <Tabs
      classes={classes}
      value={value}
      variant="fullWidth"
      centered
      onChange={handleChange}
      aria-label="volunteer dashboard tabs"
    >
      <Tab label={proposedLabel} {...a11yProps(2)} />
      <Tab label={planningLabel} {...a11yProps(1)} />
      <Tab label={inProgressLabel} {...a11yProps(0)} />
      <Tab label={completedLabel} {...a11yProps(3)} />
    </Tabs>
  </AppBar>
  </ThemeProvider>

我正在尝试更改所选选项卡的背景颜色。基于devtools,inspection,类被列为

.PrivateTabIndicator-colorSecondary-267 {
        
    background-color: #f50057;
}

.PrivateTabIndicator-root-265 {
            width: 100%;
    
        bottom: 0;
    
        height: 2px;
    
        position: absolute;
    
        transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
}

然而,尽管我已经列出了在我的主题中,颜色显示为红色,尽管我在我的样式中指定了什么

如何覆盖选定选项卡的边框颜色?

共有2个答案

端木飞
2023-03-14

您现在可以使用TabIndicatorProps使用当前版本的MUI(4.10.02)来设置活动指示器的样式。这里有文件。

有两种方法可以做到这一点:

方法1:使用样式:{}

import React from "react";
import PropTypes from "prop-types";
import { Tabs, Tab, makeStyles } from "@material-ui/core";

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

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

  return (
    <React.Fragment>
       <Tabs
         value={value}
         onChange={handleChange}
         TabIndicatorProps={{
           style: { background: "cyan", height: "10px", top: "35px" }
         }}
       >
         <Tab label="TEST1" value={0} />
         <Tab label="TEST2" value={1} />
         <Tab label="TEST3" value={2} />
         <Tab label="TEST4" value={3} />
       </Tabs>
    </React.Fragment>
  );
};

export default TabsIndicator;

方法2:使用classname:{类}

import React from "react";
import PropTypes from "prop-types";
import { Tabs, Tab, makeStyles } from "@material-ui/core";

const useStyles = makeStyles(theme => ({
  indicator: {
    backgroundColor: "green",
    height: "10px",
    top: "45px"
  }
}));

const TabsIndicator = () => {
  const classes = useStyles();

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

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

  return (
    <React.Fragment>
        <Tabs
          value={value}
          onChange={handleChange}
          TabIndicatorProps={{ className: classes.indicator }}
        >
          <Tab label="TEST1" value={0} />
          <Tab label="TEST2" value={1} />
          <Tab label="TEST3" value={2} />
          <Tab label="TEST4" value={3} />
        </Tabs>
    </React.Fragment>
  );
};

export default TabsIndicator;

你也可以在这里看看我的沙箱。希望这有帮助!

田鸿彩
2023-03-14

你能试试这个解决方案对我有用吗。我假设您想要覆盖底部边框指示器颜色。

    <Tabs value={0} TabIndicatorProps={{ style: { background: "#hex-color" } }}>
         <Tab className={clasess.tab} label="Home" />
         <Tab className={clasess.tab} label="Services" />
    </Tabs>

 类似资料:
  • 我有一个mat select,其中的选项是数组中定义的所有对象。我试图将该值设置为其中一个选项的默认值,但是当页面呈现时,该值处于选中状态。 我的typescript文件包含: 我的HTML文件包含: 我已尝试将和

  • 我使用Angular 7.2创建一个选择控件,如下所示: 这正是我们想要的。我有一些代码希望删除选定的项目,大致如下: 虽然这会将其从选定项的数组中删除。如果我从选择控件中选择新值,则所有原始项仍被选中(即勾选)。 如何清除所选项目? 根据@Maarti的响应,我的代码现在可以使用

  • 我正在尝试在选择选项中更改选择的颜色。我试图这样做: 但它不起作用。这只适用于简单文本,不适用于选项。有什么方法可以改变选择的颜色吗?我不需要更改所选选项的背景。我需要改变选择的颜色。

  • 我使用的是:Angular 4.4.5@Angular/Material:2.0.0-beta.12

  • 我需要能够从角材料列表中删除选定的项目。为此,我决定从初始项目数组中减去选定项目数组(不确定这是最好的方法)。 我的问题是,我找不到一种方法来将超文本标记语言中的选定项数组传递给TS并使用它。 Angular材料在其留档中有以下示例: 其中x是mat-seltion-list选择器的ID,y是对所选元素执行的操作。但这似乎只适用于超文本标记语言。 下面是我不工作的代码。 HTML,其中我设置了列表

  • 问题内容: 我正在尝试将第一个选项的颜色更改为灰色,即只有文本(选择一个选项),但是在这里无法正常工作: 问题答案: Suresh,您不需要在代码中使用任何内容。您需要的是这样的东西: 但是正如您所看到的,因为选项中的第一项是选择控件显示的第一件事,所以您看不到其分配的颜色。如果您打开选择列表并看到已打开的项目,则会看到可以为第一个选项分配灰色。因此,您需要jQuery中的其他功能。