К сожалению, на самом деле не существует единственного надежного способа сделать это. Фиксированные элементы полностью исключаются из потока страницы и того, как он отображается, поэтому не занимают места. https://developer.mozilla.org/en-US/docs/web/css/position#fixed
То, как вы это сделали, это один из вариантов, другой - изменить отступы, чтобы соответствовать высоте при изменении размера окна (чтобы убедиться, что высота всегда правильная).
например. что-то вроде:
$(window).resize(function () {
$(".main").css("padding-top",$(".main-header-bar-wrap").outerHeight());
})
Другой вариант - создать скрытую копию заголовка с position: relative
и visibility: hidden
, которая займет требуемое пространство, но не будет видна. Просто добавьте свойство aria-hidden="true"
, чтобы у людей с программами чтения с экрана не было дублирующегося меню.
Вы можете сделать это с помощью js следующим образом:
$( ".main-header-bar-wrap" ).after(
$(".main-header-bar-wrap").clone().addClass("spacer").attr("aria-hidden","true")
);
Это продублирует заголовок и добавит класс spacer
ко второй версии, чтобы можно было отдельно стилизовать его со свойствами visibility
и position
вместе с атрибутом aria-hidden
.