Safari μμ μ΄λ―Έμ§μ white borderκ° κΉλ°μ΄λ μ΄μ κ°μ
νλ‘μ νΈλ₯Ό μ§ννλ©΄μ μ¬ν리 λΈλΌμ°μ μμ λ°μνλ μ€νμΌ μ΄μ κ°μ κ³Όμ μ κ°λ΅νκ² κΈ°λ‘ν΄λλ €κ³ νλ€.
μμμ 보면 μλ μ΄λ―Έμ§μ²λΌ νμκ² ν λλ¦¬κ° κΉλΉ‘μ΄λ νμμ λ°κ²¬νλ€.
safari white border κ΄λ ¨ ν€μλλ‘ κ²μμ νλ λ΄κ° κ²ͺμ μ΄μμ λμΌν νμμΌλ‘ 보μ΄λ μ€νμ€λ²νλ‘μ° μ 보λ₯Ό λ°κ²¬νλ€.
λ΄μ©μ 보λ μ΄λ¬ν νμμ΄ λ°μν μ΄μ λ μ¬ν리 15μ λ²κ·ΈμΈλ°, μ§μ°λ‘λ©(loading='lazy')μ μ μ©νλ©΄ λ°μνλ μ΄μμκ³ , next.jsλ κΈ°λ³Έμ μΌλ‘ μ§μ°λ‘λ©μ΄ μ μ©λμ΄ μμΌλ λ²κ·Έκ° λ°μνλ€.
16.4 λ²μ λΆν°λ ν΄κ²°λμλ€κ³ λμ΄μμ§λ§ νμ¬ κ°λ° μ μ±
μ latest λ²μ μΌλ‘λΆν° 3κ° μ΄νμ λ²μ κΉμ§ μ§μν΄μΌ νλ€. κ·Έλμ μ΄μ κ°μ μ΄ νμνλλ°, priority
λ₯Ό μ€μ νκ±°λ loadingμ eagal
λ‘ λ³κ²½ν΄λ ν΄κ²°μ κ°λ₯νμ§λ§, μ±λ₯μ μ€νμΌλ‘ κ°μ νλκ² λ² μ€νΈλΌκ³ μκ°λμ΄ μ€νμ€λ²νλ‘μ° ν΄κ²°λ°©λ²μΈ clip-pathλ₯Ό μ μ©νκΈ°λ‘ νλ€.
@supports (font: -apple-system-body) and (-webkit-appearance: none) {
img[loading='lazy'] {
clip-path: inset(0.6px);
}
}
κ°λ°νκ²½μμ μ€νμΌ νλ μμν¬λ‘ tailwindλ₯Ό μ¬μ©μ€μ΄λΌ κ·Έμ λ§κ² μ μ©νλ€.
const [isLoaded, setIsLoaded] = useState(false);
<Image
...
onLoad={() => setIsLoaded(true)}
className={`... ${isLoaded ? '' : '[clip-path:inset(0.6px)]'}`}
...
/>
μ μ©νκ³ λλ νμκ² ν λλ¦¬κ° λ³νλ νμμ ν΄κ²°νλλ° λ λ€λ₯Έ λ¬Έμ κ° λ°μνλ€.
ν¬λ‘¬μμλ λμΌνκ² clip-pathκ° μ μ©λμ΄ μ€νλ € ν¬λ‘¬μμ μ΄μνκ² λ³΄μ΄κ²λλ€.
κ·Έλμ ν΄ν€νμ§λ§, μ¬ν리μμλ§ μ μ©λλλ‘ νλ λ°©λ²μ μ°Ύκ²λλ€.
@supports (-webkit-hyphens: none) {
display: none;
}
κ²°λ‘
κ²°λ‘ μ μΌλ‘ μ΅μ’ μ½λλ μλμ κ°μ΄ μμ νλ€.
const [isLoaded, setIsLoaded] = useState(false);
<Image
...
onLoad={() => setIsLoaded(true)}
className={`... ${isLoaded ? '' : 'supports-[-webkit-hyphens:none]:[clip-path:inset(0.6px)]'}`}
...
/>
supports-[-webkit-hyphens:none]
λΆλΆμ configλ‘ λΉΌμ μ¬μ¬μ© ν μ μλλ‘ μμ νλ€.