makc9I
@makc9I
фрилансер, web разработчик

Почему слайдер Swiper инициализируется только после ресайза?

Сверстал страничку sandbox.maximshadrin.ru/vologda_lessons/main.html
На ней много слайдеров. Для них использую компонент swiper idangero.us/swiper/demos
Есть проблема с одним из слайдов.
Не могу понять, почему она выплывает.
В разделе Экскурсии при клике на 1ый блок открывается попап.

5d6c091fca6c5921266611.png

Данный попап уже есть на странице, просто скрыт и при клике отображается, т.е. проблем, связанных с динамической ajax загрузкой контента в попап быть не может, ибо контент уже на странице.

5d6c09c6be73e331385390.png

Собственно, слайдер внутри этого попапа не работает полноценно, пока не изменишь размер страницы, можно просто свернуть развернуть окно. Я не понимаю, откуда этот баг. Скорей всего дело в связке swiper - magnific popup, но в чем конкретно проблема, ума не приложу.
  • Вопрос задан
  • 1070 просмотров
Решения вопроса 2
Mooncake8
@Mooncake8
Фронт и верстальщик
Большинство таких плагинов не умеют инициализировать слайдер внутри элемента с display: none т.к. у таких слайдеров нет размеров. После открытия попап окна нужно ре-инициализировать слайдер.
На изменения размера окна скорее всего стоит слушатель внутри плагина слайдера который и реинитит его, поэтому после ресайза все работает нормально.
Ответ написан
Комментировать
@alexandr_morzh
Морж
Причину Mooncake8 описал правильно, чтобы решить ее добавьте инициализацию слайдера после появления попапа.
В вашем случае блок с вызовом попапа надо поправить в такой вид:
$('.popup-btn').magnificPopup({
	type: 'inline',
	preloader: false,
	callbacks: {
		open: function() {
			//вот тут добавить инициализацию слайдера
		}
	}
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы