当前位置: 首页 > 知识库问答 >
问题:

与Sass选择器不能与样式化组件中的同级选择器一起工作

陶星辰
2023-03-14
import styled from "styled-components";

const Styles = styled.div`
  .App {
    &__input {
      width: 200px;
      background-color: orangered;
      &:focus {
        background-color: greenyellow;
      }
    }
    &__button {
      background-color: grey;
    }
    /* this works */
    &__input:focus + .App__button {
      background-color: greenyellow;
    }

    /* this doesn't */
    &__input:focus + &__button {
      background-color: greenyellow;
    }
  }
`;

export default function App() {
  return (
    <Styles>
      <div className="App">
        <input className="App__input" />
        <button className="App__button">click</button>
      </div>
    </Styles>
  );
}

正如您在代码中所看到的,我希望“&”指的是“.app”,因为它在其他地方以及node_sass中都起作用。

这是样式化组件中的一个bug还是我遗漏了什么?下面是复制问题的codesandbox链接:-

https://codesandbox.io/s/jolly-visvesvaraya-ibjd8?file=/src/app.js

共有1个答案

劳昊明
2023-03-14

问题就在这里:

因为父选择器可以被像h1这样的类型选择器替换,所以它只允许在复合选择器的开头使用类型选择器...

它还说:

它还可以用于在特定上下文中设置外部选择器的样式...

在你的情况下,这似乎不是一个合适的“上下文”。

请参阅SASS父选择器文档。这里。

 类似资料:
  • 选择器提供了一个简单的方法来从一个预定义集合中选取单个值。 在手机上,选择器最适合被用来显示一个确认对话框。对于内联显示,例如一个表单中,考虑使用分段下拉按钮之类的紧凑控制。在你的应用中使用这些组件可以帮你保证用户指定的日期或者时间是正确格式化的。 日期选择器的格式根据地区自动进行调整,即,美国是月-日-年,其他地区是日-月-年。 时间选择器的格式根据用户的喜好进行设定,即,12小时或者 24 小

  • 在样式化组件文档中,它们有以下示例: https://www.styled-components.com/docs/advanced#referring-连接到其他组件 当您将鼠标悬停在其父对象(在本例中为链接)上时,它会显示一个改变颜色的图标。 从文件中,我们知道: 文档注释#1:样式化组件通过“组件选择器”模式清晰地解决了这个用例。每当一个组件被styled()工厂函数创建或包装时,它也会被分

  • 问题内容: 从性能角度来看,哪个更好: 要么 问题答案: 您的问题的答案是:是的。 除非您的代码很慢,否则不必担心性能差异 。如果是这样,请使用探查器确定瓶颈。 从分析的角度来看: 应该更快,因为jQuery将通过它进行管道传输(如果存在),并且本机代码比非本机代码运行得更快。它还将保存在其他函数调用中。 如果计划在上链接其他功能,则更好:

  • 问题内容: 如果我只需要2/3列,而是查询而不是在select查询中提供这些列,那么关于更多/更少I / O或内存的性能是否会有所下降? 如果我确实选择了*,则可能会出现网络开销。 但是在选择操作中,数据库引擎是否总是从磁盘中提取原子元组,还是仅提取在选择操作中请求的那些列? 如果它总是拉一个元组,则I / O开销是相同的。 同时,如果它拉出一个元组,从元组中剥离请求的列可能会占用内存。 因此,在

  • 问题内容: 我遇到了一个问题。我有这个mixin(这是尝试将更少的端口移植到sass): 显然这是行不通的:D我希望它生成如下内容: mixin在各种div类中被调用,因此不可能(轻松)使其变为静态。 Sass专业人士(或非专业人士,但比我聪明)是否有任何解决方法?感谢大家的关注和分享您的解决方案。 问题答案: 对于Sass 3.2和更早版本,这些是使用父选择器的所有有效方法: 从Sass 3.3

  • 除了基本的选择器外,jQuery的层级选择器更加灵活,也更强大。 因为DOM的结构就是层级结构,所以我们经常要根据层级关系进行选择。 层级选择器(Descendant Selector) 如果两个DOM元素具有层级关系,就可以用$('ancestor descendant')来选择,层级之间用空格隔开。例如: <!-- HTML结构 --> <div class="testing"> <u