Card
Lorem ipsum dolor sit amet consectetur adipisicing elit. Corrupti repellat, consequuntur doloribus voluptate esse iure?
Creates a card that shifts on hover.
perspective
on the .container
element to allow for the shifting effect.transition
for the transform
property of the .card
element.Document.querySelector()
to select the .card
element and add event listeners for the mousemove
and mouseout
events.Element.getBoundingClientRect()
to get the x
, y
, width
, and height
of the .card
element.-1
and 1
for the x
and y
axes and apply it through the transform
property.Lorem ipsum dolor sit amet consectetur adipisicing elit. Corrupti repellat, consequuntur doloribus voluptate esse iure?
<div class="container">
<div class="shifting-card">
<div class="content">
<h3>Card</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Corrupti repellat, consequuntur doloribus voluptate esse iure?</p>
</div>
</div>
</div>
.container {
display: flex;
padding: 24px;
justify-content: center;
align-items: center;
background: #f3f1fe;
}
.shifting-card {
width: 350px;
display: flex;
flex-direction: column;
align-items: center;
background: #fff;
border-radius: 10px;
margin: 0.5rem;
transition: transform 0.2s ease-out;
box-shadow: 0 0 5px -2px rgba(0, 0, 0, 0.1);
}
.shifting-card .content {
text-align: center;
margin: 2rem;
line-height: 1.5;
color: #101010;
}
const card = document.querySelector('.shifting-card');
const { x, y, width, height } = card.getBoundingClientRect();
const cx = x + width / 2;
const cy = y + height / 2;
const handleMove = e => {
const { pageX, pageY } = e;
const dx = (cx - pageX) / (width / 2);
const dy = (cy - pageY) / (height / 2);
e.target.style.transform =
`rotateX(${10 * dy * -1}deg) rotateY(${10 * dx}deg)`;
};
const handleOut = e => {
e.target.style.transform = 'initial';
};
card.addEventListener('mousemove', handleMove);
card.addEventListener('mouseout', handleOut);
CSS, Animation
Creates a two sided card which rotates on hover.
CSS, Animation
Creates a squiggle effect when hovering over a link.
CSS, Animation
Creates a rotate effect for the image on hover.