DEV Community

Discussion on: If you could start over from scratch, how would CSS work?

Collapse
 
nektro profile image
Meghan (she/her) • Edited

Wait, people don't like CSS? To me, CSS actually seems like one of the most well done parts about the web platform. Not only from readability but it makes really good tradeoffs between verbosity and character count that makes CSS really really easy to read when written well. When writing CSS we have to describe complex relationships between elements, their state, and their relationship to other elements. With CSS, we are able to accomplish this with incredible ease.

The only parts I would change are:
- Make CSS cascade more and support nesting style blocks (like S[A/C]SS)
- Allow HTML Imports so we can write CSS in a <style> and not forced to use JS
- Take a another look at existing properties and reevaluate them.

Collapse
 
alainvanhout profile image
Alain Van Hout • Edited

The issue here is not character count, but predictability. The way(s) CSS works makes it so that there is lots of unintended and unexpected interactions.

Collapse
 
pedro profile image
Pedro M. M.

Well, that’s the definition of design.

Collapse
 
nektro profile image
Meghan (she/her)

I'm curious, what have you run into that was unpredictable?

Thread Thread
 
alainvanhout profile image
Alain Van Hout • Edited

Off the top of my head: adding margins that are ignored because other positioning takes precedence (I’m not talking about specificity here).

I’m curious that you don’t know what I mean with my previous remark, since unpredictability is pretty much a staple of CSS, so much so that it’s spawned jokes like mobile.twitter.com/thomasfuchs/sta....

Thread Thread
 
hissvard profile image
Manuel Luciani

I'd say the weirdest thing I've run into in that regard is margin collapse - like, why?

Thread Thread
 
nektro profile image
Meghan (she/her) • Edited

if you have a ul with some li and then on the li set display: inline then yes, margin will be ignored, but you can fix it by using inline-block. All inline elements ignore vertical margin. But this is more an "issue" with the expected vs actual result of the layout engine and not from CSS

Thread Thread
 
hissvard profile image
Manuel Luciani

Yeah, although what I was referring to is the way only the bigger margin is considered in some situations - you'd usually expect elements' margins to add up

Thread Thread
 
nektro profile image
Meghan (she/her)

The selector with the most specificity is the one that gets applied. If you have a element in an element in an element etc and they all have a margin then the margin does add up.

Thread Thread
 
adrianirwin profile image
Adrian Irwin • Edited

Margin collapse makes a lot of sense in textual content heavy documents. A typical example might be a li followed by a an h3 element, and generally the header would have an ample top margin, so there is no need to combine the trailing margin of the list with the leading margin of the header, it would simply lead to excessive white-space.

Useful for the kind of documents HTML was developed for, but not so useful once intricate visual designs and layouts enter the scene.

Thread Thread
 
nateous profile image
Nate

I agree with you, Meghan. Most of the hardship comes from not understanding how to do something in a simple way with CSS. As soon as we got rounded corners designers wanted something else we couldn't do easily. Haha

Collapse
 
ethan profile image
Ethan Stewart

Had some fun with some of that unexpected behavior recently, apparently if you set overflow to auto on one axis (e.g. overflow-x), you can't set the other axis to visible. And it's in the spec, so it's definitely intentional 😆

Collapse
 
james2m profile image
James McCarthy

There is so much I would bin I can’t even begin. But top of the list, like way top would be no cascade. It’s such an impractical way of re-using code and over long periods in busy projects always leads to a knotted ball of string.

Way more practical is styling each component and encouraging component re-use.

Collapse
 
georgeoffley profile image
George Offley

You have clearly never tried to center something among several other divs.

Collapse
 
georgeoffley profile image
George Offley

Biggest CSS issue that has been kind of but not really fixed is the constant browser hacks needed.

Collapse
 
nektro profile image
Meghan (she/her)
.parent {
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
}
Thread Thread
 
pedro profile image
Pedro M. M. • Edited

Flexbox is the best thing ever happened to CSS. ❤️

Thread Thread
 
georgeoffley profile image
George Offley

Agreed. Makes things so easy. Makes me hate the world a little for wading through the preflexbox world.

Thread Thread
 
ra9 profile image
Carlos Nah

What happens to css grid then?

Thread Thread
 
anechol profile image
Ashley E

Late reply sorry, but nothing. Grid and Flex are to be used in tandem with one another.