Perspective Transform on Hover

CSSCSSBeginner
Practice Now

This tutorial is from open-source community. Access the source code

Introduction

In this lab, we will learn how to apply a perspective transform with a hover animation to an element using CSS. This technique can be useful for creating engaging and interactive user interfaces, especially for displaying images or product cards. By the end of this lab, you will have a good understanding of how to use the perspective() and rotateY() functions to create a perspective effect and how to update the transform attribute on hover using transitions.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL css(("`CSS`")) -.-> css/BasicConceptsGroup(["`Basic Concepts`"]) css(("`CSS`")) -.-> css/BasicStylingGroup(["`Basic Styling`"]) css(("`CSS`")) -.-> css/CoreLayoutGroup(["`Core Layout`"]) css(("`CSS`")) -.-> css/IntermediateStylingGroup(["`Intermediate Styling`"]) css(("`CSS`")) -.-> css/DynamicStylingGroup(["`Dynamic Styling`"]) css/BasicConceptsGroup -.-> css/selectors("`Selectors`") css/BasicStylingGroup -.-> css/colors("`Colors`") css/CoreLayoutGroup -.-> css/box_model("`Box Model`") css/CoreLayoutGroup -.-> css/margin_and_padding("`Margin and Padding`") css/CoreLayoutGroup -.-> css/borders("`Borders`") css/CoreLayoutGroup -.-> css/width_and_height("`Width and Height`") css/CoreLayoutGroup -.-> css/display_property("`Display Property`") css/IntermediateStylingGroup -.-> css/backgrounds("`Backgrounds`") css/DynamicStylingGroup -.-> css/transitions("`Transitions`") css/DynamicStylingGroup -.-> css/transformations("`Transformations`") css/IntermediateStylingGroup -.-> css/pseudo_classes("`Pseudo-classes`") subgraph Lab Skills css/selectors -.-> lab-35213{{"`Perspective Transform on Hover`"}} css/colors -.-> lab-35213{{"`Perspective Transform on Hover`"}} css/box_model -.-> lab-35213{{"`Perspective Transform on Hover`"}} css/margin_and_padding -.-> lab-35213{{"`Perspective Transform on Hover`"}} css/borders -.-> lab-35213{{"`Perspective Transform on Hover`"}} css/width_and_height -.-> lab-35213{{"`Perspective Transform on Hover`"}} css/display_property -.-> lab-35213{{"`Perspective Transform on Hover`"}} css/backgrounds -.-> lab-35213{{"`Perspective Transform on Hover`"}} css/transitions -.-> lab-35213{{"`Perspective Transform on Hover`"}} css/transformations -.-> lab-35213{{"`Perspective Transform on Hover`"}} css/pseudo_classes -.-> lab-35213{{"`Perspective Transform on Hover`"}} end

Perspective Transform on Hover

index.html and style.css have already been provided in the VM.

To create a perspective transform with a hover animation on an element:

  1. Use the transform property with the perspective() and rotateY() functions to apply a perspective to the element. For example, to create a left perspective, use transform: perspective(1500px) rotateY(15deg);. To create a right perspective, use transform: perspective(1500px) rotateY(-15deg);.

  2. Use the transition property to animate the transform property when the element is hovered. For example, transition: transform 1s ease 0s;.

  3. To mirror the perspective effect from left to right, change the rotateY() value to negative on the right perspective. For example, use transform: perspective(1500px) rotateY(-15deg);.

Example HTML:

<div class="card-container">
  <div class="image-card perspective-left"></div>
  <div class="image-card perspective-right"></div>
</div>

Example CSS:

.image-card {
  display: inline-block;
  box-sizing: border-box;
  margin: 1rem;
  width: 240px;
  height: 320px;
  padding: 8px;
  border-radius: 1rem;
  background: url("https://picsum.photos/id/1049/240/320");
  box-shadow: rgba(0, 0, 0, 0.25) 0px 25px 50px -12px;
}

.perspective-left {
  transform: perspective(1500px) rotateY(15deg);
  transition: transform 1s ease 0s;
}

.perspective-left:hover {
  transform: perspective(3000px) rotateY(5deg);
}

.perspective-right {
  transform: perspective(1500px) rotateY(-15deg);
  transition: transform 1s ease 0s;
}

.perspective-right:hover {
  transform: perspective(3000px) rotateY(-5deg);
}

Please click on 'Go Live' in the bottom right corner to run the web service on port 8080. Then, you can refresh the Web 8080 Tab to preview the web page.

Summary

Congratulations! You have completed the Perspective Transform on Hover lab. You can practice more labs in LabEx to improve your skills.

Other CSS Tutorials you may like