- From: MURAKAMI Shinyu <murakami@antenna.co.jp>
- Date: Wed, 02 Jun 2010 05:04:39 +0900
- To: "L. David Baron" <dbaron@dbaron.org>
- Cc: "MURATA Makoto (FAMILY Given)" <eb2m-mrt@asahi-net.or.jp>, Hakon Wium Lie <howcome@opera.com>, www-style@w3.org, Jaeho Lee <jaeho@uos.ac.kr>, Ning Li <ningli@public2.bta.net.cn>, komachi@y-adagio.com, "KOBAYASHI Tatsuo(FAMILY Given)" <tlk@kobysh.com>, Seiichi Kato <seiichik@microsoft.com>, Masanori Kusunoki <Masanori.Kusunoki@microsoft.com>, yjkweon@keris.or.kr, Yong-Sang Cho <zzosang@gmail.com>, Sam Gyun Oh <samoh21@gmail.com>, sblim@sookmyung.ac.kr, speeno@haansoft.com, jungkwon@haansoft.com, sadian@ksa.or.kr, hykim@incube.co.kr, shik@kats.go.kr, mike@w3.org, ishida@w3.org, bert@w3.org, masao@w3.org, phobos chang <phobos.chang@gmail.com>, selena <selena@cmex.org.tw>
"L. David Baron" <dbaron@dbaron.org> wrote on 2010/06/02 0:40:48 > On Sunday 2010-05-30 08:50 +0900, MURATA Makoto (FAMILY Given) wrote: > > > There is no consensus in the CSS WG to add the proposed 30 new > > > properties. > > > > It was agreed to incorporate them into the next draft. Then, David Hyatt > > and Boris Zbarsky explained their implementations of the 30 new properties. > > Their implementations are very simple and do not appear to have any problems. > > They are not simple, and they do have problems. (I say that as the > person who first implemented *-start and *-end properties in Mozilla > [1].) I understand implementing the feature is not simple, but you did and it works almost sufficiently. > > I mentioned serialization and object model issues in > http://lists.w3.org/Archives/Public/www-style/2010Jun/0003.html . > Let me give an example: > <!DOCTYPE html> > <p id="elem"></p> > <script> > var p = document.getElementById("elem"); > p.style.marginLeft="3em"; > p.style.MozMarginStart="2em"; > document.write(getComputedStyle(p, "").marginLeft + "<br>"); > // prints 32px > p.style.marginLeft="3em"; > document.write(getComputedStyle(p, "").marginLeft + "<br>"); > // prints 48px > document.write(p.style.cssText + "<br>"); > // prints margin-left: 3em; -moz-margin-start: 2em; > var attr = p.style.cssText; > p.removeAttribute("style"); > p.setAttribute("style", attr); > document.write(getComputedStyle(p, "").marginLeft + "<br>"); > // prints 32px > </script> > What happens here is that our attempts to preserve order of > declarations when serializing and to avoid changing order when > mutating a property already in the declaration (which we want in > general) are interacting badly with our code to avoid serializing > the internal *-value and *-source properties, and the interaction > causes the serialized form of the declaration to mean something > different from what it actually means (it serializes to > "margin-left: 3em; -moz-margin-start: 2em;" when the underlying > declaration is really equivalent to "-moz-margin-start: 2em; > margin-left: 3em"). > > This is fixable, but it requires another set of code (a set we don't > already have) specifically for these properties. We won't have > implementations behaving the same on cases like these unless the > specification defines the behavior we want. > > > I think I support the proposal, but I'm disturbed that it is being > presented as much simpler than it really is. If we want to have an > honest discussion about this proposal, we should be clear about its > complexity rather than hiding it. And the difficult parts of > implementing the proposal should be mentioned in the spec so that we > solve them once, together, rather than making each implementor solve > them separately (and differently). I tested your example with WebKit (with s/Moz/webkit/), the result is: 32px 48px -webkit-margin-start: 2em; margin-left: 3em; 48px It seems correct. I'd like to standardize this behavior. > > The editor's draft specification currently says only: > # If both logical and physical properties are specified on the > # same element, these corresponding properties are treated as same > # property and then normal cascading rules are applied. > This is ambiguous; it does not describe a mechanism for "treated as > the same property", and therefore does not describe a single > interoperable behavior for many cases. I'll change the wording to: ..., logical properties are converted to physical properties ... > > In order to be clear about the complexity of the proposal, the > specification should (1) describe how cascading is to be handled, > probably by incorporating something like one of the proposals cited > in http://lists.w3.org/Archives/Public/www-style/2010Jun/0003.html > and (2) describe whether the longhand properties both proposals > require are normal properties or are (as they are in Mozilla's > implementation) a new class of hidden properties and (3) if the new > properties are hidden, describe the effects of hidden properties on > the CSS object model. > > -David > > [1] https://bugzilla.mozilla.org/show_bug.cgi?id=74880#c60 -- ζδΈ ηι (MURAKAMI Shinyu) http://twitter.com/MurakamiShinyu Antenna House Formatter: http://www.antenna.co.jp/AHF/ http://www.antennahouse.com
Received on Tuesday, 1 June 2010 20:05:21 UTC