diff --git a/views/css/everblock.css b/views/css/everblock.css index b9da0b4..b09a3c9 100644 --- a/views/css/everblock.css +++ b/views/css/everblock.css @@ -3236,21 +3236,25 @@ /* Heroe carousel */ .everblock-heroe-carousel { - --heroe-slide-width: 62%; - --heroe-slide-gap: 32px; position: relative; - height: 560px; - overflow: hidden; background: #0b0b0b; color: #fff; touch-action: pan-y; } -.everblock-heroe-carousel .heroe-carousel-track { +.everblock-heroe-carousel .heroe-carousel { position: relative; + max-width: 1400px; + margin: 0 auto; +} + +.everblock-heroe-carousel .heroe-viewport { + overflow: hidden; + height: 560px; +} + +.everblock-heroe-carousel .heroe-track { display: flex; - align-items: center; - gap: var(--heroe-slide-gap); height: 100%; width: 100%; transition: transform 0.8s cubic-bezier(0.4, 0, 0.2, 1); @@ -3259,13 +3263,12 @@ .everblock-heroe-carousel .heroe-slide { position: relative; - flex: 0 0 var(--heroe-slide-width); - min-width: var(--heroe-slide-width); + flex: 0 0 80%; + margin: 0 10%; height: 100%; - opacity: 0; + opacity: 0.35; transform: scale(0.9); - transition: opacity 0.7s cubic-bezier(0.4, 0, 0.2, 1), - transform 0.7s cubic-bezier(0.4, 0, 0.2, 1); + transition: transform 0.8s ease, opacity 0.8s ease; will-change: transform, opacity; display: flex; align-items: center; @@ -3274,24 +3277,7 @@ .everblock-heroe-carousel .heroe-slide.is-active { opacity: 1; - transform: scale(1.03); - z-index: 3; -} - -.everblock-heroe-carousel .heroe-slide.is-next, -.everblock-heroe-carousel .heroe-slide.is-prev { - opacity: 0.45; - transform: scale(0.92); - z-index: 2; -} - -.everblock-heroe-carousel .heroe-slide.is-next { - filter: grayscale(1); - opacity: 0.6; -} - -.everblock-heroe-carousel .heroe-slide.is-prev { - opacity: 0.45; + transform: scale(1); } .everblock-heroe-carousel .heroe-media { @@ -3384,32 +3370,32 @@ } .everblock-heroe-carousel .heroe-prev { - left: 50%; - transform: translate(calc(-50% - (var(--heroe-slide-width) * 0.5) - 24px), -50%); + left: 8%; } .everblock-heroe-carousel .heroe-next { - left: 50%; - transform: translate(calc(-50% + (var(--heroe-slide-width) * 0.5) + 24px), -50%); + right: 8%; } @media (max-width: 1024px) { - .everblock-heroe-carousel { + .everblock-heroe-carousel .heroe-viewport { height: 500px; } } @media (max-width: 768px) { - .everblock-heroe-carousel { + .everblock-heroe-carousel .heroe-viewport { height: 420px; - --heroe-slide-width: 100%; - --heroe-slide-gap: 0px; } - .everblock-heroe-carousel .heroe-slide.is-next, - .everblock-heroe-carousel .heroe-slide.is-prev { - opacity: 0; - transform: scale(1); + .everblock-heroe-carousel .heroe-slide { + flex: 0 0 100%; + margin: 0; + opacity: 0.2; + } + + .everblock-heroe-carousel .heroe-slide.is-active { + opacity: 1; } .everblock-heroe-carousel .heroe-content { diff --git a/views/js/everblock.js b/views/js/everblock.js index a290df1..b9e3a15 100644 --- a/views/js/everblock.js +++ b/views/js/everblock.js @@ -404,73 +404,27 @@ $(document).ready(function(){ if (!slides.length) { return; } - var track = carousel.querySelector('.heroe-carousel-track'); + var track = carousel.querySelector('.heroe-track'); if (!track) { return; } var index = 0; - var loop = carousel.dataset.loop !== '0'; var showArrows = carousel.dataset.showArrows !== '0'; var prevButton = carousel.querySelector('.heroe-prev'); var nextButton = carousel.querySelector('.heroe-next'); function updateSlides() { - var slideCount = slides.length; - var useWrappedDisplay = slideCount > 2; - var nextIndex = null; - var prevIndex = null; - if (slideCount > 1) { - if (loop || useWrappedDisplay) { - nextIndex = (index + 1) % slideCount; - prevIndex = (index - 1 + slideCount) % slideCount; - } else { - nextIndex = index + 1 < slideCount ? index + 1 : null; - prevIndex = index - 1 >= 0 ? index - 1 : null; - } - } - var slideWidth = slides[0].getBoundingClientRect().width; - var carouselWidth = carousel.getBoundingClientRect().width; - var computedGap = 0; - if (window.getComputedStyle) { - var trackStyle = window.getComputedStyle(track); - computedGap = parseFloat(trackStyle.columnGap || trackStyle.gap || 0); - if (isNaN(computedGap)) { - computedGap = 0; - } - } - if (!slideWidth || !carouselWidth) { - track.style.transform = 'translateX(0px)'; - return; - } - var offset = index * (slideWidth + computedGap) - (carouselWidth - slideWidth) / 2; - var translateX = -offset; - if (!isFinite(translateX)) { - track.style.transform = 'translateX(0px)'; - return; - } - track.style.transform = 'translateX(' + translateX + 'px)'; + var offset = index * -100; + track.style.transform = 'translateX(' + offset + '%)'; slides.forEach(function (slide, i) { - slide.classList.remove('is-active', 'is-next', 'is-prev'); - if (i === index) { - slide.classList.add('is-active'); - } else if (nextIndex !== null && i === nextIndex) { - slide.classList.add('is-next'); - } else if (prevIndex !== null && i === prevIndex) { - slide.classList.add('is-prev'); - } + slide.classList.toggle('is-active', i === index); }); } function goNext() { - if (!loop && index >= slides.length - 1) { - return; - } - index = loop ? (index + 1) % slides.length : Math.min(index + 1, slides.length - 1); + index = (index + 1) % slides.length; updateSlides(); } function goPrev() { - if (!loop && index <= 0) { - return; - } - index = loop ? (index - 1 + slides.length) % slides.length : Math.max(index - 1, 0); + index = (index - 1 + slides.length) % slides.length; updateSlides(); } @@ -516,36 +470,6 @@ $(document).ready(function(){ } } }, { passive: true }); - carousel.addEventListener('pointerdown', function (event) { - if (event.pointerType === 'mouse') { - return; - } - touchStartX = event.clientX; - touchStartY = event.clientY; - }, { passive: true }); - carousel.addEventListener('pointerup', function (event) { - if (event.pointerType === 'mouse') { - return; - } - var deltaXPointer = event.clientX - touchStartX; - var deltaYPointer = event.clientY - touchStartY; - if (Math.abs(deltaXPointer) > 50 && Math.abs(deltaXPointer) > Math.abs(deltaYPointer)) { - if (deltaXPointer < 0) { - goNext(); - } else { - goPrev(); - } - } - }, { passive: true }); - carousel.addEventListener('wheel', function (event) { - if (Math.abs(event.deltaX) > Math.abs(event.deltaY) && Math.abs(event.deltaX) > 20) { - if (event.deltaX > 0) { - goNext(); - } else { - goPrev(); - } - } - }, { passive: true }); } window.addEventListener('resize', function () { diff --git a/views/templates/hook/prettyblocks/prettyblock_heroe_carousel.tpl b/views/templates/hook/prettyblocks/prettyblock_heroe_carousel.tpl index 1811755..a92a8b2 100644 --- a/views/templates/hook/prettyblocks/prettyblock_heroe_carousel.tpl +++ b/views/templates/hook/prettyblocks/prettyblock_heroe_carousel.tpl @@ -37,69 +37,73 @@ {if $visibleStatesCount > 0} {assign var='lastVisibleIndex' value=$visibleStatesCount-1}
- + + {if $showArrows && $visibleStatesCount > 1} + + + {/if} - {if $showArrows && $visibleStatesCount > 1} - - - {/if}
{/if}