will-change
λ₯Ό λ¨μ©νλ©΄ λΆνμν λ μ΄μ΄κ° κ³Όλνκ² μμ±λμ΄ μ±λ₯ μ νλ₯Ό μ λ°ν©λλ€. νμν μμ±μλ§ μ νμ μΌλ‘ μ¬μ©νκ³ , μ λλ©μ΄μ
μ’
λ£ νμλ μ΄κΈ°ννμ¬ λ¦¬μμ€λ₯Ό νμν΄μΌ ν©λλ€.
will-change
λ λΈλΌμ°μ μκ² νΉμ μμ±μ΄ λ³κ²½λ μμ μμ 미리 μλ € μ΅μ νλ₯Ό μ λνλ μμ±μ
λλ€. νμ§λ§, λ무 λ§μ μμμ λ¨μ©νκ±°λ λͺ¨λ μμ±μ μ μ©νλ©΄(μ: will-change: all;
) λΈλΌμ°μ κ° λΆνμν λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ λ μ΄μ΄λ₯Ό μμ±νκ² λ©λλ€. μ΄λ μ€νλ € μ±λ₯μ μ νμν€κ³ , μ΄κΈ° λ λλ§ μκ°μ λ리며, μ¬μ§μ΄ ν¬λμλ₯Ό μ λ°ν μ μμ΅λλ€. λν, will-change
λ μμΈ‘ κ°λ₯ν μ±λ₯ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ¬μ©λμ΄μΌ νλ©°, λ§μ°ν μ±λ₯ ν₯μμ κΈ°λνλ©° μ¬μ©νλ κ²μ μ§μν΄μΌ ν©λλ€.
will-change
λ νμν κ²½μ°μλ§ μ νμ μΌλ‘ μ¬μ©ν΄μΌ ν©λλ€. λ³κ²½λ κ°λ₯μ±μ΄ λμ μμ±μ λͺ
νν μ§μ νκ³ , ν΄λΉ μμκ° μ€μ λ‘ μ λλ©μ΄μ
μ΄λ νΈλμ§μ
μ΄ μμλκΈ° μ§μ μ will-change
λ₯Ό μ μ©νλ κ²μ΄ μ’μ΅λλ€. μ λλ©μ΄μ
μ΄ λλ νμλ will-change
λ₯Ό μ κ±°νκ±°λ will-change: initial;
λ‘ μ΄κΈ°ννμ¬ λΈλΌμ°μ κ° ν λΉλ 리μμ€λ₯Ό νμνλλ‘ ν΄μΌ ν©λλ€. λν, κ°λ°μ λꡬλ₯Ό μ¬μ©νμ¬ λ μ΄μ΄ μμ± νν©μ λͺ¨λν°λ§νκ³ , λΆνμν λ μ΄μ΄ μμ±μ μ€μ΄λ λ°©λ²μ μ°ΎμμΌ ν©λλ€. transform
κ³Ό opacity
λ λ μ΄μ΄λ₯Ό μμ±νμ§ μκ³ μ λλ©μ΄μ
μ μ²λ¦¬ν μ μλ λνμ μΈ μμ±μ΄λ―λ‘ μ κ·Ήμ μΌλ‘ νμ©ν΄μΌ ν©λλ€.
/* κ³Όλν will-change μ¬μ© (μν°ν¨ν΄) */
.element {
will-change: all;
transition: transform 0.3s ease-in-out;
}
.another-element {
will-change: transform, opacity, top, left, width, height; /* λ무 λ§μ μμ± μ§μ */
}
/* μ¬λ°λ₯Έ will-change μ¬μ© */
.element {
transition: transform 0.3s ease-in-out;
}
.element:hover {
will-change: transform; /* νΈλ² μμ μ will-change μ μ© */
transform: scale(1.1);
}
/* μ λλ©μ΄μ
μ’
λ£ ν will-change μ΄κΈ°ν (JavaScript) */
const element = document.querySelector('.element');
element.addEventListener('transitionend', () => {
element.style.willChange = 'initial';
});