cssbootstrap-4fluent-designfluent-kit

Fluent Design card lift effect


I want to add the card lift effect to my bootstrap cards with fluent design styles on hover. You can see what I mean on microsoft design website.

Here's what I tried, but there is something missing and I cannot quite grab it.

I tried:

.card {
  box-shadow: -3px 6px 5px 0px rgba(176,164,176,1);
  transition: all .3s ease-in-out;
}

.card:hover {
  box-shadow: -3px 18px 20px 0px rgba(99,89,99,1);
}
<div class="card" style="width:19.5rem">
  <div class="card-body">
   Lorem ipsum dolor sit ameta, card content
  </div>
</div>

Kindly thanks for your help.


Solution

  • What makes the effect to looks like it is lifting is the transform: translate3d, see translate3d w3cschools docs.

    When the box-shadow changes on :hover the element itself moves in a different position, delivering the effect.

    So by giving transform: translate3d(0px, -1px, 0px); ( translate3d(x,y,z) ), the element moves 1px up and shadow casts down.

    .card {
      padding: 15px; /* JUST TO LOOK COOL */
      border: 1px solid #eee;  /* JUST TO LOOK COOL */
      box-shadow: rgba(0, 0, 0, 0.06) 0px 2px 4px;
      transition: all .3s ease-in-out;
    }
    
    .card:hover {
      box-shadow: rgba(0, 0, 0, 0.22) 0px 19px 43px;
      transform: translate3d(0px, -1px, 0px);
    }
    <div class="card" style="width:19.5rem">
      <div class="card-body">
       Lorem ipsum dolor sit ameta, card content
      </div>
    </div>