Hatena::Groupweb

vantguarde

2.5

State of the Browsable Web 2009: CSS Multi-column Layout

| 21:52

さてと。

昨年12月ですが、Multi-column LayoutのCRが公開されました。

「CSS3」とタイトルに入ってないのは、下位レベルがないからです。下位レベルがあるものは「CSS *** Module Level n」に、ないものはLevelを取るという命名指針が結構前に決まってたんですが、ようやくこのモジュールもそれに準じたものになりました。他のもそのうちなってくでしょう。

LCからは、カラム幅より大きな何かが float されている場合の処理が変更になり、それまではカラムを超えてちゃんとfloatがきく予定だったのですが、カラム幅でクリップされてしまうようになりました。

さて、いちばん大きかったのは、column-break が削除されて、break-before, break-after, break-inside というプロパティが替わりに導入された事でしょうか。

もともとは昨年3月のTokyo F2Fで、page-break-* との関連性について議論され、page-break-* と決定されました。プロパティを再利用し、カラム用の値は新しく定義して対処しようという話です。

Resolved: page-break-before, page-break-after: column to force column breaks, other values apply to column breaking as well as pages.

Minutes and Resolutions Tokyo F2F Thurs: Page-breaking, GCPM, Image-resolution, Multicol

It should also be noted that using the page-* propoerties to set preferences on columns is not ideal. However, introducing three new properties to describe column behavior seems excessive.

*

カラムのためだけにプロパティが増えるのは好ましくないという判断でしたが、反論が出たりや問題点が明らかになったりしました。

で、3つの提案が。

  • page-break-* を維持して、足りない値を追加する。
  • column-break-* を復活させ、page-break-* との関係について定義する。また、break-* という、どちらの値をもセットする新しいプロパティをショートハンドとして用意する。
  • break-*page-break-* のエイリアスとして定義する。

で、2つ目のが採用されました。

Resolved: Add three new column-breaking properties and shorthand to combine them with page-break properties per Melinda's email item 2.

Minutes and Resolutions 2009-04-29

しかーし。その後フランスで行われたF2Fでまたもやひっくりかえります。

Resolved: Introduce page-break-* properties as syntactic sugar for new break-*. Rationale: Adding column-breaking controls to page-break-* doesn't make much sense, but the WG wants to avoid introducing a second set of properties.

Minutes and Resolutions June 2009 F2F

page-break-*にカラム系の値が入るのはなんかアレなんだけど、全く別のセットとして定義するのは実装側に好まれなかったというのが理由です。

というわけで、3つ目っぽい決定がされました。CRを見てみましょうか。

Three new properties are introduced to allow column breaks to be described in the same properties as page breaks: ‘break-before’, ‘break-after’, and ‘break-inside’. These properties take the same values as ‘page-break-before’, ‘page-break-after’, and ‘page-break-inside[CSS21]. In addition, some new keyword values are added.

5. Column breaks

In addition, some new keyword values are added. とあるので、1つ目も含んだ感じですね。

さて、いつ実装されますかねえ。

1.14

HTML5からcanvasの2D Contextが分離

02:40

さて、落ち着いたかな。

そんな感じでタイミングをみてたらだいぶ遅くなってしまいました。

何かというと、Microdataと同じ日にcanvasの2D Context APIも分離されました。

これはなにかというと、canvas.getContext("2d")が返すオブジェクト (CanvasRenderingContext2D) のインターフェースになります。なんでそんな面倒な説明をしてるかというと、canvas要素は引き続きHTML5にあるからです。

いろいろ理由はありますが、とりあえず近接してるのは、MicrosoftのAdrian Batemanが昨年11月にfileしたバグになります。

As discussed on the mailing list and F2F at TPAC, we propose that the API for the Canvas 2D context be defined in a separate document:
http://dev.w3.org/html5/canvas-api/canvas-2d-api.html

The canvas element itself should still be defined in HTML5 and so section 2 of the new document should be removed from the draft. If the working group agrees to this change then a new Bugzilla component should be created and then a new bug can be filed to ensure this section is removed.

Bug 8331 – Move the Canvas 2D context API into a separate spec

以前Doug SchepersとEliot Graffが提案してたcanvas要素を含めた分離ではなく、2D Context部分と限定していますね。

で、これには特に反対がなかったので分離されたと。

今後の予想としては、HTML WGにCanvas Task Force的なものができてそこでの作業かなと。canvasはアクセシビリティ関連のAPIをどうするかとか、SVGとの連携うんぬんというのもあるので、まあ面倒な感じになりそうです。とはいえ実装もかなり前からありますし大きくは変えられませんから、使う分においては問題が起こらないかなあと。

他にもあった気がしますが、とりあえずこの辺で。

コメントをいただいたので追記。

APIは標準提供されなくなるって事ですか?それとも canvas.getContext("XXX") に拡張性が出来たという事?その辺りが分からない。

*
標準提供のくだりに関しては、まあそういうことになるでしょう。diffを見ると<p>Contexts are defined by other specifications.</p>という段落が追加されているのが分かると思います。 拡張性については、以前よりOther specifications may define their own contexts, which would return different objects.と書かれていましたので、今回の件で拡張性ができたという意図なら誤りですね。WebGLなんかがすでに出ていますし。

1.8

MicrodataがHTML5より分離

| 23:38

だいぶ前ですが、Microdataについて書いた事がありました。

Microdataをひとことで言うと「セマンティックなやつ」になります。取りあげてから仕様がかなり変更されてるので、参考にならなかったりしますが…

さて、セマンティックでHTMLといえばRDFaがあるわけで、それに似たような仕様ができると、まあ面倒な事になります。というわけでメタ議論も含め数え切れないほどのメールが流れ、不毛な時期がけっこう続きました。

で、最終的に「MicrodataをHTML5から分離する」というChange Proposalが受理されて、分離する事が決定されました。Chairのひとたちがまとめた文書には、決定に至るまでの経緯なんかもまとめられています。

で、今日の朝あたりに早速分離する作業が行われました。

W3CのCVSサーバになんか問題があるらしくHTML5 EDの方にはまだ反映されてませんが、MicrodataのEDはすでに公開され、FPWDとして公開するためのCfCもMaciejより投げられました。

MicrodataはDOMインターフェースを備えてるのと、DnDと組み合わせて構造化されたデータを移動できるなんて提案もされてますし、面白い規格ではあります。

Mozillaは実装を検討しているようです。

I approve of publishing this. We're planning on implementing this in Firefox, though don't have a specific timeline yet. Hopefully there will be some support in Firefox 3.7, definitely in the release after that.

Re: CfC: Publish HTML5 Microdata as First Public Working Draft and a new HTML5 Working Draft

頑張れば3.7にちょっと入るかもとか言ってますね(注:Mozilla時間)

また、Operaのvideo実装をやってるらしいPhilip JägenstedtさんがMicrodataにコミットしていたりします。個人的な興味だと確か言っていましたが、ちょっと期待したいかなと。

WebKitがHTML5のSectioning Content (など)をサポート

| 20:47

タイトルの通りなのですが、年末年始の間にWebKitがSectioning Contentをサポートしました。section, nav, article, asideのことです。

navがありませんが、これだけなぜか8月にサポートされてます。

で、それだけでは終わらず、headerfooterもきました。

こうなるとhgroupも欲しいところですが、ついさっきバグがパッチ付きで立てられました。

というわけで、近日中にサポートされそうです。

2010

20:05

HTML5は勧告されませんが、CSS 2.1とSelectorsはいけそうな感じですね。楽しみです。

さて、昨年は世界標準とかXHTML2とか残念に思う出来事がいくつかありました。で、残念な人を減らすべく情報を出していこうと思うようになりました。今年もそういう気持ちで書いていこうと思います。

偉ぶってしまいましたが、2009年のまとめも終わらせられない自分にも残念でした。これはなるべく今月中に終わらせたいですね…

今年は「まとめて書く」のではなく「ちょっと書いて後でまとめる」という風にしたいです。

というわけで、こんなところの情報をあてにする人が居るかは分かりませんが、今年もよろしくお願いします。

12.17

State of the Browsable Web 2009: CSS3 Backgrounds & Borders

| 01:06

昨年ぐらいから活発になってきた印象を受けるBackgrounds & Bordersですが、CRが公開されました。

追いかけてなかったので、さっぱりです。

というわけで調べたりしました。時間かかった…

box-shadow のドロップ

大きなものからいきましょう。「えっ」という変更ですが、そうなっちゃいました。

Resolved: Drop box-shadow from CSS Backgrounds and Borders Level 3: work on box-shadow outside the module for the time being, possibly re-merge with draft later. Rationale: drop-shadows seem to need a lot more discussion, but the rest of the draft is ready to move on.

Minutes and Resolutions 2009-09-30

とはいえ、10月のLC時点で無くなっていたんですけどね。

なんでドロップされたかですが、他の機能は安定してきてるけど、ドロップシャドウはまだいろいろ話す事があるのでとりあえず別に作業するというそんな理由になります。再統合の可能性も高そうな書き方をしているので

その「いろいろ」ですが、ひとつはborder-imageとの関わりになります。2月のTeleconで、box-shadowborder-imageで上書きされないという仕様が決まったんですが、Brad Kemperがそれに反対したんですね。

Bradは前々からデザイナーという立場から特にこのモジュールに対してコミットしてた人で、その経緯もあってかその後Invited ExpertとしてCSS WGのメンバーになり、またこの仕様のEditorになりました。すごいですねー

話は戻って、David Hyattがborder-imageをマスクにしてはどうかという提案をして、議論が発展していきます。

Rather than suppressing the shadow, what about using the border-image as a mask when deciding how to draw the shadow? In theory it should be possible to intelligently draw a more complex shadow for a border-image object.

Re: Minutes and Resolutions 2009-02-04: box-shadow and border-image

とはいえ、これは「ドロップシャドウ」ではないところが難しいところなんですよね。

議論は続きますが結論が出ない状態が続きます。別に border-shadow という新しいプロパティを設けてはどうかという提案があったりもしました。

とまあ、そんな経緯でとりあえずドロップと。消極的な感じはするんですが、確かに根深い問題です。

現在はBradによるドロップシャドウの提案に話題が移ってますが、このモジュールのスコープ外のような気がするので省略。

ドロップシャドウはSVGのフィルタをCSSから使えるようにするという話との絡みもあるので、興味がわいたらもうちょっと調べる事にします。

ぜえぜえ。

borderborder-image

border というショートハンドがありますが、border-image との関わりが定義されていませんでした。こちらは border から border-image を指定できるように拡張することを行わないことと、ただ border によって border-image がリセットされることが決定されました。

後者には注意しないといけないかもですね。

border-image のサブプロパティ

fantasaiがCSS3.infoでとったサーベイ結果をふまえて、border-image のサブプロパティが導入されました。border-image はショートハンドになります。

追加されたプロパティはborder-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat の5つ。結構多い事とそれらの関連を説明する必要があったためか、LCからは独立したセクションになりました。

ちょっと調べてみましたが、サブプロパティの実装はまだ始まっていないようです。あ、それと、border-image の使い方が 「border-image を利用したボックスデザイン」にてとても分かり易くまとめられています。

とまあ、全然ステータスという感じではないですが、気になったものをまとめてみました。Background系にまったく触れてないというね。

12.11

State of the Browsable Web 2009: CSS3 Namespaces

| 01:13

今回はXHTML以外のXMLや複合文書にCSSを書かない限りはお世話にならなそうなCSS3 Namespaceです。なのでBrowsable Webに入るかというとそうでもないような気がしますが、ちょっと面白い話題があったのでこだわらず行きましょう。

仕様の現時点でのステータスはCRですが、長年実装もあるモジュールです。2月にはImplementation Reportが作成され、PRへの準備が始まりました。

「各機能に対して2つ以上の実装」という要件を満たさないと基本的には勧告できない*1わけなんですが、ひとつだけそれを満たせないテストがありました。syntax-013.xmlです。そして、このテストについてDavid Hyattが質問を投げたんですね。

該当箇所は次の通り。style要素に、閉じられていない@namespace x "textなる宣言もどきがあります。

<style>
 t, t2, t3, t4, t5 { background:red }
</style>

<style id="a">@namespace x "test</style>
<script>
 document.getElementById("a").sheet.insertRule("x|t2 {background:lime }", 1)
</script>

<p><t2 xmlns="test">This sentence should have a green background.</t2></p>

A syntactically invalid @namespace rule (whether malformed or misplaced) must be ignored.* と仕様にあるので、これは無視されnamespaceの宣言が無効になるのではないかと。すなわちテストが誤りではないかとの指摘です。

ところが、これ仕様通りなんですね。

Unless the stylesheet processor is required to magically fix up the missing closing quote.

It is. See http://www.w3.org/TR/CSS21/syndata.html#parsing-errors the "Unexpected end of style sheet" bullet.

Re: Agenda+ CSS Namespaces implementation report

はい。見てみましょうか。

User agents must close all open constructs (for example: blocks, parentheses, brackets, rules, strings, and comments) at the end of the style sheet. For example:

  @media screen {
    p:before { content: 'Hello

would be treated the same as:

  @media screen {
    p:before { content: 'Hello'; }
  }

in a conformant UA.

Rules for handling parsing errors ― Unexpected end of style sheet (CSS 2.1)

なあんと。スタイルシートの終わりに達してもまだ何かが開いた状態の場合は、それを閉じるエラー処理が定義されてるんですねー。そういえばそんなのありましたねー

というわけで、指摘されていたstyle要素は@namespace x "textのみで終了してるので、そこでエラー処理が働いて@namespaceが解釈されるようになります。こういう話だったんですね。

という感じで、そういうことになるようです。むつかしいですねー

で、いろいろ手の早いWebKitは早速修正しましたとさ。

ちゃんちゃん。CSS 2.1の話になってしまった感がありますが、まあ。

*1:実はSHOULDだったりする

Contact: @vant / lepetitcroissant@googlewave.com / lepetitcroissant@gmail.com.