Тасующиеся по клику фотографии как колода карт | Click-shuffle photos like a deck of cards

Решение выполнено на jQuery, и может работать на всех экранах и с любым количеством фотографий. Подключать кучу библиотек для тусования такой колоды уж точно не стоит, но jQuery я оставил, так как для меня она удобнее чистого JS.

Пример:

Библиотека jQuery:

<!-- jQuery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
HTML КОД:

<div class="container">	

	<div class="cart_container">
		<div class="cart">
			<img src="images/photo-1.jpeg" alt="" />
		</div>
		<div class="cart">
			<img src="images/photo-2.jpg" alt="" />
		</div>
		<div class="cart">
			<img src="images/photo-3.jpeg" alt="" />
		</div>
		<div class="cart">
			<img src="images/photo-4.jpg" alt="" />
		</div>
		<div class="cart">
			<img src="images/photo-5.jpg" alt="" />
		</div>
		<div class="cart">
			<img src="images/photo-6.jpg" alt="" />
		</div>
	</div>
	
</div>
CSS КОД:

.container {
	height: 100vh;
	width: 100vw;
	background-color: #2d48e2;
	
	display: -webkit-box;
	
	display: -ms-flexbox;
	
	display: flex;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
	-webkit-box-pack: center;
	    -ms-flex-pack: center;
	        justify-content: center;
}
.cart_container {
    margin: 20px 0;
    position: relative;
}
.cart {
    height: 400px;
    width: 300px;
    position: absolute;
    top: 0;
    left: calc(50% - 150px);
    overflow: hidden;
    -webkit-box-shadow: 0 4px 12px rgba(0,0,0,0.1), 0 10px 20px rgba(0,0,0,0.1);
            box-shadow: 0 4px 12px rgba(0,0,0,0.1), 0 10px 20px rgba(0,0,0,0.1);
    cursor: pointer;
    border-radius: 10px;
    border: 1px solid #2d48e2;
    padding: 10px;
    z-index: 100;
    background-color: #fff;
}
.cart:nth-child(1) {
    -webkit-transform: rotate(-3deg);
        -ms-transform: rotate(-3deg);
            transform: rotate(-3deg);
    position: relative;
}
.cart:nth-child(2) {
    -webkit-transform: rotate(4deg);
        -ms-transform: rotate(4deg);
            transform: rotate(4deg);
}
.cart:nth-child(3) {
    -webkit-transform: rotate(10deg);
        -ms-transform: rotate(10deg);
            transform: rotate(10deg);
}
.cart:nth-child(4) {
    -webkit-transform: rotate(-6deg);
        -ms-transform: rotate(-6deg);
            transform: rotate(-6deg);
}
.cart:nth-child(5) {
    -webkit-transform: rotate(-2deg);
        -ms-transform: rotate(-2deg);
            transform: rotate(-2deg);
}
.cart:nth-child(6) {
    -webkit-transform: rotate(7deg);
        -ms-transform: rotate(7deg);
            transform: rotate(7deg);
}
.cart img {
    width: 100%;
    height: 100%;
	border-radius: 8px;
	-o-object-fit: cover;
	   object-fit: cover;
}
.bottom {
    z-index: 50;
    -webkit-animation: move ease-in-out 1s;
            animation: move ease-in-out 1s;
}
.bottom_last {
    z-index: 30;
    -webkit-animation: move_last ease-in-out 1s;
            animation: move_last ease-in-out 1s;
}
@-webkit-keyframes move {
    0% {
        left: calc(50% - 150px);
        z-index: 150;
    }
    50% {
        left: calc(50% + 220px);
    }    
    100% {
        left: calc(50% - 150px);
        z-index: 50;
    }
}
@keyframes move {
    0% {
        left: calc(50% - 150px);
        z-index: 150;
    }
    50% {
        left: calc(50% + 220px);
    }    
    100% {
        left: calc(50% - 150px);
        z-index: 50;
    }
}
@-webkit-keyframes move_last {
    0% {
        left: calc(50% - 150px);
        z-index: 150;
    }
    50% {
        left: calc(50% + 220px);
        z-index: 50;
    }    
    100% {
        left: calc(50% - 150px);
        z-index: 30;
    }
}
@keyframes move_last {
    0% {
        left: calc(50% - 150px);
        z-index: 150;
    }
    50% {
        left: calc(50% + 220px);
        z-index: 50;
    }    
    100% {
        left: calc(50% - 150px);
        z-index: 30;
    }
}
jQuery КОД:

$(function () {
    let count = 1;
    let click = true;
    let num = $(".cart").length;
    $(".cart").click(function() {
        if(!click) {
            return;
        }
        click = false;
        let card = $(this);
        if(count < num) {
            $(this).addClass("bottom");
            count++;
            }  else {
            $(this).addClass("bottom_last");
            count++;
        }
        if(count == num + 1) {
            setTimeout(function () {
                $(".cart").removeClass("bottom").removeClass("bottom_last");
                count = 1;
            }, 1000);  
        }
        setTimeout(function () {
            click = true;
        }, 1000);         
    });
});

0 Комментарии

Подписывайтесь на Boosty и скачивай БЕСПЛАТНО любые файлы и скрипты!!!

🔥 Стать автором на Boosty »