Hello Guys! In this blog, We are going to make a card with a 3D perspective using javascript. We can use this type of effect on the payment page for showcasing the credit/debit details card. This will be a step-by-step guide including HTML and CSS. Let’s get started 🚀.
Before we start, here are some more JavaScript Games you might like to create:
1. Snake Game using JavaScript
2. 2D Bouncing Ball Game using JavaScript
3. Rock Paper Scissor Game using JavaScript
4. Tic Tac Toe Game using JavaScript
5. Whack a Mole Game using JavaScript
I would recommend you don’t just copy and paste the code, just look at the code and type by understanding it.
HTML CodeÂ
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>3D Perspective using Tilt.js - @code.scientist x @codingtorque</title>
</head>
<body>
<div class="container">
<div class="card"></div>
</div>
</body>
</html>
Output Till Now

CSS CodeÂ
Create a file style.css and paste the code below.
* {
margin: 0;
padding: 0;
}
body {
background: black;
color: white;
display: flex;
align-items: center;
justify-content: center;
padding-top: 15rem;
}
.container {
position: relative;
overflow: hidden;
border-radius: 10px;
}
.card {
background: url('../imgs/one.jpg') center center / cover;
border-radius: 10px;
height: 20rem;
width: 15rem;
display: flex;
flex-direction: column;
align-items: center;
overflow: hidden;
z-index: -1;
cursor: pointer;
transition: 0.3s;
}
.card:hover {
transform: scale(1.1);
}
Output Till Now

JavaScript CodeÂ
Create a fileÂ
script.js and paste the code below.const box = document.querySelector(".container");
const boxRect = box.getBoundingClientRect();
box.addEventListener('mousemove', e => {
const xPosition = (e.clientX - boxRect.left) / boxRect.width
const yPosition = (e.clientY - boxRect.top) / boxRect.height - 0.6
const xOffset = -(xPosition - 0.6)
const dxNorm = Math.min(Math.max(xOffset, -0.6), 0.6)
box.style.transform = `perspective(1000px)
rotateY(${dxNorm * 45}deg)
rotateX(${yPosition * 45}deg)`
})
box.addEventListener('mouseleave', e => {
box.style.transform = 'none'
})Written by: Piyush Patil
If you have any doubts or any project ideas feel free to Contact Us
Hope you find this post helpful💖



