Из вашего ответа я бы предположил, что элемент с идентификатором 'header-section' находится в верхней части страницы, и иногда правило css применяется до загрузки остальной части страницы. Это означает, что выражение пытается оценить offsetHeight 'content-section' до того, как этот элемент существует.
У меня есть пара советов о том, как с этим бороться, но вам нужно будет попробовать их, чтобы оценить их полезность.
1 / Вместо создания правила на основе идентификатора раздела заголовка, создайте его на основе класса заголовка раздела. Не добавляйте этот класс в разметку, но добавляйте его по завершении загрузки документа через jquery - оставьте идентификатор элемента как есть ...
$(document).ready(function(){
$("#header-section").addClass("header-section");
});
2 / Сделать правило более терпимым к тому, что 'content-section' не найден - не уверен, как часто вычисляется выражение, так как я никогда не чувствовал необходимости использовать выражение в правилах css, поэтому это может не сработать .
#header-section {margin-top: expression((0 - (this.offsetHeight + (document.getElementById("content-section") ? document.getElementById("content-section").offsetHeight : 0))) + "px");}
Дайте мне знать, как вы поживаете.
P.S. Я понятия не имею, к чему стремится правило - я смоделировал страницу с тем, что, как я полагаю, с тем же макетом, и все, что он делает, это перемещает большую часть содержимого с верхней части страницы таким образом, чтобы предотвратить это когда-либо было видно.