<!-- box에 hover시 box-shadow를 주는 경우 -->
.box {
transform: box-shadow 1s ease-in,
opacity 1s ease-in;
&:hover {
box-shadow: 0 0 2px 4px lightgray;
}
}
<!-- box의 pseudo element에 미리 shadow를 주고 opacity로 조절 -->
.box::after {
content: '';
position: absolute;
inset : 0;
box-shadow: 0 0 2px 4px lightgray;
opacity: 0;
}
.box:hover::after {
opacity: 1;
}
performance type | box-shadow | pseudo-element |
---|---|---|
rendering | 32ms | 20ms |
painting | 18ms | 2ms |
웹의 최적화는 Javascript나 React의 re-render을 최소화 하는 방식으로만 생각했던 나에게는 css로도 웹의 최적화에 영향을 줄 수 있었다는 것에 신선한 충격이었다.
Stop animating box-shadows the wrong way!
https://tobiasahlin.com/blog/how-to-animate-box-shadow/