【问题标题】:JSS - How to style a nested child?JSS - 如何设置嵌套子项的样式?
【发布时间】:2019-07-14 04:54:16
【问题描述】:

我有一个列表,想要设置来自父级的列表项的嵌套元素的样式。如何访问嵌套元素?下面的代码不起作用。

反应js标记

<ul classname={classes.list}>
   <li>
     <span className={classes.box}> my box </span>
   </li>
   <li>
     <span className={classes.box}>second box </span>
   </li>
</ul>

JSS

const styles = () => ({
  box: {
    background: 'red',
  },
  list: {
    listStyle: "none",

    "li": {
      "&:first-child": {
        "& $box": {
          color: 'red',
          border: 'solid',
         }
      }
    }
  },

【问题讨论】:

    标签: reactjs jss


    【解决方案1】:

    defining your styles object 的行为方式略有变化,这可以让您的代码运行。对于嵌套元素,您需要通过 space

    分隔 & 和 classname 或 dom 项

    工作风格对象:

    const styles = () => ({
      box: {
        background: 'red',
      },
      list: {
        listStyle: "none",
        '& li': {
          '&:first-child': {
            '& $box': {
              border: 'solid',
            }
          }
    
        }
      }
    })
    

    working demo

    【讨论】:

      【解决方案2】:

      我希望这会有所帮助:

      JSS

      list: {
          listStyle: "none",  
          '& li:first-child $box': {
            background: 'blue'
          }
        }
      

      你有一点打字错误。它应该是带有大写“N”的“className”。

      问候

      【讨论】:

      • 谢谢,但是 box-className 是样式对象的一部分,我在上面更新了它。我认为您的解决方案是访问 string-className
      • 我在看到之后编辑了我的答案。只需更换 .用 $ ,它应该可以工作:) codesandbox.io/s/vyz11lo88l
      猜你喜欢
      • 2018-09-12
      • 2019-04-23
      • 2023-03-21
      • 1970-01-01
      • 2019-01-14
      • 2018-07-10
      • 1970-01-01
      • 2021-05-09
      • 2015-02-22
      相关资源
      最近更新 更多