gpt4 book ai didi

css - 如何在 Tab 组件中更改 Icon 组件的位置?

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:06 25 4
gpt4 key购买 nike

我在我的 React 元素中使用 MaterialUI 的选项卡。

这是标签的 JSX:

<AppBar color="default" position="static">
<Tabs indicatorColor="primary" textColor="primary" value={tabIndex} onChange={this.handleChange}>
{instances.map(instance =>
<StyledTab
style={{ textTransform: 'initial' }}
onClick={() => { this.changeActiveInstance(instance.id) }}
label={this.getTabAddress(instance)}
icon={<ClearIcon ></ClearIcon>}
>
</StyledTab>
)}
</Tabs>

这就是我注入(inject) css 的方式:

const StyledTab = withStyles({
root: {
textTransform: 'initial'
},
})(Tab);

结果是这样的: Tab

我想将“ClearIcon”放在别处。我尝试了一点样式注入(inject),但没有成功。

有人能给我指出正确的方向吗?

最佳答案

当尝试自定义任何 Material-UI 组件时,起点是 CSS portion of the API documentation .在这种情况下,您可能想要覆盖的最相关的类是 wrapperlabelContainerlabel

要完全了解它们的使用方式和默认样式(以及您可能想要覆盖的内容),最好的方法是查看 source code .

以下是来自 Tab.js 的样式中最相关的部分:

  /* Styles applied to the `icon` and `label`'s wrapper element. */
wrapper: {
display: 'inline-flex',
alignItems: 'center',
justifyContent: 'center',
width: '100%',
flexDirection: 'column',
},
/* Styles applied to the label container element if `label` is provided. */
labelContainer: {
width: '100%', // Fix an IE 11 issue
boxSizing: 'border-box',
padding: '6px 12px',
[theme.breakpoints.up('md')]: {
padding: '6px 24px',
},
},

下面是理解这些如何使用的相关代码:

    if (labelProp !== undefined) {
label = (
<span className={classes.labelContainer}>
<span
className={classNames(classes.label, {
[classes.labelWrapped]: this.state.labelWrapped,
})}
ref={ref => {
this.labelRef = ref;
}}
>
{labelProp}
</span>
</span>
);
}
        <span className={classes.wrapper}>
{icon}
{label}
</span>

以下是一些可能的自定义方法示例。

import React from "react";
import PropTypes from "prop-types";
import Paper from "@material-ui/core/Paper";
import { withStyles } from "@material-ui/core/styles";
import Tabs from "@material-ui/core/Tabs";
import Tab from "@material-ui/core/Tab";
import PhoneIcon from "@material-ui/icons/Phone";
import FavoriteIcon from "@material-ui/icons/Favorite";
import PersonPinIcon from "@material-ui/icons/PersonPin";

const styles = {
root: {
flexGrow: 1,
maxWidth: 700
},
firstIcon: {
paddingLeft: 70
},
labelContainer: {
width: "auto",
padding: 0
},
iconLabelWrapper: {
flexDirection: "row"
},
iconLabelWrapper2: {
flexDirection: "row-reverse"
}
};

class IconLabelTabs extends React.Component {
state = {
value: 0
};

handleChange = (event, value) => {
this.setState({ value });
};

render() {
const { classes } = this.props;

return (
<Paper square className={classes.root}>
<Tabs
value={this.state.value}
onChange={this.handleChange}
variant="fullWidth"
indicatorColor="secondary"
textColor="secondary"
>
<Tab
icon={<PhoneIcon className={classes.firstIcon} />}
label="Class On Icon"
/>
<Tab
classes={{
wrapper: classes.iconLabelWrapper,
labelContainer: classes.labelContainer
}}
icon={<FavoriteIcon />}
label="Row"
/>
<Tab
classes={{
wrapper: classes.iconLabelWrapper2,
labelContainer: classes.labelContainer
}}
icon={<PersonPinIcon />}
label="Row-Reverse"
/>

<Tab icon={<PersonPinIcon />} label="Default" />
</Tabs>
</Paper>
);
}
}

IconLabelTabs.propTypes = {
classes: PropTypes.object.isRequired
};

export default withStyles(styles)(IconLabelTabs);

Edit Tab Icon Placement

关于css - 如何在 Tab 组件中更改 Icon 组件的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55078256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com