one of the things i like about you, is that you rarely use any framework/library for your videos and just focused on the fundamentals...! Keep it up.!
@TheThirdWorldCitizen Жыл бұрын
He does talk a lot about react tbf, but decent amount of vanilla videos.
@cookieman.19 Жыл бұрын
He is the framework
@MrThebigcheese75 Жыл бұрын
I agree, prefer not to be bogged down with a framework, for what I do they're overkill.
@fatimanura635911 ай бұрын
yup, it helps to have more better understand, and get used to the logics
@MrMikopi Жыл бұрын
I'm not that into front end side, But video making of yours is brilliant! I've even checked if I increased playback speed, but no, it was you talking at a good amount of speed, talking only about important stuff. Visual demonstrations are on point also. Thank you, good work. Edit: 11:36 that is the fastest bug fixing I've ever seen haha
@CodeCowboy64 Жыл бұрын
Been in web dev for 25 years, been a few since I was doing front end stuff. TIL some new to me properties, thanks!
@JonHaa87 Жыл бұрын
1. I'd add an additional blur filter to the low res images, either in the browser or when generating them. Just upscaling them kinda makes them look crappy as you get lots of "square gradients" (for a lack of a better word) interpolating between the pixels instead of a nice smooth blurry version. 2. As other have said, this effect is mostly already implemented into browsers/images. If you'd save the images as progressive, they'd automatically get sharper and sharper while they load, which requires less code and doesn't even need the download of the small image versions. However you could implement an additional blur effect on top of that while they're loading for a better effect, similar to what you've done in the video. 3. The solution you've given in the video is bad as someone with scripts disabled won't see the high-res versions at all. I'd add the CSS class that hides them until they're loaded also within JS.
@rusicsemenov Жыл бұрын
Hi Kail, thanks, good idea with pulse. And you can write in the keyframes 0%, 100% ... and 50%, instead repeat the same code.
@MostofaFatinZarif4 ай бұрын
One of the best video ever. Maintain performance is a major part in development
@sunraiii Жыл бұрын
Web development wouldn't be where it's at without KZbin. Great video!
@calimio6 Жыл бұрын
nah, without content creators
@rproctor83 Жыл бұрын
@@calimio6 nah, without internet
@merlinwarage Жыл бұрын
Did you ever hear about books? Or sites like MSDN?
@sunraiii Жыл бұрын
@@merlinwarage Congrats on being a dick under a positive comment. Also, dev books are 80% fluff, 20% content and MSDN is for boomers.
@TheNewton Жыл бұрын
8:12 in addition to online tools most image asset CDN's have parameters , or a path, to serve specific image sizes.
@lukas.webdev Жыл бұрын
I heard about it, but actually never used it ... But this actually seems pretty helpful. Keep it up. 😉🔥
@harris.sensorsoffline6419 Жыл бұрын
Whose gonna do it? so much typing of extra code 😁 so much work. Just basic lazy loading is enough.
@Peshyy Жыл бұрын
@@harris.sensorsoffline6419 I see you don't care about UX at all
@harris.sensorsoffline6419 Жыл бұрын
@@Peshyy It won't be ideal, to work on a ldiotic Blur Image Lazy Load when native lazy load is faster & better.
@Peshyy Жыл бұрын
@@harris.sensorsoffline6419 native lazy loading is still being used. the difference is that with one, you get images pop out of nowhere on slow networks; with the other - the images are placed where they should be, the user is visually aware there's an image there and how it should look like, and gets nice visual feedback that the image is being loaded. calling it "idiotic blur image lazy load" shows a lot about you
@harris.sensorsoffline6419 Жыл бұрын
@@Peshyy If you are working on a Gov Project that requires support for Slower Network & Older Browsers. You can't even support native lazy loading better luck with Tables to align those IMGs 😁. Just kiddin, like you can convert all your images to webp with extreme compression & native lazy loading. Enough, to work good on all 4G Connections that most World runs on.
@BorisBarroso Жыл бұрын
Thanks this is so useful, I have started a e-commerce site and I will use this method for the product images
@lamhung4899 Жыл бұрын
this method is more suite for showcase , img attribute srcset is better enough for your ecom site
@Diventurer Жыл бұрын
Did not know about the loading attribute. It was very helpful for a website I develop. Thank you!
@JoseRuiSantos-ruisoftware Жыл бұрын
If you already know the image dimensions before loading it, then you should add the width and height attributes to you img. This avoids the annoying effect of seeing the content moving around during image loading
@YuriG03042 Жыл бұрын
also known as CLS, which is Cumulative Layout Shift, which will impact the page SEO ranking
@thalison-dev Жыл бұрын
@@YuriG03042 What do you mean ? using width and height impact SEO ranking negatively?
@JoseRuiSantos-ruisoftware Жыл бұрын
@@thalison-dev It is the other way around. Not using width/height affects the SEO ranking negatively and increases the cumulative layout shift score. Google for "cumulative layout shift"
@rproctor83 Жыл бұрын
@@thalison-dev After 20 years fuckig around with Google bullshit I can tell you without a shadow of doubt that most all of these SEO tips are an utter waste of time and effort. If you ever look at some of the top ranking sites in highly saturated market you will see most of them are trash, a million console errors, dozens of tracking cookies, elements jumping around, interstitials and popups, bad semantics, too much advertising blocks, shallow content, meaningless content, duplicated content, I mean the list goes on.
@thekwoka4707 Жыл бұрын
@@rproctor83 no, it's just that being the thing people want is always most important. But layout shift is still annoying for users period.
@arinqwerty Жыл бұрын
I love how this is detailed!!!
@hrsikeisa Жыл бұрын
The process of generating and storing the blue placeholder js cumbersome - cloudinary really makes the whole thing a lot more cleaner.
@fraudulentme Жыл бұрын
I was looking for EXACTLY this for my project.
@r.osorio024 ай бұрын
Thank you bro! I will do this to my image component in react 👍
@Gio-m Жыл бұрын
Dude you're a blessing, thank you!
@SnappyScience Жыл бұрын
Great easy to follow vid. The blur background idea is gold.
@OldManBears Жыл бұрын
You're awesome, this was incredibly helpful.
@leandrolepingo1783 Жыл бұрын
Hi Kail, thanks, good idea with pulse.
@eksperiment6269 Жыл бұрын
This is an awesome way to load images. Great video!
@khanapeena21917 ай бұрын
It's better to use library for that
@mrnabby4178 Жыл бұрын
I was waiting for this video.
@TehPwnerer Жыл бұрын
In the 90s with JPEG they would load exactly like you describe and they can because the the way jpegs are constructed using frequency data so you can load lower frequency components first making up a blurry pixelated image like you have slowly transitioning into the actual image as finally received and loaded
@mohammadmahdimohaveri6580 Жыл бұрын
What you're describing is called Progressive JPEG, normal JPEG stores image block by block and cannot be rendered Progressively, but Progressive JPEG stores data from lower frequencies to higher ones, so it can load in an un-bluring manner
@alex_smallet Жыл бұрын
Yes, it's called jpeg 2000. Unlike regular jpeg, where they use Fourier transform, jpeg 2000 uses wavelet transform, which allows for better perceived image quality with smaller file size. Windows does not support it, but on a macOS you can save an image in jpeg 2000 format.
@RobertWildling Жыл бұрын
Excellent video! Incredibly well explained, exceptionally well prepared! Thank you very much!
@洪柜峰 Жыл бұрын
you are such a genius!!
@stevensavoie856 Жыл бұрын
I love that the way you add lazy loading is how non-programmers think writing code is like. "If you want lazy loading, type "loading = lazy". If you want a visitor to buy things, just add a button and write "action = complete transaction with credit card or payment service.""
@tantalus_complex Жыл бұрын
That's the Declarative Paradigm of programming for you. It's all about letting you describe WHAT you want (leaving the HOW to the engine). That is, you provide descriptions of what you want, piece by piece. On the other hand, what people casually mean by "programming" tends to be the Imperative Paradigm. This is all about letting you describe HOW you want things done. That is, you provide instructions, step by step.
@prodbybarn Жыл бұрын
Just what i was looking for, awesome
@dailydoseofchocolate9411 Жыл бұрын
Please make a video about next image too? My problem is how to set height on dynamic images in next js without them losing the aspect ratio and keeping the responsiveness
@lapridagaspar Жыл бұрын
Cool! I personally prefer not having extra markup. You can have the background image directly on the img tag. You wouldn't have the exact fade in animation you achieved but if you save your images with "progressive" turned on, they load in waves of less quality to more quality instead of top to bottom. Also, I think that hiding images by default isn't very progressively enhanced. You could instead add a class when JS starts running to hide them, or the classic remove the .no-js class on the body. Also, wouldn't it be more performant to do the pulse animation with opacity rather than changing the background color value? I think this can be done without extra markup as well (there's no need even for a pseudo element)
@lapridagaspar Жыл бұрын
One more thing. In your example it doesn't really matter, but for regular block images (not on a grid like yours) lazy loading can cause layout shift. To prevent this, you should specify each image width and height attributes. What's more, if you have those values and you are dealing with responsive images, you could also set a style with --_img-width and --_img-height custom properties. This should be the pixel value without unit. Then, in your CSS img[loading="lazy"]{ max-width:100%; height:auto; aspect-ratio: var(--_img-width) / var(--_img-height); }
@aniketpandey2524 Жыл бұрын
while trying this out i ran into said issues and after struggling for 20 minutes I arrived at almost the same solution you gave except for the progressive part. Have no idea what that means. Can you please explain?
@PhoenixXxXx91 Жыл бұрын
@@aniketpandey2524 Progressive images, supported since ages from jpg format include the small image Kyle generates inside the image itself. Also, the top-to-bottom loading is different on this kind of images - the same effect we're trying to have in the video, except that it is browser native, rather than using JS. I personally create the progressive images with the "export for web(legacy)" using the "progressive" option in Photoshop, but pretty sure you can find a free tool for that.
@aniketpandey2524 Жыл бұрын
@@PhoenixXxXx91 oh! Now I got it. I thought he's talking about some new option in img tag of html.. 😅
@lapridagaspar Жыл бұрын
@@aniketpandey2524 JPGs can be saved as "progressive" from photoshop. I'm sure there are other ways, but that's how I do it. If you are going full on optimization you may also consider a tag with the image inside as a WEBP or any other modern web format; with the JPG fallback. I don't know if WEBP has this "progressive" option.
@khalidelgazzar Жыл бұрын
Grest tutorial. Thank you
@namikazedevj46 Жыл бұрын
what a coincidence got this issue in my job task xD thanks a lot!
@CarlosHernandez-tg3vj Жыл бұрын
exactly what I needed thank you
@MichaelKadzioch Жыл бұрын
Thanks for this Video!
@JordanICM8 ай бұрын
At my job they really want us to improve the ligthouse scores. Have you done any tests to see what maximizes the lighthouse score (things like first/largest contentful paint)? I know you may even have to do strange stuff like not use external css files if your site has a really big one. I think it would be great if you could do a showcase of all the different ways to lazy load & optimize images and then show what kind of lighthouse scores they get (specifically on mobile, that's the killer). Thank you for this vid!
@martinkarugaba Жыл бұрын
Awesome tutorial, thanks Kyle.
@dragonspirit254 Жыл бұрын
I would also add a blur filter to smooth out those low res jpeg artifacts.
@ibtesumrezaaninda323 Жыл бұрын
Ow man! You are awesome!
@JoseLeMalin9 ай бұрын
Very usefull video ! Thank you !
@Jdinrbfidndifofkdndjoflfndjdk Жыл бұрын
Thank you next/image for not making having to write all of this :). Great video btw.
@krumbo Жыл бұрын
Great stuff thanks for sharing.
@yalewjemberu6821 Жыл бұрын
Your are the life saver....the (img.complete) one
@derpysean1072 Жыл бұрын
This is nice. Thank you dude.
@iamasifimam Жыл бұрын
very helpfull content thankyou for sharing this.
@canarymultimedia Жыл бұрын
What happened to progressive jpg anyway? That was a really cool feature built into the image...
@tom3f Жыл бұрын
It should still works, and it is much simpler than this.
@lapridagaspar Жыл бұрын
That would still start the resource download on page load even if the image is 200 viewport a down.
@mohammadmahdimohaveri6580 Жыл бұрын
You can lazy load progressive jpeg as well, and this way you're not wasting user's bandwidth for blurred images, image actually loads progressively and you won't have to manage two sets of assets
@GonzaloMassa Жыл бұрын
I was looking for this comment
@Trazynn Жыл бұрын
Is it possible to lazy load in a sharp pixelated style. Because pixel-art aesthetic is really hip these days.
@spandanbarve1066 Жыл бұрын
Yes
@a1x5h04 Жыл бұрын
Yes you can
@KventyHatesSun Жыл бұрын
Well done guys, one more happy comentator that got his question answered
@spandanbarve1066 Жыл бұрын
@@KventyHatesSun thank you
@ankanpoddar8815 Жыл бұрын
You can create a smaller pixelated version of your image and use that as the bg of the div.
@andreaskarz Жыл бұрын
Super cool, thank you
@Абдулхафиз-ч8д Жыл бұрын
Web Dev is the best👍
@kennethbeal Жыл бұрын
Nice, thank you!
@OrlandoVallejos Жыл бұрын
Amazing content!
@eliyahutarab4862 Жыл бұрын
Amazing as always thank you so much man
@mohmarroun31899 ай бұрын
Great video!
@Abdallah_Ismail Жыл бұрын
Thank god programming is like an open-book exam, you just need to know that it can be done and you will have Kyle here to help you do it
@colindante5164 Жыл бұрын
Thankyou much for sharing this awesome technique. ))))
@landau07 Жыл бұрын
Great content! Thank you!
@whonayem01 Жыл бұрын
That's awesome!
@StacyFrancis945 ай бұрын
Thank you.
@temperkan3727 Жыл бұрын
This guy is awesome!
@csisyadam Жыл бұрын
1. Would ".blur-load:not(.loaded)::before" work? 2. What do you think about "animation-direction: alternate"? 3. Setting the bg color to white and play with the opacity in the animation is another way to do it.
@uwu-zl6tq Жыл бұрын
ok
@Buster475 Жыл бұрын
Considering that jpeg encodes in 8x8 blocks, maybe 16x16 or 24x24 pixels would work better?
@ZackPyle Жыл бұрын
You could also throw a filter blur on it to make that pixilated small file look a little nicer
@gowthammurugan6392 Жыл бұрын
Actually, you are right, but when we use the 'Filter blur' effect on the mobile version, it feels laggy.
@ZackPyle Жыл бұрын
@@gowthammurugan6392 Interesting. Which part feels laggy?
@QwDragon Жыл бұрын
1. You can set background on an img itself. But I think it'll be impossible to add pulse over it. 2. Seems like progressive jpeg (especially with http2) could've solve the problem too? 3. 08:48 I like this more than blurry until load. 4. 10:30 It would be better to specify { once: true } so that it usubscribes after event occures.
@eseval Жыл бұрын
Great video. Thanks.
@kenansenagic384 Жыл бұрын
Great advice :)
@minusgod Жыл бұрын
Thank you for this very informative video .. pls do make a video for video loading time will be very helpful :)
@krateskim4169 Жыл бұрын
That was amazing
@dotjs5025 Жыл бұрын
Simply amazing explanation
@user-fed-yum Жыл бұрын
So impressed with your skills, every single piece of content you produce. Just a heads up, that addEventListener will leak memory. Simplest fix would be to add an option argument with once:true.
@cookieman.19 Жыл бұрын
Is that the third argument?
@user-fed-yum Жыл бұрын
@@cookieman.19 Yes, add { once: true } for the third argument 👍
@BloodyScythe666 Жыл бұрын
nice video! one thing I'd have done differently is, if you're using javascript anyways, I'd have set the small image style in the script itself too, to have the DOM be less cluttered
@SenselessUsername Жыл бұрын
Also to make the no-scripts users see the actual picture eventually...
@MrTomyCJ Жыл бұрын
I really don't see how blurry jpegs are nice looking, they are even quite horrible imo, but the idea and technique as a whole is for sure nice and useful.
@WadieGamer Жыл бұрын
Welcome back
@avivperets73609 ай бұрын
Thanks again man! can you made also one video about file types? webp and avif versus jpeg also svg can be nice
@ItsThePirate Жыл бұрын
You have the best tutorials out there. I also notice you shake your head sideways alot when talking.
@GergelyCsermely Жыл бұрын
Thanks!
@goodluckoriuwa1669 Жыл бұрын
This is good to know.... But one more thing... Can you show how to implement this feature in react front end application???
@sissipwns5 ай бұрын
It is important to mention that images that have the attribute loading="lazy" but are not loaded yet are not available on the print layout! If the print layout is important, a lazy loading method using IntersectionObserver would be the better option.
@javascript_developer Жыл бұрын
nice tricks to load images thanks for sharing.
@berkaybakacak Жыл бұрын
You are a savior :D
@errorerror1337 Жыл бұрын
Love this man, awesome video! Can you please do a vid on requestAnimationFrame()?
@rabihmaroun225 Жыл бұрын
Very useful. King.
@blikardo9 ай бұрын
Great video as usual. What do you think of the use of 'skeletons' while loading stuff. Is it any better than having to have multiples files of the same image but sized down?
@faresanalissyahad4468 Жыл бұрын
love the content
@reyzonchhetri301 Жыл бұрын
How to do it dynamically fetching from backend
@HuynhLuong227 Жыл бұрын
Thank you
@debugpro Жыл бұрын
thats what i want thanks very much i had same porblem in my real portfolio
@Booyamakashi Жыл бұрын
Thanks, ill just use progressive jpegs.
@Chalisque Жыл бұрын
What is the right way to ensure that the placeholder div is the same size the image will be, once loaded, to avoid jerky reflow issues.
@boomshakalaka656 Жыл бұрын
1:45 the images are 755B and are taking forever to load ??
@vuongqtvn Жыл бұрын
😍 nice sir
@kantikuijk7239 Жыл бұрын
Is there a reason to use ffmpeg over imagemagick? I was under the impression that ffmpeg is tailored for videos, and imagemagick for pictures.
@black_platypus Жыл бұрын
No, he says as much (something like "there are tons of ways, use what ever you want") I'm guessing he just had a good workflow set up for ffmpeg that he was familiar with, so he threw the images at it because he could :P
@nailalzuhairi2690 Жыл бұрын
Where is the Video you mentioned at the end ?
@qiliu51697 ай бұрын
Hello, when using small image in background url , it can't be load lazy, so there maybe a lot of requests, how can load background image lazy?
@mrnabby4178 Жыл бұрын
wow no library or framework. You are awesome man.
@RPSchu Жыл бұрын
Ey bruh at 15:41 I am not seeing the card for the suggested video.
@RehctubNomis Жыл бұрын
My fingers were hovering over the keys to scream "what about responsive images?" and at the last moment you linked it in = ) What about webp though = p
@draftermyself Жыл бұрын
Cool! 👍
@anajafriday Жыл бұрын
what if we want to optimize video for lazy loading ,did you have any video on that
@erkinjonholikov37078 ай бұрын
Where you take small image for every original image???
@allenzhao5216 Жыл бұрын
The issue with this puts more load on the user and the server. You're loading multiple images at the end of the day. I would love to see if there could be a version where it automatically downscales itself, and builds upon itself. Great video!
@cool_scatter Жыл бұрын
The "load" of a
@abdelrahman6319 Жыл бұрын
Use Ctrl + Alt + Down / Up to get multiple cursors as he did in the video
@freeguy2418 Жыл бұрын
How can we do the same if we don't have low-res image version which we get from an API?