Описание
The WP Sticky Menu (or Sticky Header) On Scroll plugin allows you to make any element on your pages «sticky» as soon as it hits the top of the page when you scroll down. Although this is commonly used to keep menus at the top of your page to create floating menus, the plugin allows you to make any element sticky. Make a sticky header, stick menu, sticky widget (fixed widget), sticky logo, sticky call to action or a floating menu.
You just need to know how to pick the right selector for the element you want to make sticky, and you need to be sure it’s a unique selector. Sometimes a simple selector like «nav», «#main-menu», «.menu-main-menu-1» is enough. Other times you will have to be more detailed and use a more specific selector such as «header > ul:first-child» or «nav.top .menu-header ul.main». If you don’t like messing with any code check out out the visual element picker in WP Sticky PRO.
Возможности
- Any element can stick: although common use is for navigation menus, or header the plugin will let you pick any unique element with a name, class or ID to stick at the top of the page once you scroll past it. Use it for sticky widget, sticky sidebar, sticky header, sticky menu, sticky header, sticky call-to-action box, sticky banner ad, etc. Need to make multiple elements sticky? Check out WP Sticky PRO.
- Позиционирование сверху: при желании вы можете добавить любое количество пространства между липким элементом и верхней частью страницы, чтобы элемент не всегда застревал на «потолке» страницы.
- Включить только для определенных размеров экрана: дополнительно вы можете установить минимальный и/или максимальный размер экрана, где должна работать липкость. Это может быть удобно, если у вас есть адаптивный сайт, и вы, например, не хотите, чтобы ваш элемент был липким на небольших экранах.
- Enable only on some pages: sometimes you don’t want the element to be sticky on the entire site. WP Sticky PRO gives you the option to pick posts, pages, categories, tags and CPTs where you don’t want the element to be sticky.
- Выталкивающий элемент: при желании вы можете выбрать любой другой элемент ниже на странице, который снова подтолкнет липкий элемент вверх (например, виджет сайдбара).
- Наличие панели администратора: проверяет, есть ли у текущего пользователя панель администратора в верхней части страницы. Если это так, то липкий элемент не будет заслонять его (и не будет сам заслоняться им).
- Z-index: если на странице есть другие элементы, которые скрывают или просматривают ваш липкий элемент, вы можете легко добавить Z-индекс.
- Режим совместимости: в версии 2.0 был введен новый метод создания липких элементов. В режиме совместимости будет использоваться старый метод. Смотрите подробности в FAQ.
- Динамический режим: некоторые проблемы, которые часто появляются в отзывчивых темах, были решены путем добавления динамического режима (только в режим совместимости). Для подробной информации перейдите в FAQ.
- Режим отладки: узнайте возможные причины, по которым элемент не прилипает, переключившись на режим отладки, и сообщения об ошибках появятся в консоли браузера.
Having problems with SSL? Moving a site from HTTP to HTTPS? Install our free WP Force SSL plugin. It’s a great way to fix all SSL problems.
GDPR compatibility
We are not lawyers. Please do not take any of the following as legal advice.
Sticky does not track, collect or process any user data on the front end or in the admin. Nothing is logged or pushed to any 3rd parties. We also don’t use any 3rd party services or CDNs. Based on that, we feel it’s GDPR compatible, but again, please, don’t take this as legal advice.
Скриншоты
Установка
- Загрузите «sticky-menu-or-anything» в свой каталог «wp-content/plugins».
- В панели администратора WordPress перейдите в раздел Плагины и активируйте «Sticky Menu (or Anything!)»
- Перейдите в НАСТРОЙКИ — STICKY MENU (OR ANYTHING!)
- Выберите элемент, который вы хотите сделать липким
- Вечеринка!
Часто задаваемые вопросы
-
Могу ли я сделать несколько элементов липкими?
-
Sure, WP Sticky PRO has that option. You can make as many elements sticky as you like and configure settings individually for each element.
-
Я выбрал класс/ID на экране настроек, но элемент не прилипает, когда я прокручиваю вниз. Почему?
-
Во-первых, убедитесь, что если вы выбрали элемент по имени класса, то ему предшествует точка (напр,».main-menu»), а если вы выбираете его по ID, что ему предшествует решетка/номер (напр, «#main-menu»). Кроме того, убедитесь, что на странице есть только один элемент с селектором, который вы используете. Если нет ни одного элемента или элементов, соответствующего вашему селектору, более одного, то ничего не произойдет.
-
Как только элемент становится липким, он вообще не позиционируется/не имеет правильного размера.
-
Из-за природы CSS существуют ситуации, когда элемент не будет прилипать должным образом, обычно если он имеет определенные свойства, которые используются для управления его местоположением и/или размерами. Если ваш липкий элемент имеет одно из следующих свойств, это может привести к конфликтам:
- отрицательный отступ (negative margins)
- абсолютное позиционирование (absolute positioning)
- свойства сверху/слева/снизу/справа
- «display: inline»
- «!important» применяется к любому из его свойств
Старайтесь избегать всего этого, где это возможно, но если не можете, то иногда помогает использование плагина в режиме совместимости (Legacy Mode) (см. ниже).
Другая ситуация, которая может вызвать проблемы — это когда к любому родительскому элементу прикрепленного элемента применено свойство CSS «transform». -
Как только элемент становится липким, он не реагирует и не меняет размер, когда я меняю размер браузера.
-
Это известная (и раздражающая) ошибка в плагине, которую я еще не смог решить должным образом. Для некоторых сайтов (обычно когда элемент не содержит JavaScript интерактивности) иногда помогает использование плагин в режиме совместимости (Legacy Mode) (см. ниже).
-
Можно ли добавить некоторые стили к элементу, но только тогда, когда он липкий?
-
Чтобы добавить стили к липкому элементу, когда он не липкий, используйте имя класса «.element-is-not-sticky».
Чтобы добавлять стили к липкому элементу, только когда он липкий, используйте имя класса «.element-is-sticky»Следующий код придаст вашему элементу красный фон только тогда, когда он не липкий, а синий только тогда, когда липкий:
.element-is-not-sticky {
background: red;
}.element-is-sticky {
background: blue;
} -
Как только элемент становится липким, есть мгновение, когда вы видите его дважды.
-
Если вы используете плагин в режиме совместимости (см. ниже), это происходит, когда к липкому элементу (или любому его содержимому) применяется CSS переход. Поскольку исходный элемент становится невидимым (и его клонированная копия становится видимой), изменение статуса видимого к невидимому будет происходить с переходом (т. е. не сразу). Либо удалите все переходы, которые есть у элемента, либо попробуйте отключить режим совместимости.
-
Это была ошибка в версиях до 2.0 и несовместимость с темой. Она была исправлена в версии 2.0, но в режиме совместимости эта ошибка все еще присутствует. Если Вам по какой-то причине нужно включить режим совместимости, то лучше отключить липкость для мобильного меню (установите значение «Не закреплять элемент, когда экран менее:» на 651 пиксель).
-
Это была ошибка в версиях до 2.0 и несовместимость с плагином. Она была исправлена в версии 2.0, но в режиме совместимости эта ошибка все еще присутствует. Если вам по какой-то причине нужно включить режим совместимости, то исправления этой ошибки не существует, однако есть альтернативный обходной путь. Согласно сообщениям пользователей, у которых была эта проблема, плагин под названием Page Scroll To ID является достойной альтернативой Easy Smooth Scroll Links и работает с плагином Sticky Anything в режиме совместимости.
-
Все равно не работает. Что может быть не так?
-
Установите флажок «Режим отладки (Debug Mode)» в настройках плагина. Перезагрузите страницу, и вы сможете увидеть ошибки в окне консоли вашего браузера. Если вы использовали несуществующий селектор ИЛИ на странице их больше, вы получите уведомление об этом в консоли.
-
Можно ли иметь несколько липких элементов?
-
Текущая версия допускает только один липкий элемент, но эта функциональность будет реализована в следующей основной версии. Однако ожидаемой даты выхода нет.
-
Что такое режим совместимости? Должен ли я использовать его?
-
В версии плагина 2.0 был введен новый улучшенный метод создания липких элементов. Ранее липкий элемент был по сути клонированной копией исходного элемента. Теперь сам элемент становится липким и больше не используется копирование и клонирование, что решает множество проблем.
Итак, следует ли вам использовать это или нет? Если вы обновили этот плагин с более ранней версии, то режим совместимости будет включен по умолчанию, потому что есть вероятность, что этот метод отлично работал для вашего сайта. Если это так, то на самом деле нет необходимости использовать новый метод, и вы можете просто продолжать использовать старый, классический метод. Если все работает, то не надо чинить, верно?
Сказав это, стоит проверить, работает ли ваш элемент так же хорошо с выключенным режимом совместимости, так как это «лучший» метод. Просто проверьте. Если не работает, вы всегда можете просто вернуться и включить его снова.
ПРИМЕЧАНИЕ: новые установки плагина будут иметь режим совместимости выключенным по умолчанию. Только при обновлении с версии 1.4 (или ранее) он должен быть включен по умолчанию.
-
Что же это за динамический режим такой?
-
Этот режим доступен только в режиме совместимости, и чтобы правильно объяснить это, нам нужно будет немного углубиться в функциональность плагина. Так что потерпите меня…
В режиме совместимости, когда элемент становится липким в верхней части страницы (и сохраняет свое место независимо от прокрутки), на самом деле вы видите не сам элемент, а его клонированную копию, в то время как фактический исходный элемент находится вне поля зрения и невидим.
Исходный элемент всегда остается там, где он изначально находится на странице, в то время как клонированный элемент всегда находится в верхней части окна браузера. Однако вы никогда не увидите их оба одновременно; в зависимости от прокрутки, он просто показывает либо один, либо другой.
В оригинальной версии плагина, клон будет создан в тот момент, когда вы загружаете страницу (но не виден сразу). Затем, когда вы прокрутите вниз, он станет видимым (и закрепится в верхней части), в то время как исходный элемент исчезнет из виду.
Однако некоторые темы используют JavaScript для динамического создания элементов (в основном, меню) для мобильных сайтов. С помощью этого метода меню не существует в исходном HTML коде при загрузке страницы, а создается через некоторое время после полной загрузки страницы — во многих случаях эти меню просто генерируются только тогда, когда экран больше (или меньше) определенной заданной ширины. С оригинальной версией плагина проблема будет заключаться в том, что исходный элемент (который вы хотите сделать липким) возможно не был полностью создан при загрузке страницы, поэтому клон также не будет полностью функциональным.
Войдите в динамический режим. Теперь клон элемента не создается при загрузке страницы — вместо этого он создается только тогда, когда пользователь прокручивает и попадает в «липкую» точку. Это гарантирует, что клонированный элемент является фактической копией 1в1 того, из чего состоит исходный элемент в этот конкретный момент времени (а не в точке «страница загружена», которая может отличаться, если элемент был изменен с тех пор).
Почему бы нам не использовать динамический режим все время? Это связано с тем, что другие плагины инициализируются при загрузке страницы и могут нуждаться в полной разметке (включая клонированный элемент) в этот момент. В динамическом режиме клон еще не доступен при загрузке страницы, так что это может вызвать проблему, если этот другой плагин ищет элемент, который еще не существует.
(Все это может показаться ужасно запутанным. Так оно и есть! Было проделано много работы, чтобы исправить эту ерунду: начиная с версии 2.0 используется совершенно другой метод, чтобы сделать элементы липкими, и динамический режим больше не является проблемой.)
Уф!
-
Мне нужна помощь, пожалуйста!
-
Пожалуйста, перейдите к форуму поддержки плагина на WordPress.org и оставьте сообщение (включите ссылку на свой сайт, если это возможно).
-
How can I report security bugs?
-
You can report security bugs through the Patchstack Vulnerability Disclosure Program. The Patchstack team help validate, triage and handle any security vulnerabilities. Report a security vulnerability.
Отзывы
Участники и разработчики
«Sticky Menu & Sticky Header» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:
УчастникиПеревести «Sticky Menu & Sticky Header» на ваш язык.
Заинтересованы в разработке?
Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.
Журнал изменений
2.33
- 2024-07-08
- minor security fixes
2.32
- 2022-11-20
- minor security fixes
2.31
- 2021-02-19
- fixed one really really visible typo
- added custom footer text on plugin’s admin page
- lowered the price for the team package
2.30
- 2021-02-13
- better clean-up on delete and deactivate
2.29
- 2021-01-30
- added flyout menu
- added monthly price
2.28
- 2021-01-05
- minor bug fixes and improvements
- removed promo campaign for WP 301 Redirects
2.25
- 2020-10-16
- Pro версия здесь
- исправления и улучшения ошибок
2.23
- 2020-10-01
- больше исправлений CSS
- добавлена промо кампания для WP 301 Redirects
2.22
- 2020-09-08
- улучшение для тем с правилом !important на полях вверху и слева внутри липкого элемента
2.21
- 2020-06-19
- исправление безопасности — спасибо Antony из Sucuri
2.2
- 2020-02-01
- исправление ошибок
- незначительные GUI улучшения
- 100,000 пользователей достигнуто 2020-01-31
2.1.1
- Исправлена ошибка минификации
2.1
- Липкий элемент имеет определенные классы для таргетирования липкого/нелипкого состояния: «.element-is-sticky» и «.element-is-not-sticky»
2.0.1
- исправлена ошибка вычисления отступов (проценты отключаются при закреплении)
- исправлена ошибка, когда назначенный цикл стилей вызывал JS ошибку
2.0
- Введен новый улучшенный способ сделать элементы липкими
- Добавлен режим совместимости (для тех, кто хочет продолжить работать в нем)
- Разделить экран настроек на базовый и расширенный
- В режиме отладки используется несжатый файл JS для упрощения удаленной отладки
1.4
- Удалено уведомление об ошибке, если не выбран выталкивающий элемент
- Переименование класса «cloned» на «sticky-element-cloned» и «original» на «sticky-element-original», чтобы избежать конфликтов с Owl Carousel
- Исправлена ошибка, при которой ширина клонированного элемента округлялась вниз, если он содержал субпиксели
1.3.1
- Исправлена незначительная ошибка для выталкивающего элемента
1.3
- Добавлена функция перемещения липкого элемента вниз в случае наличия панели администратора в верхней части страницы
- Добавлена функциональность для выталкивания липкого элемента вверх другим элементом ниже по странице
1.2.4
- Исправлена небольшая ошибка, связанная с номером версии
1.2.3
- Исправлена ошибка с окном выбора динамического режима
- Исправлена ошибка с Z-индексом (спасибо @aguseo за сообщение)
- Весь текст в плагине полностью переводим
- Добавлена вкладка FAQ на экран настроек
- Добавлен инфоблок на экран настроек
- Добавлено несколько комментариев к исходному коду
1.2
- Добавлен динамический режим (устранение проблем с динамически создаваемыми меню — Подробнее см. FAQ выше)
1.1.4
- Готов к WordPress 4.1 (и TwentyFifteen)
- Исправлена ошибка, когда у элемента есть отступы в процентах
1.1.3
- Исправлена ошибка вычисления ширины, появившаяся в предыдущей версии (извините за это), теперь поддерживается изменение размера блока
1.1.2
- Исправлена ошибка вычисления ширины элемента
1.1.1
- Исправлена ошибка вычисления области просмотра
1.1
- Добавлена функциональность для задания минимального/максимального размера экрана
1.0
- Первоначальный выпуск (с использованием версии v1.1 автономного jQuery плагина)