Телефоны

  • 0-9
  • A
  • B
  • C
  • D
  • E
  • F
  • G
  • H
  • I
  • J
  • K
  • L
  • M
  • N
  • O
  • P
  • Q
  • R
  • S
  • T
  • U
  • V
  • W
  • Y
  • Z

Каталог

Цена
-
  • По популярности
  • Сначала дешёвые
  • Сначала дорогие
  • По названию
  • Новинки
Керамогранит
Стереть
Элитная
Стереть
очистить

Керамогранит ABK Wide&Style CP4 Gouache Sage 120x240

Артикул PF60001837
Страна Италия Италия
Размер 120x240
Поверхность Матовая
Наличие: по запросу

Керамогранит Marazzi Grande Marble Look Statuario Stuoiato Lux 162x324

Артикул M33U
Страна Италия Италия
Размер 162x324
Поверхность Полированная
Нет в продаже

Керамогранит Marazzi Grande Marble Look Saint Laurent Lux 160x320

Артикул M10C
Страна Италия Италия
Размер 160x320
Поверхность Полированная
Нет в продаже

Керамогранит Marazzi Grande Marble Look Raffaello Lux 160x320

Артикул M108
Страна Италия Италия
Размер 160x320
Поверхность Полированная
Нет в продаже

Керамогранит Marazzi Grande Marble Look Pulpis Lux 162x324

Артикул M0ZF
Страна Италия Италия
Размер 162x324
Поверхность Полированная
Нет в продаже

Керамогранит Marazzi Grande Marble Look Elegant Black Lux 120x278

Артикул M71P
Страна Италия Италия
Размер 120x278
Поверхность Полированная
Нет в продаже

Керамогранит Marazzi Evolutionmarble Calacatta Oro 60x60

Артикул MM6A
Страна Италия Италия
Размер 60x60
Поверхность Натуральная
Нет в продаже

Керамогранит Marazzi Evolutionmarble Bronzo Amani Lux 58x116

Артикул MK6J
Страна Италия Италия
Размер 58x116
Поверхность Полированная
Нет в продаже

Плитка Marazzi SistemC Citta Lipsia 10x10

Артикул MEHG
Страна Италия Италия
Размер 10x10
Поверхность Матовая
Нет в продаже

Плитка Marazzi SistemC Citta Lipsia 20x20

Артикул MEFG
Страна Италия Италия
Размер 20x20
Поверхность Матовая
Нет в продаже

Плитка Marazzi SistemC Architettura Antelami 20x20

Артикул ME8Y
Страна Италия Италия
Размер 20x20
Поверхность Полированная
Нет в продаже

Плитка Marazzi SistemC Architettura Bianco Classic 15x15

Артикул MEAX
Страна Италия Италия
Размер 15x15
Поверхность Полированная
Нет в продаже

Мозаика NSmosaic Stone K-733 29.8x29.8

Артикул K-733
Страна Китай Китай
Размер 30x30
Поверхность Полированная
Наличие: по запросу

Мозаика NSmosaic Exclusive No-299 30.5x30.5

Артикул No-299
Страна Китай Китай
Размер 31x31
Поверхность Глянцевая
Наличие: по запросу

Мозаика NSmosaic Crystal S-454 30x30

Артикул S-454
Страна Китай Китай
Размер 30x30
Поверхность Глянцевая
Наличие: по запросу

Мозаика Marazzi Allmarble Wall Mosaico Golden White Barcode Lux 40x40

Артикул M8HD
Страна Италия Италия
Размер 40x40
Поверхность Полированная
Нет в продаже

Мозаика Natural Pastel PST-022 29.8x29.8

Артикул PST-022
Страна Китай Китай
Размер 30x30
Поверхность Матовая
Нет в продаже

Мозаика Natural Pastel PST-002 29.8x29.8

Артикул PST-002
Страна Китай Китай
Размер 30x30
Поверхность Матовая
Нет в продаже

Мозаика Natural Kimberly KM-008 29.8x29.8

Артикул KM-008
Страна Китай Китай
Размер 30x30
Поверхность Глянцевая
Нет в продаже

Мозаика Italon Charme Extra Mosaico Carrara Hex 25x29

Артикул 620110000065
Страна Россия Россия
Размер 25x29
Поверхность Патинированная
Наличие: по запросу

Плинтус Italon Skyline Battiscopa Snow 7.2x60

Артикул 610130002006
Страна Россия Россия
Размер 7x60
Поверхность Натуральная
Наличие: по запросу

Решетка Italon Genesis X2 Griglia Saturn Grey DX 20x60

Артикул 620090000592
Страна Россия Россия
Размер 20x60
Поверхность Натуральная
Наличие: по запросу

Мозаика Italon Charme Deluxe Mosaico Sahara Split 30x30

Артикул 620110000124
Страна Россия Россия
Размер 30x30
Поверхность Патинированная
Наличие: по запросу

Керамогранит ABK Interno 9 Mud Nat 30x60

Артикул I9R03250
Страна Италия Италия
Размер 30x60
Поверхность Натуральная
Наличие: по запросу

Керамогранит Ascot Ceramiche Gemstone Ivory 7.1x29.1

Артикул GN712R
Страна Италия Италия
Размер 7x29
Поверхность Натуральная
Нет в продаже
Equipe Costa Nova Tansy Green 5x20 / Экипе
 Коста
 Нова
 Тансы
 Греен
 5x20
Смотреть товар
Код: F37957S
Шоурум

Плитка Equipe Costa Nova Tansy Green 5x20

Артикул 28441
Страна Испания Испания
Размер 5x20
Поверхность Глянцевая
Наличие: 270 м2

Керамогранит Maxfine Gemstone Pearl Gem Luc 150x150

Артикул L150372MF6
Страна Италия Италия
Размер 150x150
Поверхность Глянцевая
Наличие: по запросу

Керамогранит WOW Tesserae Suit Blanc 28x28

Артикул 127406
Страна Испания Испания
Размер 28x28
Поверхность Матовая
Наличие: 52 м2

Керамогранит Vives 1900 Jujol Grafito 20x20

Артикул 8342
Страна Испания Испания
Размер 20x20
Поверхность Матовая
Нет в продаже

Керамогранит Porcelaingres Royal Stone Platinum White 100x100

Артикул X1010384X6
Страна Германия Германия
Размер 100x100
Поверхность Матовая
Наличие: по запросу
1900
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Vives

1900

Страна Испания Испания
1XL
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Artcer

1XL

Страна Индия Индия
20mm
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Ocean Ceramic

20mm

Страна Индия Индия
20Twenty
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Emil Ceramica

20Twenty

Страна Италия Италия
20x120
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Ocean Ceramic

20x120

Страна Индия Индия
2XL
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Artcer

2XL

Страна Индия Индия
30x60
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Concor

30x60

Страна Индия Индия
3D
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Porcelanosa

3D

Страна Испания Испания
3D Experience
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Шоурум
Italon

3D Experience

Страна Россия Россия
3D Wall
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Atlas Concorde

3D Wall

Страна Италия Италия
3D Wall Design
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Atlas Concorde

3D Wall Design

Страна Италия Италия
3D Wall Plaster
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Atlas Concorde

3D Wall Plaster

Страна Италия Италия
3D White Wall
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Atlas Concorde Rus

3D White Wall

Страна Россия Россия
3XL
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Artcer

3XL

Страна Индия Индия
4D
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Marca Corona

4D

Страна Италия Италия
60
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Шоурум
WOW

60

Страна Испания Испания
60x120
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Bluezone

60x120

Страна Индия Индия
60x120
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Ocean Ceramic

60x120

Страна Индия Индия
60x120
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Italica

60x120

Страна Индия Индия
60x120
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Concor

60x120

Страна Индия Индия
60x120
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Leopard

60x120

Страна Индия Индия
60x120
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Etili Seramik

60x120

Страна Турция Турция
60x120
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Gresant

60x120

Страна Индия Индия
60x120
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Landgrace

60x120

Страна Индия Индия
60x120
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
QUA

60x120

Страна Турция Турция
60x120
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Гранитея

60x120

Страна Россия Россия
60x60
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Ocean Ceramic

60x60

Страна Индия Индия
60x60
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Italica

60x60

Страна Индия Индия
60x60
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Concor

60x60

Страна Индия Индия
60x60
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Landgrace

60x60

Страна Индия Индия
60x60
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Гранитея

60x60

Страна Россия Россия
60х120
Смотреть коллекцию
// gallery-slider.js document.addEventListener('DOMContentLoaded', function() { const gallerySliders = document.querySelectorAll('.collection-card__gallery-slider'); if (gallerySliders.length === 0) return; // Функция для смены слайда function changeSlide(slider, direction) { const images = slider.querySelectorAll('.collection-card__slider-image'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); const activeImage = slider.querySelector('.collection-card__slider-image.active'); const activeDot = slider.querySelector('.collection-card__slider-dot.active'); if (!activeImage || images.length <= 1) return; let currentIndex = parseInt(activeImage.dataset.index); let newIndex; if (direction === 'next') { newIndex = (currentIndex + 1) % images.length; } else if (direction === 'prev') { newIndex = (currentIndex - 1 + images.length) % images.length; } else { newIndex = direction; // если передано число } // Анимация перехода activeImage.style.opacity = '0'; activeImage.classList.remove('active'); setTimeout(() => { activeImage.style.display = 'none'; const nextImage = slider.querySelector(`.collection-card__slider-image[data-index="${newIndex}"]`); nextImage.style.display = 'block'; setTimeout(() => { nextImage.style.opacity = '1'; nextImage.classList.add('active'); }, 10); }, 300); // Обновляем индикаторы if (activeDot) { activeDot.classList.remove('active'); } const nextDot = slider.querySelector(`.collection-card__slider-dot[data-index="${newIndex}"]`); if (nextDot) { nextDot.classList.add('active'); } } // Инициализация слайдеров gallerySliders.forEach(slider => { const prevBtn = slider.querySelector('.collection-card__slider-prev'); const nextBtn = slider.querySelector('.collection-card__slider-next'); const dots = slider.querySelectorAll('.collection-card__slider-dot'); // Обработчики для кнопок if (prevBtn) { prevBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'prev'); }); } if (nextBtn) { nextBtn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); changeSlide(slider, 'next'); }); } // Обработчики для точек dots.forEach(dot => { dot.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const index = parseInt(dot.dataset.index); changeSlide(slider, index); }); }); // Автоматическая смена при наведении мыши (по горизонтали) let mouseX = 0; let isDragging = false; let startX = 0; let threshold = 50; // порог для смены слайда slider.addEventListener('mousemove', (e) => { if (!isDragging) return; const currentX = e.clientX; const diff = currentX - startX; if (Math.abs(diff) > threshold) { if (diff > 0) { changeSlide(slider, 'prev'); } else { changeSlide(slider, 'next'); } startX = currentX; } }); slider.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; }); slider.addEventListener('mouseup', () => { isDragging = false; }); slider.addEventListener('mouseleave', () => { isDragging = false; }); // Свайп для мобильных устройств let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, { passive: true }); function handleSwipe() { const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { // минимальное расстояние свайпа if (diff > 0) { changeSlide(slider, 'next'); } else { changeSlide(slider, 'prev'); } } } // Автопрокрутка при длительном наведении let autoSlideInterval; let hoverTimer; slider.addEventListener('mouseenter', () => { // Запускаем автопрокрутку через 3 секунды наведения hoverTimer = setTimeout(() => { autoSlideInterval = setInterval(() => { changeSlide(slider, 'next'); }, 3000); // меняем каждые 3 секунды }, 3000); }); slider.addEventListener('mouseleave', () => { clearTimeout(hoverTimer); clearInterval(autoSlideInterval); }); }); }); // Подключите этот файл в template.php $this->addExternalJS($templateFolder . '/gallery-slider.js');
Polo Gres

60х120

Страна Индия Индия