Ng-lazyload-image: 지연 λ‘œλ“œ 이미지가 사전 λΆ€νŒ…μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠμŒ

에 λ§Œλ“  2018λ…„ 04μ›” 05일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: tjoskar/ng-lazyload-image

사전 λΆ€νŒ…(https://github.com/angular/preboot)은 전체 앱이 μ‹œμž‘ μ‹œ ν‘œμ‹œλ˜μ§€ μ•Šλ„λ‘ ν•˜μ—¬ 지연 λ‘œλ“œ ꡬ성 μš”μ†Œκ°€ 이미지λ₯Ό λ‘œλ“œν•˜μ§€ λͺ»ν•˜κ²Œ ν•©λ‹ˆλ‹€. isVisible ν•¨μˆ˜λŠ” falseλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

fromElement 의 rect.ts λŠ” getBoundingClientRect λ₯Ό μ‚¬μš©ν•˜λ©° 이 경우 0차원을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

λΉ λ₯Έ ν•΄κ²° 방법은 offset 속성을 1 둜 μ„€μ •ν•˜μ—¬ intersectsWith true λ°˜ν™˜ν•˜λ„λ‘ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λΉ λ₯Έ ν•΄κ²° 방법은 offset 속성을 예λ₯Ό λ“€μ–΄ 1둜 μ„€μ •ν•˜μ—¬ intersectsWithκ°€ trueλ₯Ό λ°˜ν™˜ν•˜λ„λ‘ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

그것은 μ‹€μ œλ‘œ λ²„κ·Έμž…λ‹ˆλ‹€. λ°œμƒν•΄μ„œλŠ” μ•ˆλ©λ‹ˆλ‹€. λ‚˜λŠ” 그것에 λŒ€ν•΄ λ³„λ„μ˜ 문제λ₯Ό μ—΄ β€‹β€‹κ²ƒμž…λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš” @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λ₯Ό λ°˜ν™˜ν•˜λ„λ‘ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

그것은 μ‹€μ œλ‘œ λ²„κ·Έμž…λ‹ˆλ‹€. λ°œμƒν•΄μ„œλŠ” μ•ˆλ©λ‹ˆλ‹€. λ‚˜λŠ” 그것에 λŒ€ν•΄ λ³„λ„μ˜ 문제λ₯Ό μ—΄ β€‹β€‹κ²ƒμž…λ‹ˆλ‹€.

λ‚˜λŠ” 이것을 λ‹«λŠ”λ‹€. μœ„μ—μ„œ μ œμ•ˆν•œ μ†”λ£¨μ…˜μ΄ μž‘λ™ν•˜μ§€ μ•Šμ•˜λ‹€λŠ” 것을 μ•Œλ €μ£Όμ‹­μ‹œμ˜€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰