Переменная CSS не изменяется, когда результат получен из других переменных CSS

Я предполагаю, что это проблема браузера!

Но это интересно

Ниже у меня есть 2 варианта расчета высоты и ее присвоения.

Черный ящик использует переменную css для расчета и назначения высоты ящика.

:root {
--content-height: calc(var(--app-height) - var(--app-footer) - var(--app-footer));  
}
.black {
  height: var(--content-height);
}

Синему прямоугольнику присваивается высота без использования переменной css, и он работает, а черный не работает.

.blue {
    height: calc(var(--app-height) - var(--app-footer) - var(--app-footer))
}

Думаете, оба варианта будут работать одинаково? НЕТ

https://codepen.io/Anenth/pen/VVwpzp

Только второй работает нормально! Проверьте приведенный ниже код

document.querySelector('body').style.setProperty('--app-height', "100px")
:root {
  --app-header: 20px;
  --app-footer: 20px;
  --app-height: 300px;
  --content-height: calc(var(--app-height) - var(--app-footer) - var(--app-footer));
}

.box {
  width: 50px;
  background: #000;
  margin: 20px;
  display:inline-block;
  vertical-align:top;
}

.box-with-calc-var {
  height: var(--content-height);
}

.box-without-calc-var {
  background: #00F;
  height: calc(var(--app-height) - var(--app-footer) - var(--app-footer));
}
<div class="box box-with-calc-var"></div>
<div class="box box-without-calc-var"></div>


person Anenth    schedule 03.11.2018    source источник
comment
оба работают нормально...но по разному   -  person Temani Afif    schedule 03.11.2018
comment
в качестве примечания, первый описанный вами код полностью отличается от предоставленного вами фрагмента... если --content-height действительно был определен на том же уровне вашего элемента, оба будут работать одинаково: jsfiddle.net/8xfrdv62   -  person Temani Afif    schedule 03.11.2018
comment
@TemaniAfif проверьте это codepen.io/Anenth/pen/VVwpzp   -  person Anenth    schedule 03.11.2018
comment
codepen похож на фрагмент, который вы предоставили здесь ... переменная --content-height определена на корневом уровне, но если вы проверите свое объяснение перед фрагментом, где вы определили .black, вы определили переменную там на том же уровне определения высоты, который отличается от определение на корневом уровне (как объяснено в дубликате и как показано в скрипке, которой я поделился)   -  person Temani Afif    schedule 03.11.2018
comment
Разобрался, а как изменение области видимости меняет вычисляемое значение?   -  person Anenth    schedule 03.11.2018
comment
вы читали дубликат?   -  person Temani Afif    schedule 03.11.2018
comment
Да, интересно   -  person Anenth    schedule 03.11.2018
comment
и вы нашли объяснение, которое вы хотите?   -  person Temani Afif    schedule 03.11.2018
comment
Это немного сбивает с толку, почему он ведет себя так   -  person Anenth    schedule 03.11.2018
comment
просто рассматривайте это не как язык программирования, а как CSS... Значение на корневом уровне оценивается на корневом уровне и не изменится, если вы снова измените переменную на внутреннем уровне... все дело в каскадировании: сверху на дно. Переменная на корневом уровне не видит ту, что находится в теле   -  person Temani Afif    schedule 03.11.2018
comment
@TemaniAfif, в этом есть смысл! спасибо   -  person Anenth    schedule 08.11.2018