Re: [css-logical-props] do shorthands have logical component longhands?

Tab Atkins Jr. wrote:
> The current proposal in the spec is that you can insert the keyword
> "logical" into the value, and then the shorthand is for the logical
> properties instead, like "blockquote { margin: logical 1em 1em 1em 0;
> }".
>
> There's an issue in the spec about whether the physical/logical
> versions of the shorthands also reset the logical/physical properties.
>
> fantasai says they definitely should be reset by the shorthand.

Thanks.  So that means they should be set to 0, I assume.

Two followup questions then.

(1) With this rule:

   div { margin-top: 1px; margin-right: 2px;
         margin-bottom: 3px; margin-left: 4px; }

if we get margin, should we serialise as the empty string since 
margin-{inline,block}-{start,end} are not present on the declaration 
(they would be set with '0' values if we assigned the '1px 2px 3px 4px' 
back to the margin property)?

I have a slight worry that someone might be relying on setting the four 
longhands and getting the shorthand back.  But this issue arises any 
time we add new longhand components to a shorthand.

(2) Here is a case where assigning to a shorthand gives you (what I 
think might be) unintuitive results:

   div { margin: 1px;
         margin-inline-start: 0px; margin-inline-end: 0px;
         margin-block-start: 0px; margin-block-end: 0px; }

   decl.style.margin = "2px";

Since the declaration has all of the component longhands already, we 
just overwrite each one with either 2px (for the physical ones) or 0px 
(for the logical ones).  The result is that you'll still have 0px 
margins, as the logical properties still appear after the physical ones.

Should we make assigning to 'margin' move the physical properties to the 
end of the declaration?  (And if we do so, we'll need to ensure that the 
empty string is returned when getting 'margin' if logical properties 
appear after physical ones.)

Received on Saturday, 20 December 2014 23:22:42 UTC