先日作った MagpieRSS による RSS Reader 、ヒマを見ては少しずつプログラムの仕様とデザインをいじり続けています。今後のプログラム仕様と PHP 周りの技術的な「難すぅ~ぃ話」は RSS Reader のページに展開していくとして(外から見ても分かりませんしね)、今回はそのデザインの話です。まぁでもやっぱり「難すぅ~ぃ話」になってしまうんですが(^_^;
取得記事一覧のページの記事タイトルのみをばばっと表示させる RSS Reader なんですが、見た目からすると以下のようにタイトル部分の横位置がそれぞれずれてしまっています。
これは日付に使っている "Impact" というフォント書体 *1 が等幅タイプではなくプロポーショナルになっているからで、 *2 日付の文字列によって変わる文字列の幅がそのままタイトルの横ずれになってしまっているという症状です。細かい所なんですけど、ホラ、私は根っからのA型っていうことで(笑)
今思いつく解決法は、
1. は折角作り上げた見た目が変わるからイヤ。
2. にすると携帯電話や PDA で読みにくくなるからイヤ。
となると、当然 3. になるわけですがこれが不可能に近いといったほどイバラの道となるのでした…
フォントが別のものに置き換えられたりアイコンが付けられている日付表記ですが XHTML では以下のように書いています。
<span class="date">2006-01-14 23:38</span>
これを入れてやれば、CSS の装飾によってブラウザ画面上には
2006-01-14 23:38という表示がなされます。この日付表示の幅を固定するのであれば CSS によって、
width:9em;
などとしてサイズを指定してやれば完璧じゃん? と思えますが、ところがどっこいそうは問屋が卸しませんよ。なぜなら通常の汎用インライン要素 (span) は、width や height などによるサイズ指定が出来ない要素だからです。
インライン要素に対して、ブロック要素というのがあります。インライン要素は簡単に言えば文章。ブロック要素は簡単に言えばその名の通り「箱」。ちょっと乱暴に言うと、全てのウェブデザインはこれら2つのみによって構成されています。
すべてのインライン要素は、それが入れられているボックス要素の大きさのみによってサイズが決められます。分かりやすく言うと、同じ文章量でも A4 の紙に書くのと A5 の紙に書くのでは行幅と行数(つまりサイズ)が違ってきますよね? 文章(インライン要素)のサイズは紙の大きさ(ブロック要素)にゆだねられたものでなければなりません。そのため、インライン要素に幅や高さの指定をすることはあり得ないのです。
しかしそれでは HTML の構造をきちんと持たせたままのデザインがしにくかろうということで、CSS 2.1 から新たにサイズ指定が出来るインライン要素、インラインブロックという考え方が導入される予定です。W3C には以下のように記述されています。
This value causes an element to generate a block box, which itself is flowed as a single inline box, similar to a replaced element. The inside of an inline-block is formatted as a block box, and the element itself is formatted as an inline replaced element.
この値により生成されるブロック要素は、インライン要素として文章と一緒に流し込み可能な性質を持つ、ブロック要素として機能します。
(かなり意訳 by たけだ@管理人)
具体的なプロパティ指定は、
display : inline-block;
ですが、今はまだ正式に CSS 2.1 に対応しているブラウザはありませんのでまだ使える手ではありません。
何故かというと8割くらいのブラウザに対しては効果あるから。私が試したブラウザは Internet Explorer 6 と Mozilla Firefox 1.5 と Opera 8.5 で、実験結果は以下の通り。
| ブラウザ種別 | 通常のインライン要素のサイズ指定 | インラインブロックのサイズ指定 |
|---|---|---|
| Internet Explorer 6.0 | 可 | 可 |
| Mozilla Firefox 1.5 | 不可 | 不可 |
| Opera 8.5 | 不可 | 可 |
| Safari 1.2 | ? | ? |
というわけでそれぞれのブラウザが行う処理は様々なんですが、結果的に表示反映されないのは Firefox のみなので、当サイトアクセス解析によるブラウザ比率から考えると、
| ブラウザ種別 | 割合 | 表示に反映 |
|---|---|---|
| Internet Explorer 6 | 81.5 % | o |
| Internet Explorer 5 以前 | 11.4 % | ? |
| Firefox 1 | 4.1 % | x |
| Firefox 0 | 0.1 % | x |
| Safari すべて | 1.8 % | ? |
| Opera すべて (7 および 8) | 1.1 % | o |
なーんだ、8割以上は(経緯はどうあれ)大丈夫なんじゃん!(笑)
というわけで、CSS 2.1 が将来的に各ブラウザに採用されるのを見守りつつ、手は打っておいた上でそれの様子を見るという形で決着が付いたのでした。…内容難しかった?
コメントする