How To Create An Animated Image Carousel With CSS/JavaScript

Поділитися
Вставка
  • Опубліковано 29 лис 2024

КОМЕНТАРІ • 236

  • @tharunrajoptimus5229
    @tharunrajoptimus5229 3 роки тому +54

    You never fail to amaze me. I was watching random stuff and saw this coming. Watched this and I'm sure I won't regret wasting the entire day. Nice video mate.

  • @Free_Bird78
    @Free_Bird78 2 роки тому +10

    the fact that you literally don't stop to explain for a bit amaze me. how can you keep explaining without hesitating

    • @go_sh4627
      @go_sh4627 7 місяців тому

      🤣😂🤣

  • @bader6409
    @bader6409 2 місяці тому +1

    It's crazy how quickly you're not only able to describe but quickly code what's needed to be coded (obviously you may have practiced this before) but you teach well, thanks for this.

  • @korokiri8575
    @korokiri8575 3 роки тому +12

    hi just found your channel, and just wanted to put it here
    i've been a front end engineer for the past 2-3 years and i found many little things that i newly learn from the way you write the animation Its amazing ! keep it up

  • @tumbler9428
    @tumbler9428 3 роки тому +11

    Wow... the javascript part would have taken me HOURS. So elegant.

  • @flyinoctopus
    @flyinoctopus 3 роки тому +17

    Another brilliant tutorial, Kyle. I really appreciate you!
    With your help, I feel like I can truly become a web developer :)

  • @chinmayghule8272
    @chinmayghule8272 2 роки тому +2

    I spent the whole evening creating a carousel that isn't even accessible, but he did it so easily. The part I particularly found difficult was to keep the carousel responsive and make sure it looks good on all sizes.

  • @osamapervezriar387
    @osamapervezriar387 Рік тому

    I give Kyle's videos a thumbs up right after the window opens, and then i watch the video after. quality work bro. Thanks

  • @kakakakaka7955
    @kakakakaka7955 Рік тому +2

    funny how you've mentioned that the CSS might have been difficult here, yet the only part that I struggled to fully understand was the JS script :D Thanks, very informative video!

  • @cocoyana
    @cocoyana 2 роки тому

    这老哥写得可以,最近在准备亚麻前端的面试,image carousel是常考mini app。如果你也再找类似的solution的话,这个老哥推荐,不要找2021年以前的video了,并不是说BEM写法不好,太繁琐了,这个老哥的coding style很棒,逻辑也很清楚,说得也通俗简单,我没开字幕都全部跟下来了。 This bro did a pretty fantastic job! I have been preparing for the amazon FTE interview recently, and the image carousel is a frequently asked question. If you are also looking for a solution to prepare the interview, don't look up the video earlier than 2021, I mean I watched a couple of videos using the BEM method to name the class, that's a good and popular method developer used before whatever in USA or China, but I think it's too redundant. This bro's coding style is pretty good and his logic is great and explains everything in a concise way. I didn't turn on the English subtitle and can follow up on every step with him.

  • @bobdinitto
    @bobdinitto 3 роки тому +5

    I enjoyed this and learned a lot but I'll have to watch at least seven more times to absorb it all. CSS selectors are my weak point so I'm always interested in learning new selector tricks.

  • @thomasulatowski3012
    @thomasulatowski3012 3 роки тому +6

    So concise. A really great example. I learned a lot. Thanks Web Dev SIMPLIFIED!

  • @dhanlitozi184
    @dhanlitozi184 2 роки тому

    you make something that took me a whole day to make and doing it while talking. that's awesome.

  • @chiptaylor1124
    @chiptaylor1124 3 роки тому +6

    I learned a lot from this video Kyle. Thank you for all the excellent content you create.

  • @mykalimba
    @mykalimba 3 роки тому +27

    8:20 I'd be interested in seeing a video/article that elaborates on this. I don't see how working with attributes instead of classes makes working with JavaScript any easier. If anything, it seems like it'd take more effort to do the same thing when using data attributes (e.g. typing attribute "data-blerg" vs. class name "blerg", querySelectorAll('[data-blerg]') vs. querySelectorAll('.blerg'), etc.). Any class name collisions (I think that's what you mean by the term "overlap"?) are avoided by having a good HTML/CSS design ahead of time.

    • @ShawnRitch
      @ShawnRitch 3 роки тому +6

      Now that is funny... I was thinking exactly the same thing - except, I prefer using IDs as they differentiate the use of JS from CSS being used. However, this was still a great video to watch. Kyle does a wonderful job making these for us. :D

    • @lovefashro
      @lovefashro 3 роки тому +2

      @@ShawnRitch Classes are better as you might have multiple carrousels on the page

    • @justindion4394
      @justindion4394 3 роки тому

      @@lovefashro I think you could run into the same problem and you end up with data-carousel-button-2 and on

    • @lovefashro
      @lovefashro 3 роки тому

      @@justindion4394 i was refering to using classes over ids

    • @robwatson826
      @robwatson826 3 роки тому +1

      One good reason is future maintainability - if you come back to this code in the future and see loads of class names, you could easily be fooled into thinking you have CSS rules to go along with it. Also, a class like “active” is fairly common and could easily overlap with other display styles you have created which could cause odd rendering issues

  • @michelaveline
    @michelaveline 3 роки тому

    In Portuguese I would say... "Tu é o cara!!" Once again and again.... thank you.

  • @robertobellotti5941
    @robertobellotti5941 2 роки тому +18

    Something that confused me for a moment was how in the html we are adding attributes such as "data-active" or "data-carousel-button", yet in the javascript we are referencing those attributes with the syntax "element.dataset.active" or "element.dataset.carouselButton". I was trying to figure out where the camelCased version of carouselButton came from, but it simply gets translated that way anytime you use "data-something" in the html tag, it will be referenced as element.dataset.something. And apparently if you used multiple dashed words like "data-some-thing-else" then it can be referenced as "element.dataset.someThingElse". Ok sure, though I'd recommend using camelCase in your html tags instead for better clarity. For example and will both be referenced as "element.dataset.someThingElse" in the javascript, so might as well use the camelCase in the html too

    • @adaravaks
      @adaravaks Рік тому +3

      Thank you very much, I was questioning the same thing

    • @TLPLounge
      @TLPLounge Рік тому +2

      its in the html documentation that element.dataset-any-thing converts to anyThing if youre gonna reference it in JS

  • @pazispeace
    @pazispeace 2 роки тому

    that code looks fancy!
    you explain so well that it is easy to understand what you are doing!

  • @miguelgra92
    @miguelgra92 2 роки тому +1

    This was a huge help, even learned a few new concepts! Thanks Bruv!

  • @michaelparkernorton4841
    @michaelparkernorton4841 Рік тому

    Thanks this is going to help a lot as I work to complete my homework assignment for Web Dev Fundamentals II at BYUI this week!

  • @aleksd286
    @aleksd286 2 роки тому

    Finally Kyle using proper HTML semantics :D

  • @matthewharting3390
    @matthewharting3390 Рік тому +1

    Is there a reason why you did not put the carousel buttons below the instead of on top? If they were placed below then there would be no need for z-index which can end up overlapping drop-down menus.
    Great video though, I will forever use this carousel. Thank you!

  • @FilledStacks
    @FilledStacks 2 роки тому

    Great tutorial.
    Great tutorial. Thanks for the clarity in the explanation and adding the additional details that might otherwise go un-noticed.

  • @nadavbensimon1267
    @nadavbensimon1267 2 роки тому

    thanks man i am hoping to be a dev one day.its those types of videos that keep encourge me to cods.keep the good work

  • @BBStub3
    @BBStub3 3 роки тому +1

    Very nice, you make it look so easy.
    If I'll ever make a carousel in 15 min. I'll be awesome,... More awesome then I already am.

  • @BagelsAfterMidnight
    @BagelsAfterMidnight Рік тому

    This was a lifesaver. Thank you!

  • @axelpaillaud7542
    @axelpaillaud7542 Рік тому

    It was amazing, and so much simple than some other carousel tutorials, thanks you very much !

  • @aleeizhere
    @aleeizhere 3 роки тому

    this guy has names his channel so honestly.

  • @MeezanTheFairBloke
    @MeezanTheFairBloke 3 роки тому

    The way you operated that JS made my head spin :D Great vid though, one of these day I am going to understand exactly what is going on here...

  • @hjetwd
    @hjetwd 3 роки тому +2

    nice work!
    p.s. replace all :focus to :focus-visible

    • @hjetwd
      @hjetwd 3 роки тому +2

      ​@@Steel0079 :focus adds an outline when you click with the mouse or tap with your finger. Outline is only needed for navigation when pressing the Tab key. To do this, they came up with :focus-visible - the state only when focusing from the keyboard.

  • @Wilespro1
    @Wilespro1 2 роки тому

    beautiful way of creating a carousel. Thanks!

  • @jacegarth
    @jacegarth 4 місяці тому

    Hi, just found your video here (never seen any of your videos before). 1:18 into the view, paused, subscribed. I can see this is going to be useful...

  • @koka-on6dt
    @koka-on6dt 3 роки тому

    Your video always useful to me! I just struggled with how to solve the issues of vanilla js and css carousel. Thank you Kyle.

  • @akodamathe
    @akodamathe Рік тому

    Clean, easy to understand, that's what I needed. Thanks a lot!

  • @alexisgarai296
    @alexisgarai296 2 роки тому

    so cool dude, this is exactly the type of learning support I needed - thanks

  • @inteJarKilaboma
    @inteJarKilaboma Рік тому

    Man you are my hero.......so smart. I salute you

  • @yyk9881
    @yyk9881 2 роки тому

    This man is the Best! I think Kyle is a genius. 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍

  • @rework7562
    @rework7562 Рік тому

    In this video you use the spread operator on the array (script.js => line 11). I would love to see a more in depth video on this topic because I can't figure out how it actually works in a case like this.

  • @doomguy2135
    @doomguy2135 3 роки тому +1

    cant wait to try this with react

  • @ban_droid
    @ban_droid 3 роки тому +6

    Please make something like this but with swipe gesture too

    • @frankthedsigner558
      @frankthedsigner558 3 роки тому

      Second that, a quick swiping tut would be a good follow-up video. Love your content!

  • @nicholaslewis279
    @nicholaslewis279 2 роки тому

    The JS part was crazy as hell. I was with you until that very moment (probably because that was my very first time typing JS) lmao
    Still managed to do it though with minimal pauses :D

  • @carlosz1858
    @carlosz1858 2 роки тому

    thanks dude, that helped me a lot, greetings from colombia :) have a nice day

  • @prsmahajan
    @prsmahajan 3 роки тому +1

    That ahen moment felt because of Kyle Cook😍👊

  • @mykalimba
    @mykalimba 3 роки тому +11

    11:35 In instances where your offset is always small-ish, these two checks can be replaced with a single calculation:
    newIndex = (newIndex + slides.children.length) % slides.children.length;
    (This assumes there is at least one slide in the carousel.)

  • @briangrover1625
    @briangrover1625 2 роки тому +1

    Fantastic tutorial. Thank you!

  • @Al-no2fm
    @Al-no2fm 3 роки тому

    Perfect little project for fe devs

  • @amniar8158
    @amniar8158 2 роки тому

    thanks man never give up

  • @andriiauziak1178
    @andriiauziak1178 3 роки тому

    amazingness in simplicity

  • @guyfawkes6930
    @guyfawkes6930 3 роки тому +1

    That's exactly what i need man ❤️❤️❤️

  • @argylleagen
    @argylleagen Рік тому

    Recently found out your channel and I am mesmerised by your work and skillset. Not to mention, quite jealous! Keep going Kyle, you have yourself a sub

  • @promohican8222
    @promohican8222 3 роки тому

    You're working so fast damn

  • @_werther
    @_werther 2 роки тому

    Always love your way man, congrats

  • @ajaymishra1511
    @ajaymishra1511 Рік тому

    Katar patar katar patar and boom 💥
    Image carousel ready

  • @bonnes04
    @bonnes04 2 роки тому

    you make it look so simple

  • @Chuksteve-Live
    @Chuksteve-Live 2 роки тому

    Thank you very much for this lecture. I have just be able to execute a project with it.

  • @vendettamalize7209
    @vendettamalize7209 2 роки тому

    nvermind i kept clicking left anyways it worked
    thanks ILOVEU

  • @andikabeatbox
    @andikabeatbox 8 днів тому

    thank you bro, you are awesome! nice tutorials

  • @pietrot90
    @pietrot90 Рік тому

    thank you! your tutorials are just amazing!!

  • @santoshkadam8431
    @santoshkadam8431 Рік тому

    Honestly overall designing carousel similar to what you did is not big think. Bu t I am simply amazed with the speed.

  • @yicongshi
    @yicongshi 11 днів тому

    thank you very much! learn a lot step by step!

  • @gustavocastro4697
    @gustavocastro4697 2 роки тому

    Helps me a lot, thanks, i appreciate your content a lot!!!

  • @jawndice
    @jawndice 2 роки тому +1

    You make it look so easy. May I ask how long have you been coding for?

  • @Liquidian
    @Liquidian 2 роки тому

    Thanks, this was educational and practical.

  • @MusicIsLifeFM
    @MusicIsLifeFM 3 роки тому +2

    Excellent thank you!

  • @PiccolosDaughter
    @PiccolosDaughter 2 роки тому

    "position this ab-so-lutely" *giggles to self*

  • @StaridasGeography
    @StaridasGeography 3 роки тому +1

    Awesome! How about making a part two, where images are loaded from json via the fetch promise? 😉😉

  • @nikhil6842
    @nikhil6842 2 роки тому

    I've seen lots of tutorials but no one came close this.

  • @Aalok464
    @Aalok464 3 роки тому

    I was just going to see some new videos of you and you uploaded one video

  • @maheshsangam6212
    @maheshsangam6212 Рік тому +1

    this carousel changing image once you click on arrow but is it possible to change it automatically and also work with arrow buttons... i mean slider will move images automatically :)

  • @keinan7667
    @keinan7667 Рік тому +2

    How might you make this slider automatically activate every a few seconds, in addition to using these buttons? - Thanks for the videos!

  • @burgasHoH
    @burgasHoH 3 роки тому

    Great stuff man !

  • @Mrabdulazizbidani07
    @Mrabdulazizbidani07 3 роки тому

    Perfect this what I was looking for🥰👍🏼

  • @TheMetalMag
    @TheMetalMag 2 роки тому

    Wow u kicked my ass, so much knowledge. Thank you!

  • @JasonKuffler
    @JasonKuffler Рік тому

    Awesome sauce! Thanks :D

  • @ajlebeau
    @ajlebeau Рік тому

    You are undoubtably a rock star! But who is this code "simplified" for exactly? Who is your target audience? I'm a beginner and it's really hard to follow. Regardless, I've learned so much from you. Thank YOU!

  • @RebelCoderX
    @RebelCoderX День тому

    That's cool. But I was looking for a way to drag it.. Because I need to build a control which I need to be able to drag vertically.. Not like a input type=range though.. Because I need other (not draggable) stuff to be connected to it.. So I need to know the screen position.. I think.. I'm kinda new at this stuff.. I managed to drag divs before.. But now I need to contrain the dragging to horizontal and be able to drop it anywhere within a certain range.

  • @dvas6602
    @dvas6602 5 днів тому

    Hi there, I tried this approach in one project where the carousel was contained inside a article and was only a part of the page. One difficulty I came across was that the image overflowed its container (it's height) even though the container dimensions of the article were defined and the img dimensions were set as in the video. This was resolved as width and height of all HTML hierarchy levels were set to 100%, and then the container dimensions were acknowledged. Could someone please explain why the first (video) approach didn't work?

  • @noxagen
    @noxagen 2 роки тому

    thanks for another lesson bro

  • @bergjoel93
    @bergjoel93 6 місяців тому

    When doing a querySelector for an element you want to interact with or that might have an event listener, is it common practice to use an attribute to select it instead of a class or ID?

  • @TheToocool4all
    @TheToocool4all 8 місяців тому

    Great tutorial.

  • @kadirgurcan2847
    @kadirgurcan2847 2 роки тому +1

    I'm getting this error: "script.js:3 Uncaught TypeError: Cannot read properties of null (reading 'forEach')
    at script.js:3:8", how to fix that?
    It's in this part:
    button.forEach(button => {
    button.addEventListener("click", () => {
    const offset = button.dataset.carouselButton === "next" ? 1 : -1
    const slides = button
    .closest("[data-carousel]")
    .querySelector("[data-slides]")

  • @yunalee6221
    @yunalee6221 2 роки тому

    You're the best!!!Thank you :)

  • @chapidi99
    @chapidi99 Рік тому +1

    I followed your video and developed code, I don't understand why I am not able to slide the photos. I can only see the first image. SOmething wrong with the Js

  • @mrmrsnobody7662
    @mrmrsnobody7662 Рік тому

    Thanks for this video

  • @jorgemeza4364
    @jorgemeza4364 2 роки тому

    You rock man

  • @codedusting
    @codedusting Рік тому

    How is this accessible? Does it work with keyboard only? If I have content within with links, can I select it only for active slide?

  • @subramanibala1988
    @subramanibala1988 2 роки тому

    Hi Kyle,
    Why you are using data attribute? Can you please explain why we are not using CSS class name?

  • @Satishkumar-rx7oy
    @Satishkumar-rx7oy 2 роки тому

    very helpful tutorial

  • @techniquejoseph
    @techniquejoseph Рік тому

    Thank You Sir!

  • @brendensong8000
    @brendensong8000 Рік тому

    So simple, but very effective!!! love your videos!

  • @BoatLoad-o5z
    @BoatLoad-o5z 2 роки тому

    I've created a working carousel but the fade in and fade out effect don't work when the carousel buttons are clicked . The CSS is exactly the same as what's shown in this tutorial but the markups and Javascripts are a bit different. In my Carousel DIV the UL element only contains two list-items, images in both list-items are given an initial SRC values, and one of the list-items has the data-active property.
    When the Carousel buttons are clicked the data-active property is removed from one list-item and it is assigned to the other list-item. The SRC value of the image inside of the list-item which previously had the data-active property will remain the same but image inside of the list-item which now has the data-active property will be assigned a new SRC value from an array of SRC values. I don't know if the fact that my carousel doesn't have preloaded images is causing the fade in fade out effect to not work.

  • @VoXelHDCom
    @VoXelHDCom Рік тому

    Hey, how can i put text on each image and a button for like a store?

  • @omega.developer
    @omega.developer 3 роки тому

    This is super cool

  • @realestatehomerunspodcast6047

    Great video! I love the video features. Which video editor do you use?

  • @paleolithix7324
    @paleolithix7324 3 роки тому +1

    Hello! I really enjoyed this tutorial but even if I copy your exact codes, my Javascript file isn't linking with my HTML file. Im currently using VSC, could you please help me?

  • @mohdgulzar5178
    @mohdgulzar5178 Рік тому +1

    How can i make images automatic change

  • @irfansaputra5744
    @irfansaputra5744 2 роки тому +1

    How do you make this slides automatically every a few seconds?

  • @rameenana
    @rameenana Рік тому

    Thanks man. Very useful video.
    How can we add auto slide to this?

  • @pradnyeshmali4207
    @pradnyeshmali4207 2 роки тому

    Actually doing position absolute on .slide class bring all bottom elements on top of the carousel how to avoid this?

  • @sivaprakash_prabakaran
    @sivaprakash_prabakaran Рік тому

    how to make the images slides automatically after certain seconds, instead of using buttons?