5 ms·
Because most css without context are useless. A div with width 100% may not stretch depending on it's content and parent css. It's even worse on positioning, ma
by fendy3002 3y ago
Because most css without context are useless. A div with width 100% may not stretch depending on it's content and parent css. It's even worse on positioning, margin and responsiveness.
Which is why if you don't interact with it day to day basis, you'll need some trial and error, as well as references and examples.
Opposite to backend or usual programming where `foo = foo + 1` is most of the time do an increment by one (exception apply)
- dmix 3y agoThere's a lot of unpredictable stuff too. I was trying to change the border color of a checkbox to match a framework being used elsewhere and for the life of me couldn't figure out why neither setting outline or border changed it. But on the framework's website demo it was doing it just fine. Combing through the CSS and the computed styles panel in dev tools gave me nothing. It turned out there is an option to disable the standard OS form theming which isn't communicated at all in dev tools for that element (and I hadn't seen --webkit-apperance used before as the guide says you really shouldn't mess with it): https://developer.mozilla.org/en-US/docs/Web/CSS/appearance https://developer.mozilla.org/en-US/docs/Web/CSS/appearance
- aidos 3y agoWeeeeeeeell a div is 100% width by default. It will always fill the width of the parent container unless you explicitly change the width.
- fendy3002 3y agoAfaik div width property is almost useless if the parent set the display as flex, or if the div has no content.
- aidos 3y agoThat’s kinda the point of flex though. The width is determined by the flex rules; width 100% doesn’t make much sense in that context.
- truckerbill 3y agoNot if the parent or ancestors don't have a width set... Hence why you need context.
- aidos 3y agoThe parent has _some_ width, even if it’s not explicitly set.
- truckerbill 3y agoYes, and I wish 100% would respect that implicit width but it doesn't. Try it
- aidos 3y agoAny chance you could show an example? In theory a block level element can only sit inside another block level element. And those expand to the width of their parent unless you constrain the width.
- truckerbill 3y agohttps://jsfiddle.net/jcaysopd/75/ https://jsfiddle.net/jcaysopd/75/ I have no doubt there is a 'logical reason' for the behaviour but it doesn't stop it being annoying to work with.
- aidos 3y agoGotcha. That’s because of the 100% vs auto thing. These days everyone just puts “box-sizing: border-box” on everything to make it go away. This explains a bit more about what you’re seeing http://stackoverflow.com/questions/28353625/why-does-percentage-width-work-even-if-no-explicit-width-value-given-for-contain/28354270#28354270 http://stackoverflow.com/questions/28353625/why-does-percent...
- have_faith 3y ago100% isn’t the default value, ‘auto’ is. Which has the effect of appearing 100% in many scenarios. But not all.
- aidos 3y agoFair, but actually that just means that the border and margin etc are pushed outside the container. In either case the div is operating by taking up the full width of the container.
- gochi 3y agoBackend or usual programming without context is also useless. Is foo even mutable? Is it the same type? How does type conversion work here? CSS and usual programming are identical. If you don't give yourself the time to learn the fundamentals, you'll always run into tedious problems.
- bombolo 3y agoI know the fundamentals. Doesn't help :D
- gochi 3y agoMaybe it's time to relearn the fundamentals! web.dev and MDN are great resources to do so. Start with the Box Model.
- XajniN 3y agoFundamentals don’t help when you are 15 divs deep.
- marcosdumay 3y agoYou have made some bad decisions if you find yourself 15 divs deep. There is a surprisingly small amount of content out there on how to competently engineer your CSS (and a lot of it is bad). Most people don't even think it's something you do. But basic things like making your general rules generic and pushing context descriptively into the HTML go a long way into making your code understandable.