Стилът реагира на разделите на потребителския интерфейс на материала

Току-що започнах да използвам реагира 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,

          }
        }
    }

променя областта на съдържанието на разделите, но не и заглавката.

тук имаме някои цветови атрибути как ги използваме? Документите не дават примери в този случай.

Как да процедирам?


person fefe    schedule 05.08.2015    source източник
comment
Добавяне на CSS за замяна на текущите стилове?   -  person idbehold    schedule 05.08.2015
comment
просто използвайте предоставените цветови кодове material-ui.com/#/customization/colors за промяна на цвета на фона на раздела. Но как?   -  person fefe    schedule 05.08.2015


Отговори (4)


Начинът, по който го правя, е да заменя стила <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>
  )

Въпреки че мисля, че по-добрият начин е да имаме повече подпори за Tabs/Tab, за да можем да го персонализираме.

person yuchien    schedule 14.12.2015
comment
хубаво! Просто актуализирайте: objectAssign сега е Object.assign - person Felipe Augusto; 23.06.2017

Така че, ако някой би се изправил пред същото, ето какво открих

с 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"
        });
     }
person fefe    schedule 09.08.2015

Най-удобният начин за персонализиране на компонента е просто да приложите обикновен стар CSS с помощта на атрибута className, тъй като възможностите на предоставените style атрибути са доста ограничени.

Нека разгледаме директен пример:

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 израза, тъй като информацията за стила на компонента е зададена в кода.

person Dennis    schedule 04.10.2016

Исках клас в активния раздел, така че ето бързо решение за това:

<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');
};
person kakaja    schedule 28.04.2017