Телефоны

  • 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

Каталог

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

Керамогранит Atlas Concorde AIX Fumee 20mm 60x90

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

Плитка Atlas Concorde 3D Wall Wave White Matt 30.5x56

Артикул 9D5W
Страна Италия Италия
Размер 31x56
Поверхность Матовая
Наличие: по запросу

Керамогранит La Faenza Legno Del Nataio LNOT2012NATRM 20x120

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

Керамогранит La Faenza Ego EGO60B 60x60

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

Керамогранит La Faenza Bianco TRAON9018LP 90x180

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

Керамогранит Marazzi Treverkview M0DX Rovere Beige 20x120

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

Керамогранит Marazzi Treverksign MJXN Beige 20x120

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

Керамогранит Marazzi Treverkmade MMLD Cognac 15x90

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

Керамогранит Marazzi Treverkhome MJWM Quercia 30x120

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

Декор Marazzi Rice M9E6 Decoro Garden Modulo B 45x60

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

Керамогранит Marazzi Mystone Lavagna M03K Strutturato Rett 60x60

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

Плитка Marazzi Marbleplay Calacatta Rett 30x90

Артикул M4NW
Страна Италия Италия
Размер 30x90
Поверхность Натуральная
Наличие: 25 м2

Керамогранит Marazzi Treverk White 20x120

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

Керамогранит Casalgrande Padana Marmoker Rosato 36SC 59x118

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

Керамогранит Casalgrande Padana Marmoker Olimpo Lucido 6.5mm 59x118

Артикул 2220226
Страна Италия Италия
Размер 59x118
Поверхность Глянцевая
Наличие: 10 м2

Керамогранит Casalgrande Padana Marmoker Crema Select 59x59

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

Плитка WOW Wow Collection Moon L Ice White Gloss 25x25

Артикул 91757
Страна Испания Испания
Размер 25x25
Поверхность Глянцевая
Нет в продаже

Плитка WOW Wow Collection Liso L Ice White Gloss 12.5x25

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

Керамогранит WOW Subway Lab New Bevel Graphite Matt 7.5x30

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

Декор Petracer Capitonne Angolo London Bianco 2.5x5

Артикул CLTAEBIANCO
Страна Италия Италия
Размер 5x5
Поверхность Глянцевая
Нет в продаже

Декор Petracer 800 Italiano Cassetto Bianco 20x40

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

Декор Creto Naomi Decor Graphite 30x60

Артикул ND_D0001
Страна Россия Россия
Размер 30x60
Поверхность Матовая
Наличие: 921 шт

Ступени Italon Room Scalino Black Wood DX 33x120

Артикул 620070001246
Страна Россия Россия
Размер 33x120
Поверхность Патинированная
Наличие: по запросу
Italon Wonderful Life Mosaico Frame Graphite 30x30 / Италон
 Вондерфул
 Лифе
 Мосаико
 Фраме
 Графите
 30x30
Смотреть товар
Код: F16268S
Шоурум

Мозаика Italon Wonderful Life Mosaico Frame Graphite 30x30

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

Ступени Keope Alpi Pordoi Scalino 30x33

Артикул 66566519
Страна Италия Италия
Размер 30x33
Поверхность Матовая
Наличие: 377 шт

Ступени Natucer Nobleza Peldano Curvo Grana Topacio 30x33

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

Декор Lasselsberger Парижанка Декор 1 Фантазия 20x60

Артикул 1664-0172
Страна Россия Россия
Размер 20x60
Поверхность Глянцевая
Наличие: 22 шт

Бордюр Lasselsberger Парижанка Бордюр Фантазия 7x60

Артикул 1506-0256
Страна Россия Россия
Размер 7x60
Поверхность Глянцевая
Наличие: 79 шт

Мозаика Art&Natura Classic Glass Tyra 4 29.5x29.5

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

Керамогранит ABK Blend Dots Grey 60x60

Артикул PF60006710
Страна Италия Италия
Размер 60x60
Поверхность Натуральная
Наличие: по запросу
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

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