Elementor Image wave code:
HTML
<html>
<body data-rsssl=1 data-rsssl=1 data-rsssl=1>
<div class="wrapper">
<div class="imgs-parent">
<div class="img" style="background-image: url(https://elementor-template.lifeonablock.com/wp-content/uploads/2024/10/elementor-placeholder-image.webp)">
<div class="content">
<h3>Fusion®</h3>
<a href="https://nicopalmkvist.gumroad.com/l/hrlzf" class="btn" target="_blank" rel="noopener">Read More</a>
</div>
</div>
<div class="img" style="background-image: url(https://elementor-template.lifeonablock.com/wp-content/uploads/2024/10/elementor-placeholder-image.webp)">
<div class="content">
<h3>Panzer Collect</h3>
<a href="https://nicopalmkvist.gumroad.com/l/hrlzf" class="btn" target="_blank" rel="noopener">Read More</a>
</div>
</div>
<div class="img" style="background-image: url(https://elementor-template.lifeonablock.com/wp-content/uploads/2024/10/elementor-placeholder-image.webp)">
<div class="content">
<h3>BikeUP™</h3>
<a href="https://nicopalmkvist.gumroad.com/l/hrlzf" class="btn" target="_blank" rel="noopener">Read More</a>
</div>
</div>
<div class="img" style="background-image: url(https://elementor-template.lifeonablock.com/wp-content/uploads/2024/10/elementor-placeholder-image.webp)">
<div class="content">
<h3>Basic Apparel</h3>
<a href="https://nicopalmkvist.gumroad.com/l/hrlzf" class="btn" target="_blank" rel="noopener">Read More</a>
</div>
</div>
<div class="img" style="background-image: url(https://elementor-template.lifeonablock.com/wp-content/uploads/2024/10/elementor-placeholder-image.webp)">
<div class="content">
<h3>Shaping Shoe</h3>
<a href="https://nicopalmkvist.gumroad.com/l/hrlzf" class="btn" target="_blank" rel="noopener">Read More</a>
</div>
</div>
<div class="img" style="background-image: url(https://elementor-template.lifeonablock.com/wp-content/uploads/2024/10/elementor-placeholder-image.webp)">
<div class="content">
<h3>ARkk Project</h3>
<a href="https://nicopalmkvist.gumroad.com/l/hrlzf" class="btn" target="_blank" rel="noopener">Read More</a>
</div>
</div>
<div class="img" style="background-image: url(https://elementor-template.lifeonablock.com/wp-content/uploads/2024/10/elementor-placeholder-image.webp)">
<div class="content">
<h3>Bahne TML</h3>
<a href="https://nicopalmkvist.gumroad.com/l/hrlzf" class="btn" target="_blank" rel="noopener">Read More</a>
</div>
</div>
<div class="img" style="background-image: url(https://elementor-template.lifeonablock.com/wp-content/uploads/2024/10/elementor-placeholder-image.webp)">
<div class="content">
<h3>Bahne TML</h3>
<a href="https://nicopalmkvist.gumroad.com/l/hrlzf" class="btn" target="_blank" rel="noopener">Read More</a>
</div>
</div>
<div class="img" style="background-image: url(https://elementor-template.lifeonablock.com/wp-content/uploads/2024/10/elementor-placeholder-image.webp)">
<div class="content">
<h3>DEA Clothing</h3>
<a href="https://nicopalmkvist.gumroad.com/l/hrlzf" class="btn" target="_blank" rel="noopener">Read More</a>
</div>
</div>
</div>
</div>
</body>
</html>
CSS + JavaScript
JavaScript
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
--transition: cubic-bezier(0.1, 0.7, 0, 1);
}
body {
background: linear-gradient(90deg, black, #333);
}
.wrapper {
display: flex;
align-items: center;
justify-content: center;
height: 40vh;
}
.imgs-parent {
display: flex;
gap: 0.4rem;
perspective: 60rem;
}
.img {
width: 8.0rem;
height: 19rem;
background-size: cover;
background-position: center;
cursor: pointer;
transition: transform 1.25s var(--transition), filter 3s var(--transition), width 0.3s var(--transition);
position: relative;
filter: grayscale(0) brightness(0.7);
will-change: transform, filter;
border-radius: 8px;
}
.content {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
padding: 10px;
color: white;
text-align: center;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s ease, visibility 0.3s ease;
}
h3 {
font-size: 14px !important;
margin-bottom: 5px;
}
/* Button */
.btn {
display: inline-block;
font-family: "Montserrat", Sans-serif;
padding: 4px 10px;
background-color: transparent;
background-image: linear-gradient(140deg, #0071E3 42%, #25409E 100%);
color: white;
text-decoration: none;
font-size: 12px;
font-weight: 600;
fill: #000000;
border-radius: 15px;
text-align: center;
transition: background-color 0.3s ease, opacity 0.3s ease, visibility 0.3s ease;
opacity: 0;
visibility: hidden;
margin-bottom: 8px;
text-decoration: none !important;
}
.img:hover .btn,
.img:hover .content {
opacity: 1;
visibility: visible;
}
.btn:hover {
background-color: #005bb5;
}
.img:hover {
transform: translateZ(17.375rem);
filter: grayscale(0) brightness(0.9);
}
.img:hover .content {
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.img::before,
.img::after {
content: "";
position: absolute;
width: 1.25rem;
height: 100%;
right: -1.25rem;
}
.img::after {
left: -1.25rem;
}
.img:hover + * {
transform: translateZ(14.77rem) rotateY(35deg);
filter: grayscale(0.2) brightness(0.9);
z-index: -1;
}
.img:hover + * + * {
transform: translateZ(9.73rem) rotateY(40deg);
filter: grayscale(0.4) brightness(0.8);
z-index: -2;
}
.img:hover + * + * + * {
transform: translateZ(4.17rem) rotateY(35deg);
filter: grayscale(0.6) brightness(0.7);
z-index: -3;
}
.img:hover + * + * + * + * {
transform: translateZ(1.1rem) rotateY(25deg);
filter: grayscale(0.8) brightness(0.6);
z-index: -4;
}
.img:has(+ :hover) {
transform: translateZ(14.77rem) rotateY(-35deg);
filter: grayscale(0.2) brightness(0.9);
}
.img:has(+ * + :hover) {
transform: translateZ(9.73rem) rotateY(-40deg);
filter: grayscale(0.4) brightness(0.8);
}
.img:has(+ * + * + :hover) {
transform: translateZ(4.17rem) rotateY(-35deg);
filter: grayscale(0.6) brightness(0.7);
}
.img:has(+ * + * + * + :hover) {
transform: translateZ(1.1rem) rotateY(-25deg);
filter: grayscale(0.8) brightness(0.6);
}
.open {
width: 25vw;
transform: translateZ(17.375rem);
filter: inherit;
z-index: 1;
margin: 0 0.45vw;
}
@media (max-width: 820px) {
.img {
width: 4.0rem;
height: 19rem;
}
.img:hover {
transform: translateZ(17.375rem);
filter: inherit;
}
.open {
width: 20vw;
transform: translateZ(7.375rem);
filter: inherit;
z-index: 1;
margin: 0 0.45vw;
}
/* Mindre tekst og knap på mindre skærme */
h3 {
font-size: 8px;
}
.btn {
font-size: 8px;
padding: 2px 5px;
border-radius: 10px;
}
}
</style>
<script>
document.body.addEventListener("click", (event) => {
const clickedElement = event.target,
imgs = document.querySelectorAll(".img");
if (!clickedElement.classList.contains("img")) {
imgs.forEach((img) => img.classList.remove("open"));
return;
}
if (clickedElement.classList.contains("open")) {
clickedElement.classList.remove("open");
return;
}
imgs.forEach((img) => img.classList.remove("open"));
clickedElement.classList.add("open");
});
document.body.addEventListener("click", (event) => {});
</script>