How To Build Sortable Drag & Drop With Vanilla Javascript

Поделиться
HTML-код
  • Опубликовано: 16 мар 2020
  • 🚨 IMPORTANT:
    1 Year Free Hosting: www.atlantic.net/webdevsimpli...
    Use code KYLE for an additional $50
    Drag and drop is something that nearly every web application needs, but it can be tricky to build from scratch. That is why in this video I will be showing you exactly how to build a sortable drag and drop list with very little JavaScript.
    📚 Materials/References:
    GitHub Code: github.com/WebDevSimplified/D...
    CodePen Code: codepen.io/WebDevSimplified/p...
    Reduce Tutorial: • 8 Must Know JavaScript...
    🧠 Concepts Covered:
    - HTML drag and drop attributes
    - JavaScript drag and drop events
    - JavaScript reduce function
    🌎 Find Me Here:
    My Blog: blog.webdevsimplified.com
    My Courses: courses.webdevsimplified.com
    Patreon: / webdevsimplified
    Twitter: / devsimplified
    Discord: / discord
    GitHub: github.com/WebDevSimplified
    CodePen: codepen.io/WebDevSimplified
    #DragAndDrop #WDS #JavaScript

Комментарии • 391

  • @vaibhavyadav8726
    @vaibhavyadav8726 3 года назад +60

    In the end Kyle said, and that's all there is to creating this "SIMPLE"...

  • @cjaym5671
    @cjaym5671 4 года назад +26

    I've learned so much more from your tutorials. I would recommend for someone like me that is learning Javascript. I've been thru so many tutorials in the last few months but it makes more sense when I watch your videos. Thanks!!!

  • @beinyourguard
    @beinyourguard 4 года назад +97

    you are a very smart programmer, i hope to be like you someday

  • @basroos_snafu
    @basroos_snafu 4 года назад +6

    Man, your videos are so inspiring. My server side is still classic ASP and I should upgrade to some new language, but your client-side applications are still usable in my situation, and I will definitely implement some of the solutions you provide. I've always managed to solve problems by just using Google and find what's available on the web, but what you teach is complete and solid. Thank you so much for all the effort, although I know it's fun to make. Keep up the good work!

  • @moominjuice2
    @moominjuice2 Год назад

    Beautifully explained and a far more versatile, functional and more succinct code than some of the other tutorials out there. Excellent stuff. Glad I found this channel and really grateful for you sharing on Git.👍

  • @Yousifalzoubi
    @Yousifalzoubi 2 года назад +1

    Amazingly simplified explanation! Your channel is now officially my number one go-to for vanilla JavaScript tutorials.

  • @maskman4821
    @maskman4821 4 года назад +34

    This is the tutorial I've been waiting for, this is apparently the best drag-and-drop vanilla js tutorial for sure. I have learned a lot. for people who don't want to go deep on technical part, there are a few libraries that simplify the work. But understand how drag and drop works under the hood make developing work more flexible and free. But for people who just want to quickly get started and apply drag-and-drop into their projects then 3rd-party libraries do the work. Anyhow, thank you Mr. Kyle Cook for this tutorial, you seem to know what everybody needs and wants, impressive, amazing and awesome !!!

    • @vinisha7796
      @vinisha7796 Год назад +1

      what libaries can you use for drag and drop?

  • @mouseclicker4955
    @mouseclicker4955 2 года назад +44

    The math was a little difficult for me to understand at first, so I changed the formula a little.
    Since the y-position increases as you drag the mouse down, I set the offset = y - (box.top + box.height / 2). Since the top of the box's y-coordinate is given to us, all we need to do is add half of the box's height to it and it finds the middle for us. I understand most people might have understood the original equation, but I just wanted to add this here in case anyone was confused.

    • @user-lc8yw4mk6l
      @user-lc8yw4mk6l 2 года назад +1

      the formula is eventually the same, but your explanation is more intuitive. Thanks a lot!

    • @RobertFletcherOBE
      @RobertFletcherOBE Год назад +9

      That's because it's needlessly complicated for such a simple problem. just get the element your hovering over using document.elementFromPoint(e.clientX, e.clientY) then check if your mouse is in the upper or lower half of the elements rect. Its the only part of an otherwise good tutorial that just seemed to be there for the sake of looking fancy

    • @AndrewTSq
      @AndrewTSq Год назад

      @@RobertFletcherOBE I've been doing HTML for 2 years, and its first time I hear about this function :D This makes lots of thing way easier. Thanks!.

    • @AndrewTSq
      @AndrewTSq Год назад +1

      @@RobertFletcherOBE i have tried this now, but the problem is when you drag an element and your poinyer is between 2 elements, then it defaults to last in the list, until you go over an element. So it looks kind of bad

    • @keremardcl6759
      @keremardcl6759 Год назад

      @@AndrewTSq this is not HTML though :)

  • @LawnCrack
    @LawnCrack 3 года назад

    I don't think I've ever commented on your channel Kyle. Just wanted to say, YOU ARE THE MAN! Love your content. It's all over my head. Exactly what I need!

  • @OnlineTutorialsYT
    @OnlineTutorialsYT 4 года назад +111

    Nice...I need something like this for my next video.....Thanks bro...
    your videos are really awesome...Keep it up

    • @dev10shah
      @dev10shah 3 года назад +2

      Wow , Best tutorial teacher

    • @codingwithkenny6492
      @codingwithkenny6492 3 года назад +3

      @Online Tutorials

    • @jansanchez
      @jansanchez 3 года назад

      Nice tutorials you're doing

    • @kenkioqqo
      @kenkioqqo 2 года назад +1

      Hey Online Tutorials, were you able to make a video tutorial with what you've learned here? As a beginner, I would love to see how other creators are teaching this concept from their own perspectives...

    • @The-Dev-Ninja
      @The-Dev-Ninja 2 года назад +2

      @@codingwithkenny6492 hi kenny!

  • @sebby007
    @sebby007 5 месяцев назад +1

    Now that is a high quality, no nonsense video! I thought vanilla JS was just a pain but you presented this incredibly well and made is simple to follow! Love it.

  • @rostyslav5334
    @rostyslav5334 4 года назад +7

    That's the thing I was requesting long long time ago, thank You, good job!

  • @donaldbradbury1100
    @donaldbradbury1100 3 года назад +1

    Thanks for this tutorial. I watched another that also used other events and now I will have to see why the differences. When I incorporate this in my electron/node project, then I will have learned. Thank you so much.

  • @dimitrispolitis9393
    @dimitrispolitis9393 3 года назад +10

    We can also listen for drag events globally with event delegation since the only thing that can move around is the tags.
    document.addEventListener('dragstart', (e) => {
    e.target.classList.add('dragging');
    })
    document.addEventListener('dragend', (e) => {
    e.target.classList.remove('dragging');
    })

  • @mikerainey4144
    @mikerainey4144 3 месяца назад

    Brilliant, just what I needed. Your explanation and examples were clear and easy to understand. I didn't just learn what code to copy, learned how and why it works. Thank you.

  • @abrar8133
    @abrar8133 3 года назад

    I'm not exaggerating but you have the best channel! I watched so many javascript videos but most of them don't go into clear details just like you do.. THANK YOU

  • @imraff
    @imraff 2 года назад

    Really amazingly well explained and easy to follow, will definitely be using this in a project at work soon and i was DAUNTING it, thinking it would be super complex/rely on a framework I'm not familiar with but you really broke it down super easily. Can't wait to play with and maybe add x coord too! Thanks again.

  • @flyinoctopus
    @flyinoctopus 2 года назад

    Outstanding tutorial as always, Kyle. I don't know what I'd do without you!

  • @YinPT
    @YinPT 3 года назад +1

    You explain things in a simple and clear way. Thank you!

  • @xKond3i
    @xKond3i 2 года назад +1

    This man knows, what he's doing.
    Love those explaining videos.
    Thanks! 😎

  • @aoisonne1461
    @aoisonne1461 Год назад

    Been trying to set up drag and drop in my angular app. Using the offset for determining placement was exactly the hint I was looking for, thanks.

  • @jdholwick
    @jdholwick 2 года назад

    This video really helped me out with a feature I was trying to add to a senior CS university project, so thank you very much!

  • @MrJoey5
    @MrJoey5 2 месяца назад

    Damn brother, the way you verbalize as you go, even though you're watching on second screen a finished product, is still amazing.

  • @SOUVIK_RAY_
    @SOUVIK_RAY_ 3 года назад +1

    This is an awesome tutorial. You have explained really well. It was very easy to implement it in my code with a slight variation.

  • @user-oh5uh4vq4r
    @user-oh5uh4vq4r Год назад

    Thank you so much! I've been trying to get my drag and drop to work for hours and this video showed me how.

  • @ondrejexner3688
    @ondrejexner3688 2 года назад

    This was just awesome. Great work Kyle!

  • @edenmaimon6983
    @edenmaimon6983 Год назад

    Thank you! It was very complicated for me, but you explained it excellently!
    Starting to follow your channel.

  • @nclsDesign
    @nclsDesign 3 года назад

    This got randomly recommended to me and I need exactly this later for my current project. Perfect!

  • @GabrielCrowe
    @GabrielCrowe 4 года назад

    This tutorial was wonderful, please keep making these.

  • @ahlbf7
    @ahlbf7 3 года назад

    I`ve put some of my time on C# for the backend, and now I`m strugling with the front-end. Thanks for the video.

  • @LucasGoulart
    @LucasGoulart 2 года назад

    Man, thats 22 minutes just salved my life! Thank you so much!

  • @sanghvian
    @sanghvian 3 года назад

    Amazing tutorial. Like always, learned a lot. Thanks a lot Kyle !

  • @anthonylewis3789
    @anthonylewis3789 3 года назад

    Love your work, I can honestly say I learn a lot from you

  • @theresacampbell9084
    @theresacampbell9084 2 года назад

    Your job truly is simplifying the web 👌🏾

  • @rshum85
    @rshum85 7 месяцев назад

    This helped out with my project, thanks so much!

  • @mykalimba
    @mykalimba 4 года назад

    Such a cool effect and you make it look easy!

  • @mala235813
    @mala235813 2 года назад

    Perfect tutorial. Big thanks! Just what I needed.

  • @mdzafrullahsarafat1409
    @mdzafrullahsarafat1409 3 года назад

    Great tutorial. I Always learn new things when I watch your tutorial.

  • @hudstone4732
    @hudstone4732 2 года назад

    im in internship and you just saved my life. You are a true hero

  • @brian1801
    @brian1801 3 года назад

    Quite simply -- YOU ROCK! Great content. Even better presentation. Thanks for making such an awesome video.

  • @mutaherraza9635
    @mutaherraza9635 Год назад

    Awesome explanation. Exactly what I wanted to learn. Thanks a lot!

  • @akhmedbejli8657
    @akhmedbejli8657 4 года назад +3

    I was currently working on my own version of trello and this is a great help.
    Thank you so much.
    Everyone salute for him!

    • @meerule
      @meerule 3 года назад

      what happened to ur trello project? still working or dropped?

    • @akhmedbejli8657
      @akhmedbejli8657 3 года назад

      @@meerule I lost motivation. I also gotta do a lot besides this one. So I hope I will make this someday

  • @almadev183
    @almadev183 2 года назад

    Thank you so much... Very useful, I applied an addapted version to my project. Very well explained, definitely I will watch more of your videos.

  • @milanradinovic6770
    @milanradinovic6770 4 года назад +2

    Thank you so much for this tutorials. I have learned so much from you. You gave me the inspiration to learn web development.

  • @life8261
    @life8261 Год назад

    Great! This helps me so much with my study. You do a wonderful job! :)

  • @troyjenkins7189
    @troyjenkins7189 3 года назад

    Great video, man! Really loved it!

  • @Fooljuice
    @Fooljuice 2 года назад

    This was really helpful. Thanks Kyle.

  • @orashusedmund7675
    @orashusedmund7675 4 месяца назад

    thank you Kyle, great video, helped me finish a task. 😇

  • @lionelshaghlil1754
    @lionelshaghlil1754 6 месяцев назад

    That was professional. Very well and clearly explained, Thank you indeed ,

  • @Opyext
    @Opyext 4 года назад

    wow!!! your explanation is incredible, i have learnt a lot ,thanks

  • @hellelo.5840
    @hellelo.5840 4 года назад

    My favorite moment in this video is 15:42 .........Man that was very straight no stop...............................Great Content.

  • @ohad7
    @ohad7 3 года назад

    Brilliant video man !!
    Thank you for sharing

  • @zylascope
    @zylascope 3 года назад

    Thanks. That's awesome. A bit complicated for me but I'll get there. A very well explained tutorial.

  • @LOLmomentsandfails
    @LOLmomentsandfails 4 года назад +1

    Your videos helped me become a great developer, without going to school. I wanted to ask if you could do some more web security videos! Thank you!

  • @panagiotiskoligas9631
    @panagiotiskoligas9631 5 месяцев назад

    Kyle you are completely blowing our minds....

  • @user-cd2ls5rk9l
    @user-cd2ls5rk9l 2 года назад

    Super helpful. Man, you are awesome, I will watch other videos for sure

  • @abhijeetsingh1387
    @abhijeetsingh1387 4 года назад

    Thank you for this one! This is a really useful tool!

  • @Snoo29293
    @Snoo29293 3 года назад +2

    I had to watch it twice but I finally understood it.

  • @Yoghaaa
    @Yoghaaa Год назад

    Thank you, Kyle for the video.

  • @authenticnaturalnoises
    @authenticnaturalnoises 4 года назад

    Thanks man. You really create awesome content !!!

  • @keremardcl6759
    @keremardcl6759 Год назад +1

    holy moly this is a perfect tutorial. Now I need to figure out how to post the index of each element so as to change their priority level in my DB :)

    • @Adrian-aTak.19
      @Adrian-aTak.19 Год назад

      i think you can make a column in the db that specify the priority level

  • @macieq44
    @macieq44 Год назад

    Such a great video! Thank you!!

  • @Spirit529
    @Spirit529 3 года назад

    you saved my life brother, great content!

  • @m.sulemankhan3992
    @m.sulemankhan3992 3 года назад

    Thanks very simple explanation you saved my day

  • @nicholasdittmer4494
    @nicholasdittmer4494 2 года назад

    Brilliant mate! Thank you very much! Clever stuff. Better than the React libraries I tried and a real feather in the cap for my projects moving forward. Thank You

  • @omarbaldit1
    @omarbaldit1 3 года назад

    Excellent explanation. Thanks!

  • @emmanuelumana7491
    @emmanuelumana7491 3 года назад

    Amazing man! thanks for sharing!

  • @vishalanthony1529
    @vishalanthony1529 2 года назад

    Helped me alot in my To-do app.

  • @PankajVerma-zj4vr
    @PankajVerma-zj4vr 3 года назад

    You just saved my life ! thanks bro

  • @HandcartRule46
    @HandcartRule46 2 года назад

    Just what I was looking for. Great tutorial

  • @mohammedmahmoud1046
    @mohammedmahmoud1046 2 года назад

    Awesome tutorial, you are so smart . Thank you

  • @aarondz789
    @aarondz789 2 года назад

    I love your content.Thanks!

  • @DIEZ919191
    @DIEZ919191 4 года назад

    Wow! Just amazing tutorial!!!

  • @ratiabulashvili6491
    @ratiabulashvili6491 3 года назад

    Brooo, You are the best and Beast at the same time

  • @siarheilabetsik5658
    @siarheilabetsik5658 3 года назад

    Very good! Thanks for this video.

  • @ducdao7607
    @ducdao7607 4 года назад

    15:48 that was hilarious how you pulled that come back

  • @kaydrum9377
    @kaydrum9377 2 года назад

    I really like your videos!!👍

  • @budkin
    @budkin 3 года назад

    Fantastic explanation. Subbed.

  • @md.hasanmahmud1390
    @md.hasanmahmud1390 2 года назад

    Very Helpful bro
    🙂

  • @Azertuiopnbvcxwmlkjh
    @Azertuiopnbvcxwmlkjh 3 года назад

    Great content. I'm subscribing!

  • @didierjoomun
    @didierjoomun 3 года назад

    Great tutorial, thanks

  • @mr.c7411
    @mr.c7411 3 года назад

    Best drag and drop video

  • @bythealphabet
    @bythealphabet 2 года назад

    Good explanation thank you

  • @syedsmith2151
    @syedsmith2151 2 года назад

    Magic of drag and drop revealed with simple steps

  • @nove1398
    @nove1398 3 года назад

    THanks,. I was able to build on this as a base

  • @classicaf
    @classicaf 10 месяцев назад

    You are a literal GOAT

  • @tanyixuan4639
    @tanyixuan4639 2 года назад

    woah, thanks a lot. This video is easy to use.

  • @redpie907
    @redpie907 4 года назад

    I like your videos very usefull i love them it makes me try it :D and enjoy programming
    thank you

  • @pranjalsingh2207
    @pranjalsingh2207 3 года назад +4

    Awesome tutorial. I wanted to know how to extend this to 2d layout of draggables where we can't just use y coordinate

  • @kriskuiper4647
    @kriskuiper4647 4 года назад

    In one word, awesome

  • @apollossevere1071
    @apollossevere1071 Год назад

    This dude is a beast!!!

  • @BukkyOdunsi
    @BukkyOdunsi Год назад

    This is the only tutorial of yours that i find hard for me

  • @mangelozzi
    @mangelozzi Год назад

    Really nice video. Allowed me to implement drag/drop in my situation in 15mins. I optimized it by caching the element being dragged and draggables at dragstart so they are not recalculated every dragover event (which happens a lot). I also get the draggables with querySelectorAll('[draggable="true"]) instead of a new class.

  • @andresvillanueva9362
    @andresvillanueva9362 4 года назад

    Thx so much, u help me a lot!

  • @cyphi1
    @cyphi1 3 года назад

    I have an idea...don't think it'll be simple, but it should be doable with your help!! thanks for the video!!

  • @izyo8146
    @izyo8146 6 месяцев назад

    I think the main key of your videos is that you don't make a whole pretty and solid toturial to be copy pasted from, I literally wanted to learn that API's basics and that exactly what I got with a little be more tips like getting the rect info with that clientBounding function
    I'm going library-less approach on all of my personal projects as much as possible and wanted to implement this with my own react custom hook for my needs.
    Much thanks!!!

  • @jonathanmutala8179
    @jonathanmutala8179 Год назад

    Save my Day bro thx may God bless yu

  • @nameLastname786
    @nameLastname786 5 месяцев назад

    Thank you !

  • @atlicervantes6187
    @atlicervantes6187 2 года назад

    Quality video!

  • @marimuthur9456
    @marimuthur9456 Год назад

    your really incredible awesome thank you so much👌🏼👌🏼👌🏼👌🏼😊