子元素焦点状态更改父元素SASS @ at-root的样式

时间:2016-10-21 18:48:39

标签: css sass accessibility

当以下代码中的子元素span.icon-hamburger收到:焦点状态时,我想要更改li元素的样式。使用SASS解决方案,我读到@ at-root可以在这里工作。但是,我无法使用@ at-root为这个用例找到SASS解决方案。您对此用例有何看法?

HTML:

<ol>
  <li>
    <span class="icon-hamburger"></span>
  </li>
</ol>

CSS / SASS:

.icon-hamburger:focus {
  @at-root ol li #{&} {
    background-color: #fff;
  }
}

2 个答案:

答案 0 :(得分:0)

来自this excellent answer by Dan Herbert:

  

目前无法在CSS中选择元素的父级。

     

如果有办法,那么它将出现在当前的CSS选择器规范中:

     

Selectors Level 3 Spec

     

CSS 2.1 Selectors Spec

     

与此同时,如果您需要选择父元素,则必须使用JavaScript。

N.B。,有人讨论过在CSS4中这样做的可能性。

答案 1 :(得分:0)

IE和Edge没有解决方案,但对于Chrome和Firefox,您可以使用:focus-within CSS伪类。

  

:CSS伪类中的焦点表示具有的元素   收到焦点或包含已获得焦点的元素。在   换句话说,它代表了一个本身与之匹配的元素   :focus伪类或具有匹配的后代:focus。   (这包括阴影树中的后代。)

https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-within