Avoid These 5 Awful CSS Mistakes
Vložit
- čas přidán 13. 06. 2024
- I often see beginners making the same mistakes over and over again, so in this video I take a look at some common issues and give some advice on how I think things could be improved.
🔗 Links
✅ Live Server VS Code extension: marketplace.visualstudio.com/...
✅ Flexbox or Grid - How to decide? • Flexbox or grid - How ...
⌚ Timestamps
00:00 - Introduction
00:35 - Useless declarations (that can cause problems)
04:04 - Over-reliance of Flexbox
06:37 - Using very specific values
10:44 - Terrible class names and numbering elements for no reason
14:00 - Over-reliance on position absolute
#css
--
Come hang out with other dev's in my Discord Community
💬 / discord
Keep up to date with everything I'm up to
✉ www.kevinpowell.co/newsletter
Come hang out with me live every Monday on Twitch!
📺 / kevinpowellcss
---
Help support my channel
👨🎓 Get a course: www.kevinpowell.co/courses
👕 Buy a shirt: teespring.com/stores/making-t...
💖 Support me on Patreon: / kevinpowell
---
My editor: VS Code - code.visualstudio.com/
---
I'm on some other places on the internet too!
If you'd like a behind the scenes and previews of what's coming up on my CZcams channel, make sure to follow me on Instagram and Twitter.
Twitter: / kevinjpowell
Codepen: codepen.io/kevinpowell/
Github: github.com/kevin-powell
---
And whatever you do, don't forget to keep on making your corner of the internet just a little bit more awesome!
Feels good to know that I did all these mistakes 2-3 years ago but no more, I do other mistakes now :)
I've only been learning web development for a month and Kevin Powell is my go-to resource for learning CSS. His content is pure gold. Thank youuuu :))
Totally agree. Amazing content! Thanks Kevin
Pretty crap stuff
@@MrSkinkardecan you point me to a better resource? Maybe something you have produced?
SAME!!!
I've been working as a full stack developer for 16 years, and I find Kevin a great resource to update my oftentimes outdated css skills. I mean, when I started working, layouts using tables were still a thing, so I've got at least a decade's worth of absolutely useless knowledge which I need to be reminded not to use😛
Ive been working with css for about 10 years and every time i watch one of your videos i learn something new
There is so much empathy in the way you address beginners' mistakes, thank you!
That's web dev for ya. We understand now that we don't make these mistakes we have graduated to make other mistakes =)
Love Kev
Excellent video, Kevin. I have learned 99% of the CSS I know following your courses and videos. Cheers.
Just recently gave the same advice to a junior dev to not declare things unless they're absolutely needed. I actually give this advice to entry and junior devs a lot. Hard to believe that this isn't a topic that's taught regularly in bootcamps or on-the-job learning
As an aspiring junior web developer, I just wanted to thank you for giving advice to my fellow juniors out there. This is why I already like this career - more experienced colleagues are willing to mentor and support 🤝
Comes from people trying to emulate bootstrap and writing a lot of initializers
I think many people are just self taught, like me. When i started, flexbox didn't even exist and css was the newest thing to do the layout. But even today i still see websites where the layout is done with tables.
My biggest mistake was to stack things using Position instead of grid or flexbox and using tons of media queries!😶😶
VS Code extension Live Server - that's what I needed here more than anything, thanks for mentioning that!
I used to hate CSS, it never did anything that seemed logical to me. But once it clicked on how elements behave, I actually enjoy the hell out of it.
Cool progression, I’m still at the hating stage and cussing at css xD
I had that click moment after watching enough kevin powell videos. I used to hate frontend work because of CSS, but one day I suddenly just "got" it
Display flex actually fixes a very annoying issue, which is collapsing margins. Collapsing margins can be a good feature sometimes, but they bring more issues than solutions for me.
collapsing margins are annoying, for sure!
I think they are annoying, because we don't use HTML for what it was originally intended, which is rendering text-heavy content. With a stack of multiple headings, sub-headings, and paragraphs, collapsing margins totally make sense. And they still do. Problem is, that nowadays we heavily use HTML/CSS for the most sophisticated graphical layouts, where collapsing margins are not the most logical thing to expect.
A rather simple solution to this is to only use margins for flow/text content, where they still make sense, or, like mentioned in the video, more sparsely for advanced layout techniques where they could come in handy. We have better options for gaps in layouts now, so margins are not the best tool for gaps anymore.
In the last example I would've use .card > img { margin: -2rem 2rem 0 -2rem }.
And even with your version I would've set margin-bottom: -2rem on img instead on margin-top: -1rem on h2.
Best video you've produced in a while. Great timing too, cuz I'm going through this problem with my front-end course now.
Couldn't agree more ;). In my 15+ war on frontend, other people always asks me how can I love CSS, and how I know how to fix those stupied scrollbars, unnecessary margins/paddings, wrong width/height. In 90% of the time I'm dealing with styilng bugs, the solution is to remove most of the CSS :P
Most important rule in styling is: the fewer CSS the better
Happy styling ;)
hahaha, and my backend friends always say frontend is easy peasy, that is just like to handle a json or yaml file, that there's no complexity at all, but then they start asking for help when they need to center a div. I do both backend and frontend, and damn, frontend is hard, really hard. Top notch content, thanks.
Kevin, your videos are great. It is really joy to learn CSS with them.
I have to admit I was declaring width:100% as well as redeclaring of display:flex. The issue with (non)declare display:flex, is.... sometimes may child element of the element with display:flex breaks styling and another child element (grandson) behaves as not expected. Then I have to redeclare and everything get back into normal.
Display flex declaration only creates flex container for the parent element.
Child elements are not automatically made flex, why? Of course grandsons are not flex.
Your videos are so helpful! Thank you so much for helping me fall deeply, madly in love with CSS!
Another common mistake is using background shorthand to only declare a background color, forcing the browser to fill in the other 9 values. It impacts performance, and can cause bugs that are really hard to find. Use background-color for this. Otherwise, great video 😀
what other 9 values? can you elaborate more? I tried googling this and found nothing...
@@ahmadmuraish1144 There are many values in that property like size, image, position, repeat, origin, clip and attachment of the background.
@@career963ah okie, got it. Thanks for the reply.
I can’t imagine this to be true and even if it were, your page would have to be insanely complex for it to make any difference. Do you have a source for this claim?!
Please elaborate more on that?
I've just finished blundering my way through my first web app and I have never even thought of using class names as a sort of tag for properties! I will definitely be doing that from now on!
I’m a beginner in the programming world. Being a creative person I was most excited about CSS because I thought it was going to be a breeze coming to grips with it. As of now I hate it 😅 I’m really really trying to flip the script so I can enjoy my time writing CSS
Rare post-2022 Bandstand W
@@rewaj56 what does it even mean that you wrote? probably nil or null or undefined?
I love this kind of video, it not only tech you useful things, but also tell you how to think difference, think right! thank you very much, keep going😊
Felt called out with all these common mistakes 😩 Thank you Kevin!
I cannot believe how powerful CSS is! Frameworks like Tauri are the future!!!
Fall madly, deeply in love with CSS. 😎
Thank you Kevin! The best source of CSS as always!
Bro, flex basis 100% is insane. Thank you.
I was doing exactly that, using flex column when I didn’t need it. Broke that habit only a few months ago! But you’re right it’s bc flex was the first thing I learned and felt comfortable with.
that card flex basis is answering my trust issue / over-thinking "why my cards slightly un even?" thank u coz its tiny tiny bit un even, the fact its a technical issue not "me" problem
Your height trick helped me in a recent project. Thanks
Finally an oasis. A channel dedicated to CSS and the magic that it is.
It always triggers me so much when I open source of any website and see flex-box everywhere... 😅
Thank you very much. All of this is useful for me.
My big mistake was not looking at the larger picture, great advices again
It's a great tutorial. Thank you!
your content is pure gold
I’m subbing because of your lighting.
Excellent advice. I learned css a long time ago and got really good at making pixel perfect sites. I was using floats and that’s how I think, so thank you for these tips, they totally make sense. Time to really learn flexbox and grid. Also, I would never use the important class. My thoughts are if you have to use !important, then something is wrong with your css
I've learned many tricks and "best approachs" with this video about 'flex' usage. Many thanks and Good Jobs.
That reminds me of what my dev trainer said in the mid 2000s: "I dcon't care how you do it, as long as you have a plausible explanation why you did it that way."
Tanks for your video. 😊 Usefull tips 👍
Using _float_ and _position: absolute_ in layout is probably the most common beginner mistake I've noticed on Stack Overflow.
That, and not using em/rem as a base for spacing (which is a knowledge I brought from designing books). 0.25rem, 0.5rem, 1rem, 2rem and 3-4rem is all that you need on a homepage for spacing, unless in really specific situations.
This is the kind of videos that help the most. You should make a section "Common mistakes".
Thanks for the video brother!
Your tips just solved my problems. Thanl youuuu 🤟🤟🤟💌💌💌
Love your content. I am starting to like css more and more now.
👆👆👆
CSS is ❤
Amazing simple and clear explanation 🎉
I think this has to be the number one channel when it comes to CSS.
Loving your work, brother! Thanks a million!!
wow flex-basis or fle:1 were great, thanks❤
Beginner(me) reason for doing it: it works. After watching this video, reason for using it: there is a good reason and good purpose for using it. What an awesome video! Thanks Kevin!!
Excellent tutorial! I had that problem with flexbox just recently. Ended up deleting all mention of flexbox, and then things looked fine. Makes me wonder when I should use flexbox? Using CSS, HTML since the 1990s, so I for me learning something new involves just as much unlearning, and sometimes just using the old ways turns out fine. So don't do too much unlearning!
@09:48 instead of flex-basis we can use flex-grow: 1 in card class. That way it will adjust width according to available items and space.
Yes that's what he did when he did flex: 1; which is a shorthand for flex-grow: 1; among a couple of others
17:48 One thing I'd do instead to keep it contained in the image definition (and perhaps have done in projects, for such use of transform: translate() ) is to add the negative margins to the image itself, being its margin-block-end (/margin-bottom). So I'd never need to hunt for elements next to that kind of image or, worse, have the design broken for an unforseen following element added in a later change.
And, as those numbers are the same (the margin only exists only to fill the exact gap left by the translate), I'd possibily even add the translate value to a variable (/custom property) and use that in translate and margin, so that I'd never mistakenly skip one of those in case of a change.
Other than that detail for margin placement, great tips, as always! =)
love you Kevin !
Part of the problem is teachers teaching beginners bad practices. I am taking web development, and my teacher taught us float layouts. Many people were struggling with them, because it was float based layouts. I already knew css, and I knew that float based layouts were terrible, so I tried my best to not use it. My teacher also tells us that we need to put a width and a height on divs and sections, which is obviously not true. He also recently taught us position absolute, and he told us how to center stuff with it, and I'm just here thinking, there's much better ways to center things. Heck, whenever we replicate a website for an assignment, I ignore everything he taught us, and just use flex, grid, and a ton of techniques that are a bit more advanced. I have helped my neighbor many times with things, and I've looked at his css, and it's just full with pretty much useless stuff.
Oh, and by the way, we had to recreate the navbar from the cafe rio website, and I think I did so much better than cafe rio. Cafe rio put lots of duplicate elements everywhere for different screen sizes. I did so much better because I made all the elements, then just moved them around with grid in order to create the same effect.
(Recreating the under armour website was a pain, because it changes ever day)
there is also a setting that applies the saved changes automatically through live server without having to click on any button. just by saving the changes
Though I'm dealing with CSS for more than 15 years I found myself guilty of all charges. It's been a pleasure being awaken by you overthinking my widely narrow minded workflows. It hurts listening to your advices, but that's what sometimes makes me better. Thanks a lot for your work. It just fantastic stuff. 👋👋👍👍 Probably the most important advices that I heard from you so far.
thaks that really helping
Thanks for your video. What keyboard do you use?
I'm curious. ^^
Another banger!
The picture of the man shaving is just straight 👌😂
Thanks mate
Summary:
1. Declaring things you don't even need (e.g declaring width: 100% in most block elements or declaring height)
2. Over-reliance on flexbox (e.g declaring flex in the body or * element)
3. Over-reliance on hardcoded numbers. (Basically needing a value for several situations or cases)
4. Unnecessary class naming (learn to create reusable class names)
5. Relying on band-aid solutions that cause more problems (e.g using position absolute when it is not necessary)
Great vid.
bandaid solutions are a problem in every language. I used to support software written in VB (ew!) and it was a shocker.
I think also using px for widths and for responsivness as it messes up on zoomed browsers.
% widths at the browser window layer is dangerous to use as Safari will return the width of the screen, not the window.
Re: the multi-flex layout, I use flex-max and flex-min for each sub-element as a lot of the times I use these there are client-defined amounts and allow it to adjust itself, should all be defined in minimum number of classes.
in the transform example, I would put the adjustment to margin on the image itself, that way it's self-contained with the shift of the image.
Thanks
You are my best teacher
I will admit it, I tend to put flex on everything. Ok, not everything. I put it on whenever I need to, which tends to be quite a lot of stuff.
Thank you
I am an egregious offender of all of these. Thank you so much for this video. For me, it is a matter of preemptively/defensively writing CSS to lower my mental overhead (in the moment) but it quickly accumulates into painful maintenance/code debt in the long term. Advice noted!
This is so useful to send to team members who are not good with CSS. It's interesting that all of them are layout mistakes.
BTW , I see you have your VS Code zoomed in for better readability. Add these to you VS Code settings JSON to free the unused area on the left side:
"editor.glyphMargin": false,
"editor.lineNumbers": false,
line numbers may be helpful in some cases but idk exactly
@@goodshiro10 yeah I personally keep them. Only hide the glyph area. Some people have a keyboard shortcut to hide/unhide line numbers
Dude I love you 💟
I've always hated CSS, but you as CSS Evangelist have changed my mind and perspective, so now I love CSS more than JS. Thank you, Kevin
I do every mistake from this video :DDDD. Thanks for sharing it with us!
I used to do this stuff a LOT when I started. Doing too many rules which makes maintenance impossible. I used to throw things in there until I found the thing that worked. Now-a-days I go back and comment them out and if it still works I delete them. It's really important to do this at the time when you're faffing about because in the future say a year down the line the rules may be effecting something on a different page and I'm not sure which page, where or why. If I come back in a year I will comment it just in case something breaks.
Great video! But instead of applying transform: translate(-2rem, -2rem) to the image and giving negative margin-top to the h2, couldn't you just give negative margin-top and margin-left to the image?
Edit: You mentioned this a few seconds later in the video, but I'm curious what the negative side-effect would be?
I recommend using inline css for variations that you know will only be used once...
It's much faster and better in terms of performance, compared to having it in a class in the css, specially on pages that you won't navigate to frequently.
I'm surprised you haven't mentioned it at all.
Hi Kevin,
Can we use or call WebP or avif images in structure data (image schema microdata) ?
Is acceptable under Google standards?
Thanks!
Thank you!
Kevin i just love you after watching this video...❤
I can really tell I'm getting old when somebody says float layouts used to be how we did layouts :D.
I still remember my early sites that used tables for layouts. Then floats and clears came. Now I'm getting back to vanilla css and am just so surprised what we can do now :)
Totally agree on all of these except the one for the layout (I'm from the float era). Some times you want (or the client wants) when columns drop on multiple rows to keep the same column size. Sometimes they don't :) I would say it would be based on the situation and the design requirements. :beers:
One word: css grid 😊
Naming conventions are a pain in the backside which is why I'm veering towards Tailwind.
@Kevin Powell please make a video what is the difference between % vs. em font-size
Most common error I've seen so far is the use of "magic numbers" for applying dimensions, which seems to be a bit related to item 3 from your video.
Lol constantly displaying flex was something that I had to get out of very early. Many people on FrontEnd Mentor would tell me over and over that I was using it too frequently, and eventually, I broke the habit :).
This is one of the videos where I like before watching.
Great content as usual ... I think you can press "Alt + Z" to word wrap so you don't have to scroll horizontally
line wrapping triggers me for some reason, lol
@@KevinPowell 🤣🤣🤣 if you insist
Negative margins are actually pretty awesome. For instance, you could get the image to extend out over that corner with negative margins on the image, and not need to rely on other elements accommodating it. I think this would have far fewer "gotchas" than the other options.
I won't lie, I use negative margins quite often. They've come in clutch many times.
I must admit that I'm still a beginner in programming. But I can say that in lots of cases I use flex with column direction just because of how simple it is to center or distribute the content both vertically and horizontally inside of its' container.
One thing I always take out of code with bootstrap is:
...
I think, so you just want to have a div. This is quite literally the behavior of just a div.
This was posted a year ago, but in regars to the width: 100%; you'd only have to do this is you used a css reset defaulting everything to 0 right? Otherwise there is no need for it? As a beginner though I'd assume that most people use a css reset for reactive purposes to make sure they can set all values to whatever they need correct?
Is that also a bad practice? Would that just be creating bloat code as you then have to redefine all values after a reset?
Thanks.
thanks for such a great video, again
I usually use display flex on the body so that i can center the content. is there a better way of doing it?
I’m still learning CSS and sometimes I get stuck and no matter what I try, I can’t make it work without something kludgey like margin-left:-12vw; By the time I finally get it working, I have all these declarations that didn’t work so I’ve gotten in the habit of going through all the CSS for that particular section line by line and temporarily commenting out each line to see if anything changes. If not, once I’m done going through all the lines and testing to make sure nothing broke, I delete all those commented lines.
I'm wondering why you would use rem units for a border radius rather than px. Would you really want your border radius to change if the user has a default font size different than 16px? Seems like border-radius would be one of the last places that using px units would still be best practice. Would love to know if I am missing something and rem is the better choice for a border radius.
I've just recently started learning html/ css and have already caught myself using properties that do nothing. So, I'm trying my best not to do it. However, when an element refuses to go where I want to, then I usually just start throwing properties at it, haha. I have a lot to learn.
There is a project I'm working on that is stumping me. The navbar will not go all the way to the top/ left of the browser. It is positioned perfectly on the left, but it thinks it is at the top, when it is actually at the bottom of the main content of the page. And it looks like that without any css properties applied, or not applied. The navbar is below the section element in the code. Functionally, it works perfect. It just looks like garbage.
Anyone have any suggestions on where to start? I would greatly appreciate any help.
Sir you are great from india
I’m interested to learn your opinion on tailwind.
I have always faced multiple issues while working with Images. I have to work with images with different ratios, high quality and low quality as well, and some images are so absurd that if I assign a particular CSS to them then it won't apply to other images.
Please help me