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

Как добавить свою плавающую кнопку и не перекрыть корзину

12 августа 2026 3 МИН КОМАНДА MODKOD

Кнопка «Наверх», мессенджер или быстрый звонок часто живут в том же правом углу, что корзина и избранное. Если просто поставить элемент в `position: fixed`, каждый считает координаты отдельно и кнопки наезжают друг на друга. У Тильды уже есть очередь для трёх родных виджетов, но произвольная кнопка Zero Block туда сама не попадает. MOD-171 собирает выбранные элементы в собственную очередь и пересчитывает её при изменении страницы.

✓ ПРОВЕРЕНО 12 августа 2026 родная очередь регистрирует корзину, избранное и поиск, ставит между ними отступ 20 пикселей и принимает сторонний виджет; на стенде он получил третью позицию после корзины и избранного — `t_posWidget__addWidget`, `t_posWidget__updateStyleWidget` в `tilda-widget-positions-1.0.min.js` и браузерный прогон M25 из `plans/mods.md`

Плавающая кнопка кажется маленькой деталью, пока на сайте не появляется магазин. После этого правый нижний угол начинают делить корзина, избранное, поиск, мессенджер и иногда кнопка «Наверх». На макете всё выглядит аккуратно, потому что в Zero Block видна только дизайнерская кнопка. На опубликованной странице рядом с ней возникает интерфейс Тильды.

Короткий ответ

Если подходит штатный виджет, используйте его — Тильда сама расставит свои кнопки. Для собственного дизайна не фиксируйте координаты каждой кнопки вручную. Готовый MOD-171 не зависит от внутреннего API этой очереди: он выбирает указанные кнопки, измеряет их и сам раскладывает снизу вверх. Поэтому в селектор надо включить все виджеты, которые делят один угол.

Почему обычный fixed начинает мешать

У дизайнерской кнопки обычно записано что-то вроде «20 пикселей справа и 20 снизу». У корзины есть свои координаты. Ни одна из них не знает о другой.

Когда две кнопки занимают одно место, z-index способен только выбрать верхнюю. Нижняя останется перекрытой, а посетитель не сможет нажать её. Поэтому значение 99999 не исправляет задачу — оно маскирует одну кнопку другой.

Что Тильда делает для своих виджетов

В отдельном файле рантайма Тильда собирает вертикальную очередь из:

  • плавающей корзины;
  • избранного;
  • кнопки поиска.

Она измеряет высоту, оставляет между кнопками 20 пикселей и пересчитывает координаты на брейкпоинтах. Своя кнопка Zero Block в этот список автоматически не попадает.

Именно поэтому проблема возникает не из-за неправильного дизайна: два независимых механизма просто не обменялись размерами.

Когда можно обойтись без модификации

Сначала спросите, действительно ли нужен свой виджет.

  • Для корзины используйте плавающую кнопку корзины.
  • Для избранного — штатный виджет избранного.
  • Ссылку на мессенджер можно оставить в фиксированном меню, если она не обязана постоянно жить в углу.
  • Кнопку «Наверх» не обязательно показывать на короткой странице.

Чем меньше плавающих элементов, тем меньше они закрывают контент на телефоне.

Если фирменная кнопка обязательна, проверьте хотя бы два состояния: пустая корзина и корзина с товаром. Виджет может появляться только после первого добавления, поэтому одного скриншота главной недостаточно.

Что делает MOD-171

MOD-171 работает как независимый диспетчер угла страницы. По умолчанию он находит элементы с data-mk-widget, плавающую корзину и кнопку избранного, затем ставит их в одну вертикальную очередь. Высота каждого элемента измеряется отдельно, поэтому кнопки могут быть разного размера.

Мод пересчитывает позиции после изменения ширины окна и появления новых узлов. Он не вызывает внутренние t_posWidget__* и не выдаёт эту связь за публичный API Тильды. Цена такой независимости — все нужные виджеты должны попасть в селектор мода. Если на проекте другой класс корзины или поиска, его добавляют в параметр widget и проверяют на опубликованной странице.

Как подготовить кнопку дизайнеру

До кода определите её поведение:

  • одно действие, а не меню из пяти равных иконок;
  • понятная подпись для скринридера;
  • зона нажатия не меньше 44 × 44 пикселей;
  • состояние фокуса для клавиатуры;
  • контраст на светлом и тёмном фоне;
  • отдельная проверка на ширине 320 пикселей;
  • место, где кнопка не закроет кнопку формы или cookie-баннер.

Если кнопка открывает попап, проверьте Escape и возврат фокуса после закрытия. Если ведёт во внешний мессенджер — предупредите посетителя понятной подписью.

Проверка перед сдачей клиенту

  • Корзина пустая: кнопка стоит на своём месте.
  • В корзину добавлен товар: наложения нет.
  • Включено избранное: все три кнопки доступны.
  • Открыт поиск: очередь не прыгает поверх контента.
  • Экран пересекает 960 и 640 пикселей: позиции пересчитались.
  • Кнопка доступна клавиатурой и имеет видимый фокус.
  • На странице без магазина остаётся безопасное положение.

Передайте клиенту не координату right: 20px, а правило: какие виджеты могут появиться рядом и где менять действие своей кнопки. Тогда добавление избранного через месяц не сломает интерфейс, который при сдаче выглядел готовым.

Вопросы по этой статье 4

Он выбирает, какая кнопка окажется сверху, но не освобождает место второй. Одна из них всё равно будет недоступна. Нужна раскладка координат, а не соревнование слоёв.