如何在 JSS 中使用子选择器

Posted

技术标签:

【中文标题】如何在 JSS 中使用子选择器【英文标题】:How to use child selectors in JSS 【发布时间】:2018-12-08 05:37:24 【问题描述】:

我正在试验 JSS,看看迁移 Sass 代码库是否现实。我有一个非常基本的 CSS 样式示例,当悬停时,它会修改子节点的样式。

span 
  color: red;


button:hover span 
  color: blue;

<button>
  <span>Click Me</span>
</button>

我不确定如何在 JSS 中编写此代码。我尝试过的东西看起来像:

const styles = 
  button: 
    '&:hover': 
      span: 
        color: 'blue',
      
    
  ,
  span: 
    color: 'red',
  


const  classes  = jss.createStyleSheet(styles).attach()

document.body.innerhtml = `
  <button class=$classes.button>
    <span class=$classes.span>Click Here</span>
  </button>
`

谢谢!

【问题讨论】:

【参考方案1】:

你有没有尝试过:

const styles = 
  button: 
    '&:hover span': 
       color: 'blue',
    
  ,
  span: 
    color: 'red',
  

【讨论】:

谢谢!如果它是一个与元素选择器不匹配的类名,它将如何工作。例如,如果它是someClass @JonSakas,在类前加上 $。例如:"&amp;:hover $someClass" 当鼠标悬停在按钮上时,这段代码是否会改变所有 span 元素的颜色或嵌套在按钮中的 span 元素? 嗨@deowk,有没有办法使用JSS中的子元素访问父元素【参考方案2】:

正如@cwouter 的评论中提到的,如果它是一个类名,你可以这样做。

const styles = 
  button: 
    '&:hover $some_class_name': 
       color: 'blue',
    
  ,
  some_class_name: 
    color: 'red',
  

【讨论】:

以上是关于如何在 JSS 中使用子选择器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用多个选择器重用相同的样式规则

用sass选择器嵌套的时候,如何表示直接子元素

如何在 Angular 子组件选择器之间传递内容

CSSCSS 复合选择器 ② ( 子元素选择器 | 交集选择器 )

如何在 material-ui 样式/JSS 中选择 id?

课时73.后代选择器和子元素选择器(理解)