Как установить значение переменной scss условно в зависимости от корневого селектора - PullRequest
1 голос
/ 31 марта 2019

Я хочу изменить значение переменных в зависимости от селектора тега body.

Например:

$body-bg: green;
$text-color: red;
$border-style: grey;

body{
  background:$body-bg;
  color: $text-color;
}

И если тело имеет класс 'dark', значение переменной должноможно условно изменить на что-то вроде этого:

$body-bg: black;
$text-color: white;

К сожалению, в разных файлах много перезаписей.Поэтому я не могу переписать во всех местах.Так что в моем сценарии единственный способ - переписать значение переменных в зависимости от селектора.

1 Ответ

0 голосов
/ 02 апреля 2019
$_contrast-low :     $_color-black !default;

$_contrast-high :    $_color-white !default;

// Find the best contrast color compared to a color
@function get-contrast-text($base-color) {

  $color-brightness: round((red($base-color) * 299) + (green($base-color) * 587) + (blue($base-color) * 114) / 1000);
  $light-color: round((red(#ffffff) * 299) + (green(#ffffff) * 587) + (blue(#ffffff) * 114) / 1000);

  @if abs($color-brightness) < ($light-color/2){
    @return $_contrast-high;
  }

  @return $_contrast-low;
}

И вы можете использовать:

$my-color: #fff;
.hello {
    background : $my-color;
    color:  get-contrast-text($my-color);
}
...