$block->expandShorthands() adds none-stated values
Idrinth opened this issue · comments
I would have expected it to not add defaults, so that background: #fff
doesn't suddenly include a statement regarding background-repeat
Edit: Code that this happend on:
.x3-login-window .x3-login-window-tr, .x-panel-ghost .x3-login-window-tr {
background: -moz-linear-gradient(top, #0072a3, #075a79);
background: -webkit-gradient(linear, 0 0, 0 100%, from(#0072a3), to(#075a79));
background: linear-gradient(top, #0072a3, #075a79);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0072a3', endColorstr='#075a79');
color: #FFFFFF;
font-family: Arial,Helvetica,sans-serif;
font-size: 14px;
font-style: normal;
font-weight: bold;
padding: 3px 3px 0 20px;
margin: 0 0 5px;
height: 21px;
}
array(20) {
["filter"]=>
string(98) "filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#0072a3",endColorstr="#075a79");"
["color"]=>
string(12) "color: #fff;"
["font-family"]=>
string(40) "font-family: Arial,Helvetica,sans-serif;"
["font-size"]=>
string(16) "font-size: 14px;"
["font-style"]=>
string(19) "font-style: normal;"
["font-weight"]=>
string(17) "font-weight: 700;"
["height"]=>
string(13) "height: 21px;"
["margin-top"]=>
string(14) "margin-top: 0;"
["margin-right"]=>
string(16) "margin-right: 0;"
["margin-bottom"]=>
string(19) "margin-bottom: 5px;"
["margin-left"]=>
string(15) "margin-left: 0;"
["padding-top"]=>
string(17) "padding-top: 3px;"
["padding-right"]=>
string(19) "padding-right: 3px;"
["padding-bottom"]=>
string(18) "padding-bottom: 0;"
["padding-left"]=>
string(19) "padding-left: 20px;"
["background-color"]=>
string(30) "background-color: transparent;"
["background-image"]=>
string(23) "background-image: none;"
["background-repeat"]=>
string(26) "background-repeat: repeat;"
["background-attachment"]=>
string(30) "background-attachment: scroll;"
["background-position"]=>
string(27) "background-position: 0% 0%;"
}
I would have expected that too. I don’t know if @ju1ius, the original contributor of the shorthands feature, is interested in fixing this. Otherwise, someone else can provide a PR.
I would have expected it to not add defaults,
But that is how CSS works. When using shorthand properties (background, margin, border, padding, etc...), a value which is not specified is set to its initial value. Please refer to https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties.
In your case, you should use the background-image
property, not the background
shortand.
I agree, that this follows the standards for interpreting shorthand properties when appliing them to a html, I'm not sure if it should be the case for parsing stated properties.
What about a flag when expanding shorthands, that states if you want defaults to be added? That would solve the disparity between expected behaviour and current behaviour.
I would like to recant my previous statement. In fact, what happens now is exactly what I expect to happen. I don’t expect expandShorthands
to change the effects of my CSS at all, which it would do, if it left out the defaults.
The only problem with this, IMHO, is that the CSS standard keeps evolving and the list of expanded properties keeps growing (think of display
being a shorthand for display-inside
and display-outside
), which we need to keep up-to-date, possibly causing breaking changes in the process (e.g. if a browser doesn’t yet understand display-inside
/display-outside
).
I guess I’ll close this for now. @Idrinth, feel free to open a PR with your suggested flag, though.