CYBER@GARDEN

home > Web::Blogoscope > 構造と表現の衝突

Web::Blogoscope

構造と表現の衝突

今執筆中の本でちょっとだけ触れる予定の「構造と表現の衝突」という問題について。私が思っていることの大意は次のとおり。

「たとえばCSSdisplayプロパティを利用して任意の要素を非表示化したり、ブロックレベル要素をインライン化できる。また、:before/:after疑似要素とcontentプロパティを利用して(X)HTMLとは無関係に任意の内容を生成できる。これらにより、ユーザーのスムーズな構造認識が妨げられるという事態が起こりうる。」

卑近なところでは、div要素やspan要素の濫用、classセレクタやidセレクタの濫用も「構造と表現の衝突」に含まれるだろう。

CSS3(現在、勧告候補か草案まで進んでいるモジュールもあるが、未着手のモジュールもある)を読んで、ますます「構造と表現の衝突」が進んでいると感じる。CSS3では疑似クラスや疑似要素が大量に追加される予定だが、これらの「疑似」という曖昧さが「衝突」のひとつの象徴といえる。

本の執筆と並行してサイトのリニューアル作業をしており(遅々として進んでいない)、screen向けCSSでもprint向けCSSでもdisplayプロパティを随所で使っているのだが、print向けはまあよいとして、screen向けでdisplayプロパティを使用するのはどうだろうかと、少し考え込んでしまう。

特に悩むのは、ある要素を「display: none;」で非表示化すべきかどうか(「text-indent: -9999px;」も同じこと。ただし、IBMホームページリーダーなど一部の音声ブラウザ向けにはこちらのほうがよいという意見もあり、実際にそうなのだが、私はこのような「いさぎの悪さ」が好きではない)。

また、グローバルナビゲーションのli要素を「display: inline;」でインライン化する手法はわりと一般的だが、構造的に「ブロックレベルのリスト項目」であるものを、無理から見た目として「インラインのテキスト」にしてしまうのも、ちょっと気が引ける。「display: none;」ほど構造と表現は衝突していないし、いろんな意味でとても有効な方法だとわかってはいるのだが。

「構造と表現の分離」はとてもわかりやすい概念だが、いざ完全を期そうとしたとき、どこまでが構造でどこまでが表現なのかを線引きするのはとても難しい。XHTML 1.1でいったんプレゼンテーションモジュールに分類されたsup要素とsub要素がXHTML 2.0(草案)でテキストモジュールに分類し直されたのがひとつの例だ。

Webページの構造と表現を両立させつつ(より正確に言えば、見た目にこだわりつつ。見た目にこだわらなければこの種の悩みは雲散霧消する)、ユニバーサルにアクセス可能な状態にするには、現状は上記のような衝突テクニックを使わざるをえないのだが、たぶんこのような違和感を抱いているのは私だけではないだろう。

Posted on 2005-01-28T20:04+09:00 | Category: Web標準

トラックバックPings

トラックバックのURI:
http://www.cybergarden.net/mt/mt-tb.cgi/136

» Re: 「構造と表現の衝突」という問題 from 鳥さんの独り言
なるほど、大げさな話、例えば本文がタイトルだけで、あとはすべて:before、:after疑似要素で塗り替えてしまうことも可能なわけだ。(おっと、これではCSS2対応ブラウザ向けの、新たな検索... [Read More]

Tracked on 2005-01-29T20:54+09:00

コメント

« 第40回 有名駅弁大会 | ブログトップ | エントリーに番号を振る理由 »