11

我在我的应用程序上使用 react-select 组件。我也只是用 JSS 设计我的应用程序。我的问题是,由于 react-select 是一个 npm 包,因此我无法修改组件中的类名。所以那里有一个输入,我需要以我的风格为目标。

<div class="Select-input"><input type="text" name="style-me" /></div>

我的 JSS 有点像这样:

jss.setup(preset());

const stylus = {
   'Select-input': {
       background: 'red'
   }
}

const { classes } = jss.createStyleSheet(stylus).attach();

我需要在 JSS 中做什么来设置子输入标签的样式?

4

3 回答 3

10

根据这个答案,您可以为 react-select 传入一个类名。我的其余答案显示了如何定位子元素。


我在这里查看了 JSS 的 github 页面:
https ://github.com/cssinjs/jss

他们在这里有一个嵌套 CSS 规则的实时示例:
https ://github.com/cssinjs/examples/blob/gh-pages/plugins/jss-nested/simple/app.js

在以嵌套<button>元素为目标的代码中,它使用了一个名为& button. 注意与号和之间的空格button。因此,对于您的特定代码,您可以<input>这样定位:

jss.setup(preset());

const stylus = {
   'Select-input': {
       background: 'red',
       '& input': {
            /* your input styles here */
       }
   }
}

const { classes } = jss.createStyleSheet(stylus).attach();
于 2016-12-14T03:31:40.353 回答
4

假设您指的是这个包:

https://github.com/JedWatson/react-select

你实际上可以className作为道具传入

于 2016-12-14T03:26:10.957 回答
1

你总是至少有两种方式:

  1. 传递生成的类名

默认情况下使用 JSS,避免使用无范围的类名。使用生成的类名并将其传递给您要使用的组件

const {classes} = jss.createStyleSheet({
  input: {background: 'red'}
}).attach()


<Input className={classes.input} />
  1. 使用作用域全局选择器

如果无法传递类名,您仍然可以拥有一个本地范围的全局选择器

const {classes} = jss.createStyleSheet({
  container: {
    '@global': {
      input: {background: 'red'}
    }
  }
}).attach()

<div className={classes.container}>
  <Input />
</div>
于 2017-05-13T01:15:26.773 回答