- From: Simon Pieters <simonp@opera.com>
- Date: Mon, 05 Jan 2015 10:47:38 +0100
- To: "Cameron McCormack" <cam@mcc.id.au>, "L. David Baron" <dbaron@dbaron.org>
- Cc: "Tab Atkins Jr." <jackalmage@gmail.com>, "www-style list" <www-style@w3.org>
On Sun, 21 Dec 2014 01:07:06 +0100, L. David Baron <dbaron@dbaron.org> wrote: > On Sunday 2014-12-21 10:22 +1100, Cameron McCormack wrote: >> (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. > > Well, I wish setProperty always had append semantics (which I should > perhaps call remove-and-append semantics), but it may be too late to > go back to that. > > I believe it had remove-and-append semantics in Gecko prior to: > https://bugzilla.mozilla.org/show_bug.cgi?id=288574 which switched > to replace-or-append, although we've since added additional > optimizations that depend on the replace-or-append semantics in: > https://bugzilla.mozilla.org/show_bug.cgi?id=498562 . > > (By replace-or-append, I mean the algorithm in > http://dev.w3.org/csswg/cssom/#set-a-css-declaration . > Remove-or-append semantics would mean changing step 1 of that > algorithm to remove the existing declaration, and then dropping the > "Otherwise" from step 2.) > > (This is related to the debate we had last year about !important, > http://lists.w3.org/Archives/Public/www-style/2013Sep/thread.html#msg201 > http://lists.w3.org/Archives/Public/www-style/2013Oct/thread.html#msg2 > in which I eventually gave in.) > >> 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.) > > Well, it would probably need to move the physical and logical > properties, once the 'logical' keyword is introduced. > > This is a bit of a mess; I don't see a good solution unless we can > switch to append semantics for setProperty instead of > replace-or-append. (I'm curious if the current replace-or-append is > fully interoperable. Gecko did once do remove-and-append.) http://software.hixie.ch/utilities/js/live-dom-viewer/saved/3348 WebKit/Blink/Gecko/IE11 do replace-or-append, Presto does remove-and-append. -- Simon Pieters Opera Software
Received on Monday, 5 January 2015 09:46:59 UTC