Телефоны

  • 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

Каталог

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

Керамогранит Gigacer Inclusioni Soave Cenere Soft 12mm 120x120

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

Керамогранит Gigacer Concrete Mud 4.8mm Matt 30x60

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

Керамогранит Gigacer Concrete Ice Blend 12mm Matt 30x60

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

Керамогранит Gigacer Concrete Brown 24mm Matt 60x60

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

Керамогранит Gigacer Concrete Brown 12mm Matt 120x120

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

Мозаика Italon Continuum Mosaico Prism Silver 20.5x41.3

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

Керамогранит Alma Ceramica Vulcano GFA114VLC07L Лаппатированный 8.5mm 57x114

Артикул GFA114VLC07L
Страна Россия Россия
Размер 57x114
Поверхность Лаппатированная
Нет в продаже

Керамогранит Alma Ceramica Origami TWU93ORG07R 8.5mm 30x90

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

Керамогранит Alma Ceramica New York TWA11NYK007 7.5mm 20x60

Артикул TWA11NYK007
Страна Россия Россия
Размер 20x60
Поверхность Глянцевая
Наличие: 92.88 м2

Керамогранит Alma Ceramica Mars TWA11MAS017 Рельеф 7.5mm 20x60

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

Керамогранит Alma Ceramica Mars TWA11MAS004 7.5mm 20x60

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

Керамогранит Alma Ceramica Costa Rica TWA11COR000 7.5mm 20x60

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

Керамогранит Alma Ceramica Bottichino GFU60120BTC70L Лаппатированный 8.5mm 60x120

Артикул GFU60120BTC70L
Страна Россия Россия
Размер 60x120
Поверхность Лаппатированная
Наличие: 1130.4 м2

Керамогранит FMG Roads Listone Coffee Truth Nat 15x60

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

Бордюр Adex Studio Cornisa Timberline 7.5x19.8

Артикул ADST5095
Страна Испания Испания
Размер 8x20
Поверхность Глянцевая
Наличие: 266 шт

Мозаика Bonapart Камень Rim II 30.5x30.5

Артикул RimII
Страна Китай Китай
Размер 31x31
Наличие: по запросу

Декор Laparet Monti Декор Микс 20x60

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

Декор Laparet Laurel Sting Декор Белый 30x60

Артикул x9999285813
Страна Россия Россия
Размер 30x60
Поверхность Глянцевая
Наличие: 105 шт

Декор Laparet Flint Декор Бежевый 30x60

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

Ступени Italon Metropolis Scalino Imperial Black 33x120

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

Ступени Italon Metropolis Scalino DX Imperial Black 33x160

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

Ступени Atlas Concorde Rus Rinascente Scalino Pearl 33x120

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

Ступени Atlas Concorde Rus Rinascente Scalino DX Pearl 33x160

Артикул 620070802221
Страна Россия Россия
Размер 33x160
Поверхность Матовая
Наличие: по запросу

Бордюр Atlas Concorde Rus Epos Sand Listello Lapp 7.2x60

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

Ступени Atlas Concorde Rus Drift Scalino Dark SX 33x60

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

Ступени Atlas Concorde Rus Drift Scalino Grey SX 33x80

Артикул 620070001397
Страна Россия Россия
Размер 33x80
Поверхность Матовая
Наличие: по запросу

Ступени Atlas Concorde Rus Allure Scalino Grey Beauty SX 33x60

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

Ступени Atlas Concorde Rus Allure Scalino Grey Beauty 33x60

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

Ступени Italon Contempora Scalino Carbon 33x80

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

Ступени Italon Charme Evo Scalino Onyx SX 33x120

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

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