0

我目前正在向我的网站添加暗模式。更改全部通过脚本处理,并考虑到用户的偏好以及他们机器的当前外观。如果在暗模式下,我基本上会得到一个“暗”类,<body>否则什么都没有。

一切正常,但在一个元素上我需要基于此更改背景图像,但我遇到了一个问题,因为我的顶级选择器已经基于 body。

这是我的代码:

.page-home {
  .home-intro__caricature {
    @include ratio-box(100%);
    width: 100%;
    border-radius: 50%;
    background-color: var(--main-background-color);
    background-image: url('../src/svgs/caricature.svg'), url('../src/svgs/pattern-light.svg');
    background-repeat: no-repeat, repeat;
    background-position: center bottom, center center;
    background-size: contain, auto;
    transform: rotateY(0deg);
    z-index: 2;
    transition: box-shadow 0.2s ease-in-out;

    &.dark {
      background-image: url('../src/svgs/caricature.svg'), url('../src/svgs/pattern-dark.svg');
      background-repeat: no-repeat, repeat;
      background-position: center bottom, center center;
      background-size: contain, auto;
    }
  }
}

问题是那.page-home是一堂课<body>.dark也必须如此。如何构造选择器以便将.dark其添加到选择器中body

4

1 回答 1

2

如果我正确理解了您的问题,则以下内容应该有效。

也没有必要重申其他背景属性。

.page-home {
  .home-intro__caricature {
    @include ratio-box(100%);
    width: 100%;
    border-radius: 50%;
    background-color: var(--main-background-color);
    background-image: url('../src/svgs/caricature.svg'), url('../src/svgs/pattern-light.svg');
    background-repeat: no-repeat, repeat;
    background-position: center bottom, center center;
    background-size: contain, auto;
    transform: rotateY(0deg);
    z-index: 2;
    transition: box-shadow 0.2s ease-in-out;
  }

  &.dark {
    .home-intro__caricature {
      background-image: url('../src/svgs/caricature.svg'), url('../src/svgs/pattern-dark.svg');
    }
  }
}
于 2019-09-07T20:53:37.670 回答