Я сначала использовал решение, отправленное @ L84, тогда я подумал об этом.
В приведенном ниже коде $active
ссылается на активный элемент аккордеона (примечание: ссылка хранится каждый раз, когда аккордеон открывается, а не при нажатии на название аккордеона). При нажатии нового заголовка $active
- это элемент, который будет закрыт. Нам нужно заранее знать его высоту.
Для того, чтобы новый активный элемент аккордеона был правильно расположен, высота этого ранее активного элемента должна быть вычтена из положения прокрутки в окне просмотра - обратите внимание, что это необходимо только в том случае, если новый активный элемент расположен дальше.
$(function() {
var $active;
$(".accordion").on("click", ".accordion-title", function() {
var itemIndexNew = $(".accordion-item").index($(this).parent());
var itemIndexOld = ($active ? $(".accordion-item").index($active) : null);
if (itemIndexOld !== null && itemIndexOld < itemIndexNew) {
$("html, body").scrollTop($(window).scrollTop() - $active.height());
}
});
$(".accordion").on("down.zf.accordion", function(e) {
$active = $(".accordion").find(".accordion-item.is-active");
});
$(document).foundation();
});
Фонд утверждает, что он является «мобильной первой» структурой, эта проблема действительно должна считаться ошибкой и адресоваться изначально, ИМО. –