That should be corrected if anyone invents a time machine. :P
white-space: nowrapshould be
and line wrapping behavior should not have been added to
vertical-alignshould not apply to table cells. Instead the CSS3 alignment properties should exist in Level 1.
vertical-align: middleshould be
x-middlebecause it's not really in the middle, and such a name would better describes what it does.
Percentage heights should be calculated against
fill-availablerather than being undefined in auto situations.
Table layout should be sane.
Box-sizing should be
background-sizewith one value should duplicate its value, not default the second one to
border-spacing(all 2-axis properties) should take *vertical* first, to match with the 4-direction properties like
The 4-value shorthands like
marginshould go counter-clockwise (so that the inline-start value is before the block-start value).
z-indexshould be called
depthand should Just Work on all elements (like it does on flex items).
overflow-wrapshould not exist. Instead,
overflow-wrapshould be a keyword on 'white-space', like
The top and bottom margins of a box should never have been allowed to collapse together automatically as this is the root of all margin-collapsing evil.
Partial collapsing of margins instead of weird rules to handle min/max-heights?
Tables (like other non-blocks, e.g. flex containers) should form pseudo-stacking contexts.
currentcolorkeyword should have a dash,
There should have been a predictable color naming system instead of arbitrary X11 names.
border-radiusshould have been
Absolutely-positioned replaced elements should stretch when opposite offset properties (e.g. left+right) are set, instead of being start-aligned.
hyphensproperty should be called
hyphenate. (It's called
hyphensbecause the XSL:FO people objected to
hsla()should not exist,
hsl()should have gotten an optional fourth parameter instead (and the alpha value should have used the same format as R, G, and B or S and L).
descendant combinator should have been
»and indirect sibling combinator should have been
++, so there's some logical relationships among the selectors' ascii art
*-blend-modeproperties should've just been
The syntax of unicode ranges should have consistent with the rest of CSS, like
Unicode ranges should not have had a separate microsyntax with their own tokenization or token handling. The tokenization hacks required either to make selectors (e.g., u+a) handle things that are unicode-range tokens, or make unicode-range handle the other huge range of tokens (numbers and dimensions with and without scientific notation, identifiers, +) are both horrible.
font-familyshould have required the font name to be quoted (like all other values that come from “outside” CSS). The rules for handling unquoted font names make parsing
fontstupid, as it requires a
font-sizevalue for disambiguation.
Flexbox should have been less crazy about flex-basis vs width/height. Perhaps: if width/height is
auto, use flex-basis; otherwise, stick with width/height as an inflexible size. (This also makes min/max width/height behavior fall out of the generic definition.)
:empty should have been :void, and :empty should select items that contain only white spaceFIXED in the spec, waiting for implementations to check for Web-compat…
table-layout: fixed; width: autoshould result in a fill-available table with fixed-layout columns.
'text-orientation' should have had
uprightas the initial value (given the latest changes to 'writing-mode').
The @import rule is required to (a) always hit the network unless you specify cache headers, and (b) construct fresh CSSStyleSheet objects for every import, even if they're identical. It should have had more aggressive URL-based deduping and allowed sharing of stylesheet objects.
Selectors have terrible future-proofing. We should have split on top-level commas, and only ignored unknown/invalid segments, not the entire thing.
:linkshould have had the
:any-linksemantics all along.
flex-growlonghands) should accept
frunits instead of bare numbers to represent flex fractions.
displayproperty should be called
list-styleproperties should be called
The 'text-overflow' property should always apply, not be dependent on
line-height: <percentage> should compute to the equivalent line-height: <number>, so that it effectively inherits as a percentage not a length
'overflow: scroll' should introduce a stacking context
sizeshould have been a shorthand for
heightinstead of an @page property with a different definition
- We probably should have avoided mixing keywords (span) with idents in the grid properties, possibly by using functional notation (like
comments shouldn't have been allowed basically everywhere in CSS (compare to HTML, which basically only allows them where content goes), because it makes them basically unrepresentable in the object model, which in turn makes building editing directly on top of the object model impossible
The alignment properties in Flexbox should have been writing-mode relative, not flex-flow relative, and thus could have reasonably understandable names like align-inline-* and align-block-*.