11

reacts material-uiを使い始めたばかりで、いくつかのスタイルをカスタマイズしたいと考えています。たとえば、タブの背景色を変更します。

inlineStyle を使用しようとしています

お気に入り

<Tabs style={this.getStyles().tabs} > </Tabs>

    getStyles(){
        return {

          tabs: {
            backgroundColor: Colors.teal200
          },

          headline: {
            fontSize: '24px',
            lineHeight: '32px',
            paddingTop: '16px',
            marginBottom: '12px',
            letterSpacing: '0',
            fontWeight: Typography.fontWeightNormal,
            color: Typography.textDarkBlack,

          }
        }
    }

タブのコンテンツ領域を変更しますが、ヘッダーは変更しません。

ここにいくつかの色属性があります。それをどのように使用しますか? この場合、ドキュメントには例がありません。

続行するにはどうすればよいですか?

4

4 に答える 4

10

私が行う方法は、スタイルをオーバーライドすること<Tab>です(制御されたタブがある場合)

render: function() {

  var styles = {
    default_tab:{
      color: Colors.grey500,
      backgroundColor: Colors.grey50,
      fontWeight: 400,
    },
    active_tab:{
      color: Colors.deepOrange700,
    }
  }

  styles.tab = []
  styles.tab[0] = styles.default_tab;
  styles.tab[1] = styles.default_tab;
  styles.tab[2] = styles.default_tab;
  styles.tab[this.state.slideIndex] = objectAssign({},   styles.tab[this.state.slideIndex], styles.active_tab);

  return (
    <Tabs>
      <Tab style={styles.tab[0]} label="Tab 0" value="0" />
      <Tab style={styles.tab[1]} label="Tab 1" value="1" />
      <Tab style={styles.tab[2]} label="Tab 2" value="2" />
    </Tabs>
  )

より良い方法は、タブ/タブの小道具を増やしてカスタマイズできるようにすることだと思います。

于 2015-12-14T17:29:04.807 に答える
4

誰かが同じことに直面するなら、ここに私が見つけたものがあります

ThemeManagerを使用すると、 スタイル出力を変更できます

例えば

ThemeManager.setTheme(ThemeManager.types.DARK);

特定のスタイル変数を変更するsetPalette

componentWillMount() {
        ThemeManager.setPalette({
          accent1Color: Colors.indigo50,
            primary1Color: "#474B4E",
            primary2Color: "#2173B3",
            primary3Color: "#A9D2EB",
            accent1Color: "#ED3B3B",
            accent2Color: "#ED2B2B",
            accent3Color: "#F58C8C"
        });
     }
于 2015-08-09T08:54:46.850 に答える
2

コンポーネントをカスタマイズする最も便利な方法classNameは、提供されたstyle属性の機能がかなり制限されているため、属性を使用してプレーンな古い CSS を単純に適用することです。

簡単な例を考えてみましょう:

const MyAwesomeTabContainer = () => (
    <Tabs className="tabs-container">
        <Tab icon={<Person />} className="tab" />
        <Tab icon={<Content />} className="tab" />
    </Tabs>
);

次のLESSコード (CSS ではありません!) を使用すると、必要に応じてスタイルをカスタマイズできます。

.tabs-container {
  >div:first-child { // modifies the background color
    background-color: #f6f6f6 !important;
  }

  >div:last-child { // changes the distance between tabs and content
    margin-top: 10px;
  }

  .tab {
    >div>div { // modifies the font size of the tab labels 
      font-size: 10px;

      svg { // modifies the color of SVG icons
        fill: #626262 !important;
      }
    }
  }
}

!important残念ながら、コンポーネントのスタイル情報はコード内でインラインに設定されているため、いくつかのステートメントを適用する必要があります。

于 2016-10-04T15:55:31.903 に答える
-2

アクティブなタブにクラスが必要だったので、そのための簡単な解決策を次に示します。

<Tabs className="pcd-tabs" onChange={this.handleChange}>
    <Tab className="pcd-tab pcd-tab0 pcd-tab-active" label="Chart" value={0} />
    <Tab className="pcd-tab pcd-tab1" label="Series" value={1} />
</Tabs>

よりも

handleChange = (value) => {
  document.getElementsByClassName('pcd-tab-active')[0].classList.remove('pcd-tab-active');
  document.getElementsByClassName('pcd-tab' + value)[0].classList.add('pcd-tab-active');
};
于 2017-04-28T14:59:58.557 に答える