2005 年 9 月の履歴(もしくは日誌)


2005 年 9 月

9 月 7 日

CSS signature について

CSS signature ってのは「naoya のはてなダイアリー」で初めて知りした.「naoyaのはてなダイアリー - CSS signature」を読んだ範囲では,閲覧者側が Web ブラウザーのユーザスタイルシートに個々の Web サイトに対しての設定を書き込めるように,body の id を振るようにしようという話らしいですね.

<body id="onohiroki-cycling-jp"> となっていれば,スタイルシートに body#onohiroki-cycling-jp p {font-size: 12pt;} なんて指定をすれば,本文のテキストが 12 ポイントで表示されるようとか指定できます.よく見に行く Web サイトで,見にくいところがあれば,自分でスタイルシートを書いて,ユーザスタイルシートとして自分の Web ブラウザに登録しておけば Web サイト制作者のスタイルシートよりもユーザスタイルシートが優先されるわけです.これはおもしろいですね.手軽だし.

でも,どうして body 要素なんだろう.html 要素の id ぢゃだめなのかな?
(追記:kota さんのご指摘HTML 4.01 Specification を確認したら html 要素では id 属性持てないようです.なるほど!)

例えば example.com というサイトで Weblog サービスをしていたとしましょう.ユーザ ID が onohiroki の Weblog が http://blog.example.com/onohiroki/ だとします.

[削除:html 要素の id を example-com として,body 要素の id を blog-example-com_onohiroki ってすると便利そう.example.com 全体に対するユーザスタイルシートと,特定ユーザの blog に対するユーザスタイルシートをかき分けられるから.]

Weblog サービスの為の CSS signature の為の id の文字列がが特定ユーザが識別できるように ユーザ ID 込みだと,Weblog サービス全体に適応するってのをどうするかが気になります.

CSS の定義で,body[id~=blog-example-com] という指定が,現在使われているほとんどの Web ブラウザで有効なのであれば <body id="blog-example-com onohiroki"> っていう書き方でもよいですね.Safari と Firefox と Opera では有効なようでした.他は未確認.id の属性値をスペース区切りで列挙するのであれば,柔軟な指定ができます.

body#blog-example-com という指定
id 属性値に blog-example-com という値が含まれている場合にマッチ
blog.example.com に対してのスタイルシートを定義
body[id~=blog-example-com][id~=onohiroki] という指定
id="blog-example-com onohiroki" と両方とも指定されている場合にマッチ
blog.example.com/onohiroki/ に対してのスタイルシートを定義

このように書き分けられるから <body id="blog-example-com_onohiroki"> という書き方よりは <body id="blog-example-com onohiroki">という書き方が良いと思います.

でも onohiroki などのユーザ ID をそのまま id 属性値に使うのは良くないかも.良くないなら blog-example-com と blog-example-com_onohiroki を列記かな.

id の命名規則があいまいな件は,衝突さえ起こらなければ良いのではないかと思います.

(追記:あとからちょっと書き換えました.blog-example-com と blog-example-com_onohiroki を列記はどうかという話を最後にして,CSS のセレクタの説明では,id="blog-example-com onohiroki" を前提にしました.そうしゃないと [id~=blog-example-com][id~=onohiroki] という指定が意味をなさないから...)

(追記:id 属性値は空白区切りで値を列挙できないから,CSS で ~= セレクタを使って [id~=blog-example-com][id~=onohiroki] という指定はできない!)

http://onohiroki.cycling.jp/tb/tb.cgi/weblog_d20050907n1 TrackBack