Lego2012
11/13/2016 - 1:30 PM

Smoother Box-Shadow für bessere Performance

Smoother Box-Shadow für bessere Performance

/* 
Ist es möglich, Box-Shadows zu animieren, ohne die Performance jedes Frames zu verlangsamen? Nein, ist es nicht. Die Animation wird die Performance bremsen.

Aber: Wir haben eine Möglichkeit gefunden, den gleichen Effekt mit minimalen Verlangsamungen zu erzielen. 
*/

/*Eine einfache Box mit Schatten für den Ausganszustand.*/
.box {
   width: 100px;
   height: 100px;
   background-color: #ddd;
   box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
   border-radius: 5px;
   transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
}

/*Das versteckte pseudo-Element mit Schatten für den Endzustand.*/
.box::after {
   content: "";
   border-radius: 5px;
   position: absolute;
   z-index: -1;
   top: 0;
   left: 0;
   width: 100%;
   height: 100%;
   box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
   opacity: 0;
   transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
}

/* 
Bis hier hin ist der stärkere Schatten von .box::after komplett versteckt und Interaktionen mit der Box sind nicht möglich.

Im nächsten Schritt wird die .box beim Hover vergrößert und das pseudo-Element wird eingeblendet. 
*/

.box:hover {
  transform: scale(1.2, 1.2);
}
.box:hover::after {
  opacity: 1;
}