μ¬μ λΆν
(https://github.com/angular/preboot)μ μ 체 μ±μ΄ μμ μ νμλμ§ μλλ‘ νμ¬ μ§μ° λ‘λ κ΅¬μ± μμκ° μ΄λ―Έμ§λ₯Ό λ‘λνμ§ λͺ»νκ² ν©λλ€. isVisible
ν¨μλ falseλ₯Ό λ°νν©λλ€.
fromElement
μ rect.ts
λ getBoundingClientRect
λ₯Ό μ¬μ©νλ©° μ΄ κ²½μ° 0μ°¨μμ λ°νν©λλ€.
λΉ λ₯Έ ν΄κ²° λ°©λ²μ offset
μμ±μ 1
λ‘ μ€μ νμ¬ intersectsWith
true
λ°ννλλ‘ νλ κ²μ
λλ€.
μλ νμΈμ @lares83 ,
μλ € μ€μ κ³ λ§μ. μ΄λ―Έμ§κ° μΈμ νμλλμ§ μ μ μλ λ°©λ²μ΄ μκΈ° λλ¬Έμ μ΄κ²μ λ§€μ° κΉλ€λ‘μ΄ λ¬Έμ μ λλ€.
λΉ λ₯Έ μμ μ μ μν λλ‘ offset=1
λ₯Ό μ€μ νλ κ²μ΄μ§λ§ λ·°ν¬νΈμ μλ κ²½μ°μλ νμλ λ λͺ¨λ μ΄λ―Έμ§κ° λ‘λλ©λλ€. μ΄λ ng-lazyload-image
κ° μ΄λ―Έμ§κ° νμλκΈ° μ μ μ΄λ―Έμ§κ° μ΄λμ μλμ§ μ μ μλ λ°©λ²μ΄ μκ³ κ·Έ λΉμμλ λ무 λ¦κΈ° λλ¬Έμ
λλ€(μ¬μ©μκ° μ€ν¬λ‘€ν λκΉμ§ μ μ΄λ²€νΈλ₯Ό λ°μ§ λͺ»ν¨).
μ΄λ₯Ό μμ νλ ν κ°μ§ λ°©λ²μ PrebootComplete
μ΄λ²€νΈλ₯Ό μμ νλ κ²μ
λλ€.
constructor() {
this.scrollAndPrebootComplete$ = Observable.merge(
Observable.fromEvent(window, 'scroll'),
Observable.fromEvent(window, 'PrebootComplete')
);
}
κ·Έλ° λ€μ ν νλ¦Ώμμ:
<img [lazyLoad]="lazyLoadImage" [scrollObservable]="scrollAndPrebootComplete$" />
λΉμ μ μ½κ² λν μ¬μ©μ μ μ κ΅¬μ± μμλ₯Ό λ§λ€ μ lazyLoad
μ ν¨κ» ν΅κ³Ό scrollAndPrebootComplete$
.
λ λ€λ₯Έ ν΄κ²°μ±
μ IntersectionObserver
κ²μ΄μ§λ§ ν΄κ²°νλ €λ©΄ #304κ° νμν©λλ€.
λΉ λ₯Έ ν΄κ²° λ°©λ²μ offset μμ±μ μλ₯Ό λ€μ΄ 1λ‘ μ€μ νμ¬ intersectsWithκ° trueλ₯Ό λ°ννλλ‘ νλ κ²μ λλ€.
κ·Έκ²μ μ€μ λ‘ λ²κ·Έμ λλ€. λ°μν΄μλ μλ©λλ€. λλ κ·Έκ²μ λν΄ λ³λμ λ¬Έμ λ₯Ό μ΄ ββκ²μ λλ€.
λλ μ΄κ²μ λ«λλ€. μμμ μ μν μ루μ μ΄ μλνμ§ μμλ€λ κ²μ μλ €μ£Όμμμ€.
κ°μ₯ μ μ©ν λκΈ
κ·Έκ²μ μ€μ λ‘ λ²κ·Έμ λλ€. λ°μν΄μλ μλ©λλ€. λλ κ·Έκ²μ λν΄ λ³λμ λ¬Έμ λ₯Ό μ΄ ββκ²μ λλ€.