- From: Håkon Wium Lie <howcome@opera.com>
- Date: Mon, 7 Jun 2010 21:45:29 +0200
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: John Daggett <jdaggett@mozilla.com>, MURAKAMI Shinyu <murakami@antenna.co.jp>, Boris Zbarsky <bzbarsky@mit.edu>, www-style list <www-style@w3.org>, Hakon Wium Lie <howcome@opera.com>
Also sprach Tab Atkins Jr.: > > Couldn't "user swapping" be thought of in terms of an alternate > > stylesheet choice? This seems far more robust than relying on > > changing writing-mode and expecting everything to "just work" (assuming > > fallback can be dealt with in other ways). > > If we're going to do that, then we should just bite the bullet and do > a @writing-mode [rtl|ltr|ttb] {} block, like Hakon suggested way back > during the first incarnation of this discussion. Let's try to get an overview of the various proposals. In no particular order, I see: 1) direction-dependent aliases: introduce aliases for properties with top/right/bottom/left in their names. The aliases are not real properties, and they are resolved when the computed value of 'writing-direction' is known. For example, body { margin-before: 10px } is resolved into body { margin-top: 20px } for lr-tb text. This scheme is described in the current editor's draft: http://dev.w3.org/csswg/css3-text-layout/ 2) duplicate sets of properties: two parallel sets of properties exist, one physical and one direction-dependent (aka "logical"). And then one or several properties to decide which of the two sets to use. For example: body { margin-before: 10px; direction-model: logical } Here are two such proposals: http://lists.w3.org/Archives/Public/www-style/2006Jun/0084.html http://lists.w3.org/Archives/Public/www-style/2002Aug/0396.html 3) pseudo-classes: introduce pseudo-classes to select elements based on @dir and/or the initial value of 'writing-mode'. For example: body:ltr { margin: 10px 20px 30px 40px } body:rtl { margin: 10px 40px 30px 20px } body:ttb { margin: 40px 10px 20px 30px } This proposal is sketched here: http://lists.w3.org/Archives/Public/www-style/2010Jun/0190.html 4) media queries: like 3), except that media queries are used instead of pseudo-classes: @media (dir: ltr) { body { margin: 10px 20px 30px 40px }} @media (dir: rtl) { body { margin: 10px 40px 30px 20px }} @media (dir: ttb) { body { margin: 40px 10px 20px 30px }} 5) alternate style sheets: put the rules for the various writing modes into different style sheets that are selected through the alternate style sheet mechanism in CSS. For example, there could be three files: lrt.css contains: body { margin: 10px 20px 30px 40px } rtl.css contains: body { margin: 10px 40px 30px 20px } ttb.css contains: body { margin: 40px 10px 20px 30px } We would probably need to establish a convention to label style sheets that are meant for vertical mode etc. so that these can be applied automatically based on which "mode" the UA is in. --- Brief analysis All proposals have the potenial to solve the problem at hand: to change certain property values when the writing-mode changes and to provide graceful fallback values when a UA that does not support vertical writing shows the document. The proposals uses three distinct mechanisms to solve the problem: 1) and 2) adds more properties/aliases on the "right" side 3) and 4) adds new types of selectors/queries on the "left" side 5) uses alternate style sheets The solutions they offer are also different: 1) and 2) allows only a distinct set of properties to be set based on writing-mode changes 3), 4), and 5) allows any set of properties to be set The cost for implementations vary: 2) uses more memory than the other as it stores duplicate sets of values 1) introduces new complexities in the cascading process; the computed value of 'writing-mode' must be found before cascading can be completed. 3) and 4) introduces new functionality (selectors/media queries) 5) is implementable without any changes to CSS Personally, I'm leaning towards 3) or 4). 5) could also work. I find 1) and 2) limiting in the styling they can express, and 2) much too expensive in terms of memory used. Cheers, -h&kon Håkon Wium Lie CTO °þe®ª howcome@opera.com http://people.opera.com/howcome
Received on Monday, 7 June 2010 19:46:23 UTC