Skip to content

Commit

Permalink
trying to fix problem with swiper
Browse files Browse the repository at this point in the history
  • Loading branch information
LiliaBilous committed Jun 2, 2023
1 parent 094dde0 commit d3c6549
Show file tree
Hide file tree
Showing 3 changed files with 148 additions and 147 deletions.
4 changes: 1 addition & 3 deletions css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,6 @@ body{
.slider__slide {
flex-shrink: 0;
}
.slide {
}

.slide__body {
width: 60vh;
Expand Down Expand Up @@ -163,5 +161,5 @@ body{
.text.active {
transform: translate(-50%, 100%);
opacity: 0;

}
5 changes: 3 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<body>
<div class="wrapper">
<main class="page">
<div class="slider swiper">
<div class="slider">
<div class="slider__wrapper slider-wrapper">
<div class="slider__slide slide swiper-slide">
<div class="slide__body">
Expand Down Expand Up @@ -77,7 +77,8 @@
</div>
</main>
</div>
<script src="https://cdn.jsdelivr.net/npm/swiper@9/swiper-bundle.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.js"></script>
<!-- <script src="https://cdn.jsdelivr.net/npm/swiper@9/swiper-bundle.min.js"></script> -->
<script src="js/script.js"></script>
</body>
</html>
286 changes: 144 additions & 142 deletions js/script.js
Original file line number Diff line number Diff line change
@@ -1,162 +1,164 @@
"use strict"

let pageSlider = new Swiper('.slider', {
speed: 1000,
scrollbar:{
el: ".slider__scrolbar",
draggable: true
},
breakpoints: {
"320": {
slidesPerView:1,
centeredSlides: false
document.addEventListener("DOMContentLoaded", function() {
// Ваш код Swiper та інші дії
let pageSlider = new Swiper('.slider', {
speed: 1000,
scrollbar:{
el: ".slider__scrolbar",
draggable: true
},
"922": {
slidesPerView:2,
centeredSlides: true
breakpoints: {
"320": {
slidesPerView:1,
centeredSlides: false
},
"922": {
slidesPerView:2,
centeredSlides: true
}
}
}
});

const page = document.querySelector('.page');
const images = document.querySelectorAll('.slide__picture');

if (images.length) {
let backgroundSlides = ``;
let textSlides = ``;

images.forEach(image => {
backgroundSlides += `
<div class="background__slide swiper-slide">
<div class="background__image">
<img src="${image.getAttribute('src')}" alt="${image.alt}">
});

const page = document.querySelector('.page');
const images = document.querySelectorAll('.slide__picture');

if (images.length) {
let backgroundSlides = ``;
let textSlides = ``;

images.forEach(image => {
backgroundSlides += `
<div class="background__slide swiper-slide">
<div class="background__image">
<img src="${image.getAttribute('src')}" alt="${image.alt}">
</div>
</div>
`;
textSlides +=`
<div class="text__slide swiper-slide">
<span>${image.dataset.title ? image.dataset.title : ''}</span>
</div>
`;
});

const background = `
<div class="background swiper">
<div class="background__wrapper swiper-wrapper">
${backgroundSlides}
</div>
</div>
`;
textSlides +=`
<div class="text__slide swiper-slide">
<span>${image.dataset.title ? image.dataset.title : ''}</span>
const text = `
<div class="text swiper">
<div class="text__wrapper swiper-wrapper">
${textSlides}
</div>
</div>
`;
});

const background = `
<div class="background swiper">
<div class="background__wrapper swiper-wrapper">
${backgroundSlides}
</div>
</div>
`;
const text = `
<div class="text swiper">
<div class="text__wrapper swiper-wrapper">
${textSlides}
</div>
</div>
`;

page.insertAdjacentHTML("afterbegin", background);
page.insertAdjacentHTML("beforeend", text);

let pageBgSlider = new Swiper('.background', {
speed: 500
});
let pageTextSlider = new Swiper('.text', {
effect: "fade",
fadeEffect: {
crossFade: true
},
speed: 1000
});

//Controll
pageSlider.controller.control = pageBgSlider;
pageBgSlider.controller.control = pageTextSlider;
}

const speed = 800;
document.addEventListener("click", function (e) {
const targetElement = e.target;
const textBlock = document.querySelector('.text');
textBlock.getElementsByClassName.transitionDuration = `${speed}ms`;

//Open image
if (targetElement.closest('.slide')) {
const slide = targetElement.closest('.slide');
const slideImage = document.querySelector('img');
const activeImage = document.querySelector('.slide__picture.active');

if (slide.classList.contains('swiper-slider-active')) {
slideImage.classList.add('active');
textBlock.classList.add('active');
imageOpen(slideImage);
} else {
activeImage ? activeImage.classList.remove('active') : null;
pageSlider.slideTo(getIndex(slide))

page.insertAdjacentHTML("afterbegin", background);
page.insertAdjacentHTML("beforeend", text);

let pageBgSlider = new Swiper('.background', {
speed: 500
});
let pageTextSlider = new Swiper('.text', {
effect: "fade",
fadeEffect: {
crossFade: true
},
speed: 1000
});

//Controll
pageSlider.controller.control = pageBgSlider;
pageBgSlider.controller.control = pageTextSlider;
}

const speed = 800;
document.addEventListener("click", function (e) {
const targetElement = e.target;
const textBlock = document.querySelector('.text');
textBlock.style.transitionDuration = `${speed}ms`;

//Open image
if (targetElement.closest('.slide')) {
const slide = targetElement.closest('.slide');
const slideImage = document.querySelector('img');
const activeImage = document.querySelector('.slide__picture.active');

if (slide.classList.contains('swiper-slider-active')) {
slideImage.classList.add('active');
textBlock.classList.add('active');
imageOpen(slideImage);
} else {
activeImage ? activeImage.classList.remove('active') : null;
pageSlider.slideTo(getIndex(slide))
}
e.preventDefault();
}

//Close image
if (targetElement.closest('.open-image')) {
const openImage = targetElement.closest('.open-image');
const activeImage = document.querySelector('.slide__picture.active');
const imagePos = getImagePos(activeImage);

openImage.style.cssText = `
position: fixed;
left: ${imagePos.left}px;
top: ${imagePos.top}px;
width: ${imagePos.width}px;
height: ${imagePos.height}px;
transition: all ${speed}ms;
`;
setTimeout(() => {
activeImage.classList.remove('active');
activeImage.style.opacity = 1;
openImage.remove();
}, speed);

textBlock.classList.remove('active');
}
e.preventDefault();
})

function getIndex(el) {
return Array.from(el.parentNode.children).indexOf(el);
}

//Close image
if (targetElement.closest('.open-image')) {
const openImage = targetElement.closest('.open-image');
const activeImage = document.querySelector('.slide__picture.active');
const imagePos = getImagePos(activeImage);

openImage.style.cssText = `
function imageOpen(image) {
const imagePos = getImagePos(image);

const openImage = image.cloneNode();
const openImageBlock = document.createElement('div');
openImageBlock.classList.add('open-image');
openImageBlock.append(openImage);

openImageBlock.style.cssText = `
position: fixed;
left: ${imagePos.left}px;
top: ${imagePos.top}px;
width: ${imagePos.width}px;
height: ${imagePos.height}px;
transition: all ${speed}ms;
`;

document.body.append(openImageBlock);

setTimeout(() => {
activeImage.classList.remove('active');
activeImage.style.opacity = 1;
openImage.remove();
}, speed);

textBlock.classList.remove('active');
image.style.opacity = 0;
openImageBlock.style.left = 0;
openImageBlock.style.top = 0;
openImageBlock.style.width = '100%';
openImageBlock.style.height = '100%';
}, 0);
}
})

function getIndex(el) {
return Array.from(el.parentNode.children).indexOf(el);
}
function imageOpen(image) {
const imagePos = getImagePos(image);

const openImage = image.cloneNode();
const openImageBlock = document.createElement('div');
openImageBlock.classList.add('open-image');
openImageBlock.append(openImage);

openImageBlock.style.cssText = `
position: fixed;
left: ${imagePos.left}px;
top: ${imagePos.top}px;
width: ${imagePos.width}px;
height: ${imagePos.height}px;
transition: all ${speed}ms;
`;

document.body.append(openImageBlock);

setTimeout(() => {
image.style.opcity = 0;
openImageBlock.style.left = 0;
openImageBlock.style.top = 0;
openImageBlock.style.width = '100%';
openImageBlock.style.height = '100%';
}, 0);
}

function getImagePos(image) {
return {
left: image.getBoundingClientRec().left,
top: image.getBoundingClientRec().top,
width: image.offsetWidth,
height: image.offsetHeight

function getImagePos(image) {
return {
left: image.getBoundingClientRect().left,
top: image.getBoundingClientRect().top,
width: image.offsetWidth,
height: image.offsetHeight
}
}
}
});

0 comments on commit d3c6549

Please sign in to comment.