TL; DR: действительно ли Sticky может реагировать на изменения, которые я даю через JavaScript? Если да, то как?
(В проекте используются Foundation 6.2 и WordPress 4.4, тема установлена с использованием Node.js / npm и gulp 4.0. Подробные мои вопросы выделены жирным шрифтом.)
Я хочу сделать nav
панель липкой с помощью подключаемого модуля Foundation Sticky, но только когда я нажимаю кнопку. Это означает, что когда DOM полностью завершен, nav
панель не должна оставаться «сама по себе», а оставаться в своем верхнем положении в документе. Кроме того, он должен исчезнуть при прокрутке вниз, но остаться при прокрутке вверх.
nav
Бар правильно завернутые во всех необходимых div
х, так что nav
бар может придерживаться. Проблемы возникают с "дополнительной" частью. Моя идея заключалась в том, чтобы сначала создать экземпляр Sticky с использованием PHP:
<div data-sticky-container>
<header class="header" role="banner" id="sticky_header" data-sticky data-top-anchor="1"
data-btm-anchor="content:top" data-options="marginTop:0;" style="width:100%"
>
<?php get_template_part('parts/nav', 'offcanvas-topbar'); ?>
</header>
</div>
После этого измените data-btm-anchor
текущую позицию прокрутки с помощью JavaScript, который запускается при нажатии. Это не сработало так, как хотелось бы. Что я пробовал до сих пор:
- При использовании,
getElementByID
а затемsetAttribute
,data-btm-anchor
в файле PHP изменяется в соответствии с Firebug, ноnav
это немного не влияет на панель; он остается там, где он есть. Нужно ли мне «реинстанцировать» Sticky, и если да, то как? - В документах упоминается:
Установка параметров с помощью JavaScript включает передачу объекта в функцию конструктора, например:
var options = { multiExpand: true, allowAllClosed: false }; var accordion = new Foundation.Accordion($('#some-accordion'), options);
Означает ли это, что я могу передавать новые параметры в уже существующий экземпляр плагина? Всякий раз, когда я передавал новый Foundation.Sticky
объект не более чем с другим btmAnchor в качестве параметра массива параметров my jQuery('#sticky_header')
, ничего не происходило.
В документации также предлагается программно добавить Sticky к моему "sticky_header". Если это сработает, я мог бы попробовать напрямую изменить объект jQuery. До сих пор мне удалось успешно привязать плагин Sticky к моему заголовку:
- бросая .js, из которого кнопка получает свою функцию
assets/js/scripts
(а затем запускаетсяgulp
) - удаление всех прикрепленных к данным тегов из моего
<header class="header">
, чтобы не было прикрепленного плагина, зарегистрированного в заголовке, когда DOM завершила загрузку программно добавляем плагин:
function button_fire(){ var options = { topAnchor:"1", btmAnchor:"footer:top", marginTop:"1" }; var stick = new Foundation.Sticky(jQuery('.header'), options); }
Заголовок теперь получает класс «липкий» согласно Firebug. Но это все равно не работает - скорее, это дает сбои: «Заголовок» несколько сжат, поэтому он слегка закрывает «содержимое»
div
ниже. Что вы знаете, заголовок не прилипает. Это ошибка?Предположим, теперь это будет работать «блестяще», могу ли я теоретически изменять атрибуты путем разыменования
var stick
или использованияjQuery('#sticky_header')
илиjQuery('.header')
?- бросая .js, из которого кнопка получает свою функцию
Помимо всего прочего, jQuery работает не так, как должен. У меня было много проблем с использованием $
в моих скриптах, и я не могу, например, запустить destroy()
метод Sticky из-за этого (если он сработал, я мог уничтожить экземпляр Sticky, чтобы создать новый с помощью btmAnchor
набор в новое положение прокрутки). Я открою для этого еще один вопрос.
источник
wp_enqueue_script( 'jquery' );
сожалению, все та же проблема, что и раньше. Или я неправильно поставил jQuery в очередь? Есть ли у JointsWP собственные библиотеки jQuery?var $ = jQuery
либо передать его при вызове метода .ready () следующим образом:jQuery(document).ready(function($){ //your code here with using $ or jQuery });
Ответы:
Вы можете просто использовать атрибут sticky css в своем scss.
В html или php добавьте класс к вашему компоненту:
и в scss или css:
Теперь просто установите необходимое расстояние от вершины!
источник
Предпочитаете полностью контролировать липкое содержимое с помощью jquery.
Используя это, вы можете заставить кнопку прокручивать вас в любую часть вашего сайта.
Для липкого вы хотите добавить липкий класс только тогда, когда вы прокручиваете первый раздел, поэтому:
Используя плагин waypoints, теперь вы можете легко добавить липкий класс при прокрутке мимо элемента или раздела. Селектор JQuery может выбирать по идентификатору и классу с помощью # и. соответственно.
источник
Если вы используете wordpress, он автоматически ставит JQuery в очередь.
У вас есть два способа использовать JQuery в Wordpress.
Используйте JQuery вместо $
Wordpress запускает JQuery в его бесконфликтном режиме, поэтому вместо этого вам нужно использовать JQuery $
Ваш случай
Используйте $ как переменную
Вы также можете использовать $, но вы должны определить такую переменную:
источник