Якорні посилання в Elementor дають змогу швидко перейти до потрібної секції сторінки: тарифів, форми, FAQ або контактів. Проблема виникає, коли хедер закріплений у верхній частині екрана через position: fixed або sticky.
Після переходу за посиланням браузер прокручує сторінку до самого початку цільового елемента, але фіксований хедер накриває його верхню частину. У результаті користувач може не побачити заголовок або перші рядки контенту. Виправити це можна за допомогою CSS-властивості scroll-margin-top — без JavaScript і без зміни реальної висоти секції.
Чому якірна навігація працює неправильно
Якірне посилання містить фрагмент URL, наприклад #pricing. Браузер знаходить на сторінці елемент з відповідним атрибутом id і прокручує його до верхнього краю вікна браузера.
Якщо над контентом є фіксований хедер висотою 80–100 пікселів, він залишається поверх сторінки й перекриває цільовий елемент. Сам механізм якірної навігації при цьому працює правильно: браузер не знає, що частина верхньої області зайнята хедером.
Важливо розрізняти CSS-клас та HTML-ідентифікатор. Посилання формату #pricing шукає саме id="pricing", а не class="pricing". Тому для надійної роботи в Elementor потрібно вказати CSS ID цільового контейнера або секції. CSS-клас можна додати додатково, але він не замінює ідентифікатор.
- Посилання: #pricing
- Цільовий елемент: id="pricing"
- Відступ від хедера: scroll-margin-top
Як налаштувати цільову секцію в Elementor
Спочатку відкрийте сторінку в редакторі Elementor і виберіть контейнер або секцію, до якої має вести якір. Саме цей елемент повинен отримати CSS ID.
У налаштуваннях вибраного елемента знайдіть поле CSS ID та введіть назву без символу решітки. Наприклад, для переходу до блоку з тарифами вкажіть pricing. У посиланні кнопки або пункту меню при цьому використовуйте #pricing.
Не додавайте пробіли, решітку або спеціальні символи без потреби. Краще використовувати короткі назви латиницею: services, contacts, faq або pricing. Ідентифікатор має бути унікальним на сторінці.
- Виберіть цільовий контейнер або секцію.
- У полі CSS ID введіть, наприклад, pricing.
- У посиланні кнопки чи меню вкажіть #pricing.
- Переконайтеся, що на сторінці немає іншого елемента з таким самим ID.
CSS-рішення через scroll-margin-top
Властивість scroll-margin-top задає невидимий запас над елементом під час прокручування до нього. Вона не додає порожній простір у макеті та не змінює фактичну висоту секції.
Якщо CSS ID цільового елемента — pricing, правило можна застосувати безпосередньо до нього. Значення 90px потрібно замінити на приблизну висоту вашого хедера.
- Для хедера висотою близько 80px можна почати зі значення 90px.
- Якщо хедер має різну висоту у стані прокручування, орієнтуйтеся на найбільше значення, яке може перекривати контент.
- Для мобільної версії задайте окремий відступ, якщо висота хедера змінюється.
#pricing {
scroll-margin-top: 90px;
}
@media (max-width: 767px) {
#pricing {
scroll-margin-top: 70px;
}
}
Якщо потрібно використовувати CSS-клас
Іноді зручніше призначити однакове правило кільком секціям. У такому випадку додайте до них клас anchor-target, а CSS ID залиште для конкретних якірних посилань. Це дозволяє централізовано керувати відступом для всіх цільових блоків.
- У CSS Classes додайте anchor-target.
- У CSS ID використовуйте унікальне значення, наприклад pricing.
- Посилання ведіть на #pricing, а не просто на назву класу.
.anchor-target {
scroll-margin-top: 90px;
}
@media (max-width: 767px) {
.anchor-target {
scroll-margin-top: 70px;
}
}
Де розмістити CSS в Elementor або WordPress
CSS можна додати на рівні конкретного елемента, сторінки або всього сайту — залежно від доступних можливостей вашої конфігурації Elementor і теми. Якщо в редакторі є поле Custom CSS, правило можна розмістити там. Для глобального застосування зручніше додати його в загальні стилі сайту або в додатковий CSS WordPress.
Якщо правило призначене для однієї сторінки, локальний CSS зменшує ризик впливу на інші шаблони. Якщо якірна навігація використовується на багатьох сторінках, глобальний стиль для класу anchor-target може бути практичнішим.
Після додавання стилів очистіть кеш плагіна оптимізації, кеш сервера або CDN, якщо вони використовуються. Інакше браузер може показувати стару версію CSS.
- Локальне правило підходить для одного або кількох блоків на конкретній сторінці.
- Глобальне правило для класу зручно використовувати в повторюваних секціях.
- Після змін перевірте сторінку в режимі інкогніто або після очищення кешу.
Як підібрати правильне значення відступу
Значення scroll-margin-top має бути не умовним, а достатнім для повного звільнення заголовка та початку контенту з-під хедера. Виміряйте фактичну висоту верхньої панелі у звичайному стані та під час прокручування.
Якщо хедер має висоту 72px, значення 80–90px зазвичай залишає невеликий запас. Якщо хедер містить два рядки, промо-смугу або змінюється після скролу, перевіряйте саме той стан, у якому перекриття помітне.
Для мобільних пристроїв не варто автоматично використовувати десктопне значення. На вузькому екрані хедер може стати вищим через перенесення елементів або, навпаки, компактнішим.
- Замалий відступ залишає заголовок частково під хедером.
- Завеликий відступ не ламає макет, але створює зайвий порожній простір після переходу.
- Перевіряйте окремо десктоп, планшет і смартфон.
Перевірка та типові помилки
Після налаштування відкрийте сторінку у звичайному режимі та натисніть кожне якірне посилання. Цільовий заголовок має бути повністю видимим під хедером, а URL повинен містити відповідний фрагмент, наприклад #pricing.
Якщо прокручування не працює, спочатку перевірте відповідність CSS ID і посилання. Значення pricing та #pricing пов’язані між собою, але id не повинен містити дубльованих символів або пробілів.
Також переконайтеся, що CSS застосований саме до цільового елемента, а не до внутрішнього заголовка чи батьківського контейнера, який не є фактичною точкою переходу.
- Використання class замість id як єдиної точки прив’язки.
- Додавання # у поле CSS ID Elementor.
- Однаковий ID у кількох секцій.
- Застосування scroll-margin-top до хедера, а не до цільового елемента.
- Перевірка лише в редакторі без тесту опублікованої сторінки.
- Старий CSS через кеш браузера, плагіна або CDN.
Альтернатива: scroll-padding-top для всієї сторінки
Якщо потрібно виправити всі якірні переходи на сайті, можна задати верхній внутрішній відступ для області прокручування через scroll-padding-top. Це глобальний підхід: він впливатиме на всі фрагментні посилання, а не лише на окремі секції.
Для сторінки з різними хедерами або різними сценаріями навігації безпечніше використовувати scroll-margin-top на конкретних цілях. Глобальне правило варто застосовувати тоді, коли фіксований хедер має стабільну висоту на всій сторінці.
- scroll-margin-top — точкове рішення для окремих цільових блоків.
- scroll-padding-top — глобальне рішення для всіх якірних переходів.
- Якщо висота хедера різниться на пристроях, використовуйте медіазапити.
html {
scroll-padding-top: 90px;
}
@media (max-width: 767px) {
html {
scroll-padding-top: 70px;
}
}
Поширені запитання
Чи достатньо додати клас anchor-target, щоб посилання #anchor-target запрацювало?
Ні. Фрагмент URL зазвичай шукає HTML-елемент з відповідним id. У Elementor вкажіть anchor-target у полі CSS ID. Клас можна додати додатково, щоб застосувати спільні стилі до кількох секцій.
Чи змінює scroll-margin-top висоту секції?
Ні. Властивість створює прокручуваний запас під час переходу до елемента, але не додає реального відступу в макеті та не змінює висоту секції.
Чому після додавання CSS перехід усе ще перекривається хедером?
Перевірте, чи правило застосоване до елемента з потрібним ID, чи відповідає посилання цьому ID і чи не показується закешована версія CSS. Також виміряйте висоту хедера у стані після прокручування.
Чи потрібен JavaScript для виправлення якірних посилань?
У більшості випадків ні. scroll-margin-top або scroll-padding-top вирішують проблему засобами CSS. JavaScript може знадобитися лише для складної логіки, наприклад коли висота хедера динамічно змінюється за багатьма умовами.
Висновок
Щоб якірні посилання в Elementor не ховали заголовки під фіксованим хедером, призначте цільовому контейнеру унікальний CSS ID і додайте для нього scroll-margin-top. Для різних розмірів екрана використовуйте медіазапит із власним значенням.
Найважливіше — не плутати CSS-клас з ID: посилання #pricing має вести до елемента з id pricing. Після налаштування перевірте всі переходи на опублікованій сторінці, окремо на десктопі та мобільному пристрої.