No video

How To Build An Animated Hamburger Menu With Only CSS

  Рет қаралды 108,191

Web Dev Simplified

Web Dev Simplified

Күн бұрын

Пікірлер: 150
@beinyourguard
@beinyourguard Жыл бұрын
the thing I like about kyle is that he just doesn't go for like something ordinary. he takes something that is somewhat easy to do to a whole new level, bringing scalability to the code itself
@codedjango
@codedjango Жыл бұрын
That's some serious CSS skills...
@robmartin6159
@robmartin6159 Жыл бұрын
Awesome video. When the colors had to flip with focus-visible, the colors were hardcoded. If the colors in root were changed, the .hamburger-menu:has(input:checked) would use the old colors. I played around and discovered that in :root, a var defined can be used in another var. So I created a --light-color and --dark-color and used those for foreground and background. So changing those 2 vars will keep colors consistent. :root { --light-color: white; --dark-color: #333; --bar-width: 60px; --bar-height: 8px; --hamburger-gap: 6px; --foreground: var(--dark-color); --background: var(--light-color); --hamburger-margin: 8px; --animation-timing: 200ms; --hamburger-height: calc((var(--bar-height) * 3) + (var(--hamburger-gap) * 2)); } .hamburger-menu:has(input:checked) { --foreground: var(--light-color); --background: var(--dark-color); }
@felix-ve8jk
@felix-ve8jk Жыл бұрын
Great video, man! Still at the beginning of my coding, but I really liked this one using trigonometry. I'm coming from a machinist and machine programming background, and this was a really fun one for me.
@mariejoannaantoniadi227
@mariejoannaantoniadi227 Жыл бұрын
I love you for ever. The calc for the animation didn't work quite as expected when I changed the --bar-width but I worked around it. Perfect, Perfect, Perfect. Many thanks for that.
@ELMlKO
@ELMlKO Жыл бұрын
in this video Web Dev Simplified became Web Dev
@axelandru9346
@axelandru9346 9 ай бұрын
He is the CSS guy of the internet. Bless up Sir !
@issacjr01
@issacjr01 13 күн бұрын
Thank you, i was having trouble with the animations part and could not figure out what i was doing wrong :) !!
@noahr1545
@noahr1545 Жыл бұрын
This is great as always! Love your videos and your courses!!
@ozordiprince9405
@ozordiprince9405 Жыл бұрын
Funny you uploaded this. I was literally about to just implemennt something like this but had no idea how
@chriscentproductions6905
@chriscentproductions6905 7 ай бұрын
YESSS!!! I can finally remove some javascript lines with this 😆😆😆
@Caariin88
@Caariin88 7 ай бұрын
Great tutorial, i love how you also explain so anyone can understand what you are doing!
@anabeond
@anabeond Жыл бұрын
Great video! And the way you explained everything was so easy to follow, thanks a lot! You've got a new subscriber :)
@KennehGebra-cf9ds
@KennehGebra-cf9ds 6 ай бұрын
Thanks for making easy thing complicated
@Zeero3846
@Zeero3846 Жыл бұрын
Glad to know how the transform actually works finally. I implemented a CSS only button a while back, but I had to go through a lot of guessing to figure how it worked because CSS devs didn't believe in variables for the longest time, so most of the examples used pre-calculated numbers with no explanation, which was exacerbated by the fact that the animation wasn't symmetric either. Also, the has() selector (and I think also the transform style) wasn't around when I implemented my button, so I'll probably take a second look at that and see if my company is already using capable browsers.
@satisfymycuriosity
@satisfymycuriosity Жыл бұрын
Mad skills, respect
@MohamadOmar-oi3ur
@MohamadOmar-oi3ur Жыл бұрын
That's really awesome man!
@vincentdoerk3552
@vincentdoerk3552 Жыл бұрын
I can only say thank you! I learned so much by watching this video... superb content! god bless you and your fam!
@davidallred991
@davidallred991 Жыл бұрын
I recently had to do one of these for a front end mentor project. For me the actual hamburger menu was not very difficult, what was more complicated was working on the accessibility. Would love to see a video where this is done properly. Although you made a focus highlight on it, it is far from accessible for screen readers and needs a lot more work with aria-labels, changing aria-expanded status on open/close. etc. Would be great to see a video step by step with explanations on this because I found lots of videos on how to make the menu, but couldn't find many on making it properly accessible, so I am sure I didn't do it 100% correct.
@keylanoslokj1806
@keylanoslokj1806 Жыл бұрын
Accessibility>>> than just looks
@Fooney1
@Fooney1 Жыл бұрын
What % of users use a screen reader?
@nbbhaskar3294
@nbbhaskar3294 Жыл бұрын
​​@@Fooney1 in the USA, all public websites should comply with Americans with Disabilities Act, other wise you are exposing your business to potential law suites. So, you see it's not just about % of people using screen readers and other assistive technologies. I am not sure about other parts of the world though.
@Fooney1
@Fooney1 Жыл бұрын
@@nbbhaskar3294 I really doubt a US company has ever suffered a penalty under that act lol. In business it is about what % will use the thing you just paid for.
@Fooney1
@Fooney1 Жыл бұрын
@@nbbhaskar3294 I just looked into and surprising enough a law made in 1990 doesn't mention websites at all. That being said you could get sued in civil court but you cat get sued in civil court for anything. Laws and rights don't matter in civil court anyway so why bother?
@theisoj
@theisoj Жыл бұрын
Very great tutorial! Thanks Kyle!
@Dj7wiLLY
@Dj7wiLLY 9 ай бұрын
doesn't work, after I added the --x-width to .hamburger-menu::before and after, when I click on hamburger "icon", all the lines vanishes aside
@gauravvarma3645
@gauravvarma3645 Ай бұрын
I actually implemented this for work I was doing for a client, but the big issue here is that the checked state will persist after you click on the navigation links; the only way to reset the navigation menu is to use useState, or else it will stay stuck open when navigating which is not the best user experience. Interesting concept though!
@PeterPan3713
@PeterPan3713 Жыл бұрын
This is awesome! Thank you very much for sharing!
@yevseldev
@yevseldev Жыл бұрын
Thank you so much. You saved me my job.
@mariumbegum7325
@mariumbegum7325 Жыл бұрын
Very interesting tutorial - great work!
@astacey84
@astacey84 Жыл бұрын
This Is The Sidebar very subtle, good job
@MarkConstable
@MarkConstable Жыл бұрын
I got all excited about this, but it doesn't work with Firefox, probably because of "Pseudo-elements are also not valid selectors within :has() and pseudo-elements are not valid anchors for :has()." from MDN. Any workarounds... aside from don't use Firefox?
@ahmedbennani5401
@ahmedbennani5401 Жыл бұрын
You have to put the (input) element outside and before the (label) element, and try (input:checked + .hamburger-menu::after) and (input:checked + .hamburger-menu::after) selectors instead, but you will have to add a div for the middle line of the hamburger since the input element won't play that role anymore.
@joao-lucky
@joao-lucky 11 ай бұрын
great video, very simple and taught
@guillermomazzari8320
@guillermomazzari8320 2 ай бұрын
Thank you so much!
@cbennder3877
@cbennder3877 Жыл бұрын
Top, works very well, Thank you Kyle
@Tobi_Akin
@Tobi_Akin 10 күн бұрын
Thank you. I followed through but I was having issues with the animation and transitioning and i couldn't figure what the issue was
@ivn9119
@ivn9119 Жыл бұрын
you are the God of CSS .... great job 🙂
@olipaype
@olipaype Жыл бұрын
I learn a lot with this master class, but I tried to run on Chrome, Firefox, Edge, and Brave... in all works but firefox. Is there any compatibility with css selectors?
@SoulSovereignty
@SoulSovereignty Жыл бұрын
I think you forgot something. When someone selects a menu option, how do you make the menu disappear? If you are navigating to an entirely new page, then perhaps that "reset" is implicit. However, if you are simply scrolling downward to a section of the page...there needs to be a way to make the menu auto-disappear.
@Fooney1
@Fooney1 Жыл бұрын
Prefect timing.
@harshalmali856
@harshalmali856 10 ай бұрын
this is cool video bro thanks for it highly recomended to all to go through some modern web development
@Greediium
@Greediium Жыл бұрын
Broski's Your a vscode Demon, would it be possible for you to make a video or a cheatsheet on all the key combinations you use to code? Great tutorial! Hope you're having a nice day!
@medvedevleandro
@medvedevleandro Жыл бұрын
Thank you very much, Kyle.
@redaelgountari
@redaelgountari Жыл бұрын
thank you so much for this great video
@nikhilgupta6415
@nikhilgupta6415 4 ай бұрын
I'm a fan now
@deankinyua2365
@deankinyua2365 6 ай бұрын
This is genius bro
@eterr9000
@eterr9000 Жыл бұрын
It doesn't work on Firefox and Android chrome?
@Zeero3846
@Zeero3846 Жыл бұрын
So one thing I'm curious about is if the hamburger menu weren't up in the corner. What if it was below a header that could also change in size? Personally, I don't think it's ideal, but I may be stuck with it for the time being.
@Ossielmx
@Ossielmx Жыл бұрын
Thank's Kyle! ⛽ Creative code☕
@NOTHING-en2ue
@NOTHING-en2ue Жыл бұрын
you're great Kyle
@TRIC4pitator
@TRIC4pitator Жыл бұрын
omg , using a check box as an on off switch is so smart
@vuongal1658
@vuongal1658 Жыл бұрын
Thank you so much🤩🤩
@najmantube
@najmantube 8 ай бұрын
I used keyboard tabbing to focus the hamburger icon then pressed 'Enter': nothing happened. I then found out that in order to check a checkbox you have to press the spacebar instead. For screen readers you could put a message inside the label (e.g. Press the spacebar to open the menu) but keyboard users 1) don't necessarily use a screen reader, 2) aren't necessarily badly-sighted so how, other than having the same text printed on the screen, do we inform them of this unusual behaviour? I'm assuming that most people would think they're dealing with a button (which is toggleable using the 'Enter' key), not a checkbox.
@brunosuperman
@brunosuperman 11 ай бұрын
Thank you!
@SLC2010Charleston
@SLC2010Charleston 7 ай бұрын
Works great. I would also like to turn on a transparent overlay across the page to prohibit a user from clicking on anything other than the menu. It is defined display "none" but the "has" selector doesn't seem to want to set the display property to block. Is there a limitation to "has"? .hamburger-menu:has(input:checked) + .overlaypage{ display:block; }
@loverboy069
@loverboy069 Жыл бұрын
Clicking on the hamburgur menu class or in my case, mobile-nav class doesn't check the box and setting pointer events to none stops me from toggling.
@c1zztm450
@c1zztm450 Жыл бұрын
awesome! ty
@renejacques8288
@renejacques8288 2 ай бұрын
Say I select a link from the sidebar, how can change its color or put a line under it so I can see what link is selected please? Great video.
@vickrammark2082
@vickrammark2082 Жыл бұрын
Hey Kyle this was an awesome viedo. I have a doubt how to make a div expand from right to left. I have been seeing different solutions for it but nothing satisifies me. Please do a shorts on it.
@Infiniband11
@Infiniband11 4 ай бұрын
Did you work this out? Trying to do the same.
@ALifeLivedFully
@ALifeLivedFully 25 күн бұрын
Same lolll 😂
@DJ66SXX
@DJ66SXX 6 ай бұрын
.hamburger:has(input:checked) + .sidebar does not work, maybe there has been a CSS update from last year?
@dheerajy2202
@dheerajy2202 Жыл бұрын
Thanks Kyle
@sonbui7063
@sonbui7063 3 ай бұрын
does the hamburger menu button and the menu list has to be in the same div class ? Cuz in my code the menu list and button are in different div class (the button is in the header class while the list is in the main class). And when i try the animation the list does not slide in as expected :)
@arcanelore168
@arcanelore168 5 ай бұрын
It's like a lot to know!
@jawad_youtube
@jawad_youtube Жыл бұрын
I needed this 1year ago
@DeadGemini
@DeadGemini 2 ай бұрын
Just so you know, you can play with the --bar-width value until you just get an X without all the trig. As long as your X arms end up as long as the buns on the hamburger were they'll X without all the extra crap. You just need to play around with the --bar-width until you find the balance with your --bar-height and gap. MUCH easier and cleaner, you don't have to calculate the mf square root of 2 in there, but you are constrained on how big your X can be (by how long the hamburger buns are, lol) Try: width=66px, height=10px, gap=13px. This is how mine is set, and it X's perfectly from the hamburger with no extra variables and calculations
@panka33
@panka33 6 ай бұрын
what is that '*,' (asterisk+comma) at the very beginning of the CSS file? Cheers
@TheMetalMag
@TheMetalMag Жыл бұрын
you rock! thx
@patcollins1779
@patcollins1779 Жыл бұрын
Thanks Kyle. I'm a novice web designer and trying to learn. I've spent a few hours trying to adapt this to be a header or "top bar" rather than a side-bar and I am struggling. Can anyone suggest a straightforward way to put this hamburger menu at the top right in a header? Thank you so much!
@meganlove5681
@meganlove5681 10 ай бұрын
I need help with the same thing. I managed to get the hamburger icon over to the right but can’t figure out how to get the sideabr over to the right. I put my logo, navigation, and the hamburger checkbox in the header. my logo is postioned to the left and that is ok.
@ramsundararaman6615
@ramsundararaman6615 Жыл бұрын
This is a cool lesson Kyle! Thank you very much. Any reason why whatever that's added to the html gets rendered below the fold? Maybe the sidebar should have a style that allows for the main content to display within the fold?
@ramsundararaman6615
@ramsundararaman6615 Жыл бұрын
Also, it doesn't seem to work in Firefox!
@kenthhagstrom
@kenthhagstrom Жыл бұрын
@@ramsundararaman6615 the :has selector is currently not supported by Firefox
@valleeth
@valleeth Жыл бұрын
Issue on Firefox 110, but great work.
@alilatoon
@alilatoon 8 ай бұрын
I am wondering how would I be able to select multiple classes after the "+ .sidebar" I realize now it only works on one class but I need it for multiple classes.
@gurvirbaraich2028
@gurvirbaraich2028 Жыл бұрын
Seeing after 5 seconds of upload
@khalilbenmeziane8836
@khalilbenmeziane8836 Жыл бұрын
thank you kyle
@ToddGarcia-s3l
@ToddGarcia-s3l Ай бұрын
my main question is why not just upload a photos, takes much less time then custom var?
@delfinobenavidesii4487
@delfinobenavidesii4487 6 ай бұрын
Challenge: Can you recreate this in a HTA application (css3 compatibility)? Might have to use additional coding.
@mauro21523
@mauro21523 Жыл бұрын
Codegrid 🤪, but of course the best one to explain it
@mohammedkaka5558
@mohammedkaka5558 Жыл бұрын
cool but the :has property does not work on firefox so it does not cross (X) the hamburger
@AndyMorrisArt
@AndyMorrisArt 9 ай бұрын
Genius!
@KX36
@KX36 Жыл бұрын
Brilliant.
@erice.3892
@erice.3892 Жыл бұрын
the CSS wizard
@jp_vids9631
@jp_vids9631 Жыл бұрын
Can you make a video that covers object relational mapping (ORM )
@martinkusy2560
@martinkusy2560 10 ай бұрын
I can't get it work in Firefox. Any idea why that could be.
@angrybadger6761
@angrybadger6761 Жыл бұрын
I am redesigning my website and this has appeared. Excuse me if you hear the sound of java script being ripped out and given a through beating into the rice fields. You are the css Ninja my friend and I'm off to play this game as my java script skills are lacking so I have to depend on others, which I don't like to do. Many thanks for this.
@JnoobGodMode
@JnoobGodMode Жыл бұрын
bro i have an issue, the problem is that i can still scroll and since the size is fized i can see the bottom, idk how to stop it from scrolling, can someone help me pls...
@SkyFly19853
@SkyFly19853 Жыл бұрын
Could you also make a tutorial on dark mode them with a responsive nav bar? Thank you in advance!
@salmajahan5834
@salmajahan5834 5 ай бұрын
How can I make it appear from the top? Thanks
@chinmayghule8272
@chinmayghule8272 Жыл бұрын
Another thing we can do is to make this a web component. That way we can use it in any project.
@matthewharting3390
@matthewharting3390 Жыл бұрын
What do you do for those using Firefox as it does not use :has yet, without explicitly telling Firefox to allow it.
@rishiraj2548
@rishiraj2548 Жыл бұрын
Great!
@blaneandgame9
@blaneandgame9 Жыл бұрын
when focused the checkbox still has an outline
@rafaelvarela619
@rafaelvarela619 Жыл бұрын
My before and after pseudo elements are somehow with a line around then in bigger screens and it changes the color os the lines, can someone help me with that?
@phoenix-kf3tr
@phoenix-kf3tr Жыл бұрын
Hello Kyle. I bought your course sometime ago. And now I decided to look at it again, but forgot the password. The problem is when I try to reset the password nothing happens. Can you help me with this issue? Thank you in advance)
@ashwinsuryawanshi
@ashwinsuryawanshi Жыл бұрын
Waiting for your video on React Fiber.
@ivanchiazzari7904
@ivanchiazzari7904 8 ай бұрын
At school I thought we would never use the theorem, but now we see Pythagoras everywhere😃
@devbyveritech
@devbyveritech 10 ай бұрын
I'm becoming a web designer tomorrow. They don't go through this stress
@suti1979
@suti1979 Жыл бұрын
Gread video, but it seems it's not working with firefox... probably, the bco the :has property.... :(
@Juppieboy
@Juppieboy 5 ай бұрын
Hiii!!! newbie question here ( real noob no joke) i made this hamburger menu, but now i cant put stuff in middle of the page :( anyway to fix?
@kodomo5490
@kodomo5490 Жыл бұрын
is it possible to do this if the sidebar is not located near the checkbox?
@mjshubham21
@mjshubham21 Жыл бұрын
It was awesome!! How can we implement the same in react?
@danieldragan9220
@danieldragan9220 11 ай бұрын
@wedbevsimplified Help! How do I stop scrolling in the background when the burger menu is open on mobile??
@wolandsmachine
@wolandsmachine Жыл бұрын
great lesson, but shame,for some reason this code doesn't work in Firefox.
@ErikHansenDrums
@ErikHansenDrums Жыл бұрын
:has isn't supported in firefox still
@edwardkenway6822
@edwardkenway6822 Жыл бұрын
It's So Good
@geoffreyjohn2330
@geoffreyjohn2330 6 ай бұрын
very nice video but my has tag is not working, which you're are using 12.30min
@CodingW3
@CodingW3 11 ай бұрын
👏🏻👏🏻👏🏻👏🏻
@ezramammo3056
@ezramammo3056 Жыл бұрын
Can you please make a full course on node js please
Learn CSS Positioning Quickly With A Real World Example
8:32
Slaying The Dragon
Рет қаралды 641 М.
Navbar CSS Tutorial: 3 Ways to Create a Navigation Bar with Flexbox
15:08
what will you choose? #tiktok
00:14
Анастасия Тарасова
Рет қаралды 7 МЛН
مسبح السرير #قصير
00:19
سكتشات وحركات
Рет қаралды 2,5 МЛН
ISSEI & yellow girl 💛
00:33
ISSEI / いっせい
Рет қаралды 25 МЛН
❌Разве такое возможно? #story
01:00
Кэри Найс
Рет қаралды 4 МЛН
Basic, Intermediate & Pro animated hamburger icons
59:41
Kevin Powell
Рет қаралды 145 М.
Are You Making These CSS Height Mistakes?
8:54
Web Dev Simplified
Рет қаралды 128 М.
How to build an accessible hamburger menu with HTML, SCSS & JS
13:25
WTF Do These Even Mean
13:44
Web Dev Simplified
Рет қаралды 84 М.
Master CSS Overflow/Text Wrapping Like A Senior Developer
20:53
Web Dev Simplified
Рет қаралды 44 М.
Top 10 Advanced CSS Responsive Design Concepts You Should Know
20:16
Web Dev Simplified
Рет қаралды 520 М.
Learn Flexbox CSS in 8 minutes
8:16
Slaying The Dragon
Рет қаралды 1,5 МЛН
The problems with viewport units
13:23
Kevin Powell
Рет қаралды 360 М.
what will you choose? #tiktok
00:14
Анастасия Тарасова
Рет қаралды 7 МЛН