@Krinkle:
"It seems like a spurious border-radius rule remains active even after the image has finished loading which results in a rendering difference between lazyload vs non-lazyload"
This happens when wgMFLazyLoadImages is enabled.
@Krinkle:
"It seems like a spurious border-radius rule remains active even after the image has finished loading which results in a rendering difference between lazyload vs non-lazyload"
This happens when wgMFLazyLoadImages is enabled.
This could be solved by changing the JS code for lazy loading to replace the placeholder with the image once loaded.
There'd be no need to manually undo any styles left behind from the placeholder element (such as border-radius in this case), since the element won't be there in that case.
This would also help reduce memory usage in the DOM, and naturally fixes any layout differences by ensuring the DOM is the same in the end as without lazy loading. It would also make it match the layout of Noscript and Grade C experience which effectively already do this.
Just a note, careful with the animations (fade out placeholder, fade in loaded image) if replacing the element instead of nesting it there.
Change 289013 had a related patch set uploaded (by Krinkle):
Lazy-load: Remove the placeholder once the image has loaded