1.023world - ヤドカリパークとマリンアクアリウム -

海洋の仕組みと細菌・微生物から学ぶマリンアクアリウムサイト

1.023world Facebook

結果 Oh! Life (旧ブログ)

懲りずに書いてみたりする結果オーライな日記

点線or波線が崩れるIEのCSSバグ回避

3年くらい前にやってたアメバブログでも書きましたが、未だに役に立ちそうな情報なので、また公開したいと思います。

HTML + CSS のコーディングに於いて、レイヤのサイド(left or right)に 1 ピクセルの点線や波線を施した場合、IE では縦スクロールしただけで見事に崩れてしまう不具合をご存じでしょうか?
こんな感じです。

1ピクセルの点線や波線は、IEでの縦スクロールにて不具合が発生する

これは dashed (波線) の場合ですが、これを仮に dotted (点線) を使っても同様に崩れます。
しかし、ボーダーの太さを 2 ピクセル以上に設定すると不具合は発生しません。 1 ピクセル時のみの不具合のようです。

蛇足ですが、IE 6 では 1 ピクセルの点線が 1 ピクセルの波線とまったく同じレンダリングをしてしまうと言うバグもあります(笑)

さて、この現象の回避策を、たまたま CSS を触っていたときに発見しました。
一見ボーダーとは無関係な「背景」に関する CSS を追加してやるだけで見事に解消されるのです。

このように body に対して背景固定のCSSコードを一行追加してやります。

body {
  background:url(null.gif) fixed;
}

たったこれだけで、あんなに崩れていたボーダーが見事に改善されます。
もし body に対して既に背景を指定している場合は、そこへ fixed のみ追記すればOK。

尚、この時の null.gif は実際に存在しないパスでも良いのですが、サーバーにエラーログが残るのがイヤなら 1×1ピクセル程度のダミー画像を用意されると良いでしょう。但し、パスを空にすると改善しないので、何かしらパスの指定が必要になります。
その他、無駄にリピートさせるとブラウザの負荷にもなり兼ねないので、no-repeat も付け足すと良いと思われます。

この措置により、以下のように改善されます。

背景に適当な画像を割り当てて固定(fixed)するだけで不具合が回避される

ちなみに、IE の点線の処理方法を見ていると、白紙に黒い点々を描くと言うよりは、穴を空けた白紙を黒い紙の上に載せて点線に見立てているような感じがします。
それ故、このような回避策が得られたのでしょうか?

いずれにしても IE には早く改善して貰いたいモノです。
が、この不具合は IE 8.0 ベータでもまだ見られますけど(汗)

こちらのエントリーもどうぞ♪

タグクラウドというもの

タグクラウド
直訳すると「タグの雲」を意味し、雲のように表示されるタグ文字列が大小さまざまに浮かんでいるように見えることからこの名前が付けられた。
ウィキペディアより引用

今までみなさんのブログでこの「タグクラウド」というものを見かけることはあっても、あまりクリックもしたことがなかったし、興味もなかった。と言うか、そもそも何のためにあるのかいまいちよく判らなかった。しかし、最近になって自分の記事がぼちぼち増えてくると、なんとなくその存在意義が見えてきたように思う。

まず一般的にブログとは、記事が延々と増殖していくにしたがって、古い記事がどんどん奥へ奥へと追いやられてしまう仕組みだ。そうなってくると、一見有り難そうに見える「カテゴリー」や「アーカイブ」などの誘導だけでは、とてもじゃないが必要な情報を思うように辿ることはできなくなってくる。記事が多ければ多いほど、分類と時系列だけでは目的地が一向に見えてこないのだ。

しかしインターネットをブログから始めた世代にとっては、これはごく自然で当たり前の事なのかも知れない。そんな流れを見て僕も少しでも馴染もうと励んでいたが、いまひとつこのブログというモノは苦手な分野のひとつだった。そしてやはりそれは僕がソフトや手打ちでウェブを作り始めた世代だからだろう、と理由づけていたように思う。

でもよく考えてみると、今さらながら悟ったかも知れない。ブログとはまさに日記なのであって、ホームページとは比べるモノではないということを。
おわり。

いや、終わらない。

ブログを見ていていつも感じていたこと。それは僕が知っているホームページの快適さを、どうしたらブログで実現できるだろう、ということだ。そして真っ先に思いつくもののひとつに、サイトマップが挙げられると思う。先日のサイトマップXMLの話ではなく、本来のサイトマップの方だ。

例えば僕の1.023worldでは、全てのページからほぼ一発で目的地に移動できるようになっている。サイトマップの便利さを、全て左メニューに集約してあるのだ。

20090306-left-menu

また、移動中は常に該当コンテンツのサブメニューが自動的に開くようになっていて、且つ現在地もハイライトしてあるので、まず迷子にはなりにくいはずだ。これは僕なりに考えたユーザビリティの形である。
そしてそれは、本来ネットサーフィンとは情報の収集にこそ集中すべきであって、それ以外の部分でリソースを消費させるのはナンセンスだ、と言うところから来ている。
ココは誰。私はどこ。これではうっかり目的も忘れてしまいそうだ(笑)

そこでタグクラウドですよ。
そんなブログとホームページに見られる深い溝を少しでも埋めてくれるのが、僕はタグクラウドかも知れないと思えてきました。

ブログのカテゴリーがホームページで言うメインコンテンツならば、タグクラウドはホームページで言うサブメニューに近い期待感がありませんか?
どこにどんな情報があるのかカテゴリーだけでは判りにくいブログにとって、タグクラウドはまさに情報そのものの在処を示す道標と言えそうです。
うーん。。。なんかウェブ屋っぽい講釈だ(汗)

さて、これで右下に新設したタグクラウドが神々しく見えてきましたか?(曝)

実は僕は今まで記事にタグ自体打っていませんでしたが、このためにわざわざ過去に遡って全ての記事にタグ打ってきたっての。
しかも設置するのにちょっと手間取っちゃったので、また備忘録しておきます。
WordPress でタグクラウドを設置する方法は主に以下の2通りありました。

  1. ウィジェットでサイドメニューに割り当てる方法
  2. テンプレートに直接タグを挿入する方法

僕は1.を済ませてから2.の存在を知ったのでムキーでした(笑)

WordPress では少し前からタグクラウドが標準装備だったそうで、管理パネルの「外観」から「ウィジェット」を選択すれば簡単に配置することが出来るのですが、僕の場合はテンプレートが古くて対応していませんでした。しかも1.023world専用に組んであったし。
で、わざわざ古いテンプレートをウィジェット対応に書き直し、実装が完了したと思ったら、実は他のテンプレート同様、PHPのタグを一行書くだけで実装可能だったのでした(曝)

ちなみにこんなの。

<?php wp_tag_cloud(); ?>

たったこれっぽっち書くだけでOKって、うおーいっ。
この記事ホントは、この「うおーいっ」が言いたいだけだったりして(汗)

最後に、以下のタグクラウドも検討したけど、日本語が文字化けすることと、仮に日本語対応にすると軽く2MBくらいになっちゃうので却下しました。
FLASHタグクラウド WP-Cumulus
日本語使わない人にはお勧めかも♪

こちらのエントリーもどうぞ♪

CSS3は時期尚早っしょ

・・・なんて、ウェ屋が言っちゃイカンかな。
何事も先へ先へ誘導していかないとアカンのかね、やっぱし。

でも、最近はようやく一息つけるようになったかもですよ。
それと言うのも、やはりブラウザ競争がかなり現実味を帯びてきたから。
Firefox を筆頭に、Opera や Safari も頑張ってるし、Google も Chrome を投入してくる時代です。IE は益々追い込まれ、遂にシェアが50%スレスレまで落ちてきたとのこと。
って、まだ半分もあるのかっ!?(苦笑)

んで、何が有り難いかと言えば、例えばウェブコーディング(特にCSS)に於いて、もしかしてそろそろ本気で書いても良い頃? みたいな希望が見えてきたことですよ。
今まではレンダリングのアンポンタンな IE のシェアが足を引っ張っていたので、単に Valid なコードだけでは忠実な描画を期待できなかったり、対 IE 用にてんこ盛りな回避策を忍ばせておく必要があった訳です。
けど、ここまでシェアが落ちたなら、あとはウェブ屋の結託で加速させたろかぁ?なんて。
そしたらあなた、そこはエリートが集う心地よいブラウザ天国ですよ♪
と言っても、IE がショボすぎるだけで、他のブラウザにもまだまだ課題はあるのだけど。。。

まあそんな現状ですから、CSS3 の導入なんてまだまだ淡い夢物語。
こっちゃ IE 対策で無駄にソース重くしてんのに、将来への期待まで盛り込めませんて。
もっとも、ブラウザのサポート以前に、CSS3 自体がまだ策定中な段階らしいけども。。。

せめて IE なんか忘れちゃって、もう CSS2 あたりでバンバン固めちゃいたいっ!
いやぁ~、クライアントに IE 非対応だなんて口が裂けてもゴリ押せませんがな。
そ、今まで通り全身食いしばるしかないでしょうともっ。

結論:ひとときの夢をありがとう。

前置きが長くなりましたが、なんでこんな愚痴を書いたかと言いますと、先日新調した WordPress の管理パネルがですね、そんな僕らのしがらみを華麗にスルーして、あまりにも自由奔放に仕上げられていたので、ちょっと嫉妬しちっゃたんですね(笑)

まず、管理パネルを見ると随所にボックスレイヤが配置されているわけですが、これみーんな流行の角丸処理なんですよね。
ま、それは今さら不思議な事ではないんですが、でもずっと見てたらなんか変?
そしたら案の定ブラウザ各社の独自拡張CSSによる強引なborder-radius風味が、そりゃもうてんこ盛りな訳ですよ。
こらぁ! 中途半端なもん使うなやぁ! このせいでソース肥えとるやないけぇ!
しかもご丁寧に CSS3 の本命である border-radius 本人までご出席する始末。
うーん。僕だって遠慮なく書いてみたいさ。。。

しかしこの角丸。あらためて良く観察すると、てんで怪しい実装具合です。
そこで実際に各ブラウザが現状どれだけ真剣に角丸を表現してるのか試してみました。

まずは、以下のようなサンプルソースを用意。

<html>
<head>
<title>CSS3 TEST</title>
<style type="text/css">
<!--
.radius {
  width:180px;
  text-align:center;
  border:solid 1px blue;
  -moz-border-radius:10px;   /* for Mozilla */
  -webkit-border-radius:10px;   /* for Safari */
  -khtml-border-radius:10px;   /* for Old Safari, KHTML */
  border-radius:10px;   /* for CSS3 */
}
-->
</style>
</head>
<body>
  <div class="radius">
    <p><strong>BORDER-RADIUS</strong></p>
  </div>
</body>
</html>

上記のソースは、横 180 ピクセルのボックスに対して、全ての角を半径 10 ピクセルで丸めなさい、という CSS コードのサンプルです(HTMLは互換モード)
実際には CSS3 による border-radius を解釈できるブラウザはまだないので、上記のように各社向けの独自拡張プロパティを併記しなければなりません(笑)

さあ、そして感動のブラウザ大運動会の表彰結果は以下の通り。

各ブラウザでの角丸結果

うおっ! Safari すげぃっ!! これは文句なし 100 点でしょう♪

Firefox 3.0 も頑張ってます。でもちょいにじみすぎ。うーん。90 点。

Firefox 2.0 以前の Mozilla (Netscape含む)に関しては、まあ、やっつけですが、許しましょう。50 点。

Google の Chrome も似たようなレベルですが、均一なドット分布と、気持ち少しアンチエイリアシングが効いているので、甘めの60点。

問題は Opera ですが、やはり本命採用まではあくまでもスルーのようです。
念のため最新版の Opera 9.63 も入れてみたんですがダメでした。うーん。0点。

そして IE 。もう問題外です。しかも 8.0ベータ2 をもってしても話にならない(汗)
第一、パラグラフのマージンはどこいっちゃったんだ?
あと上の互換モードだと IE はボーダーを内包しますが、標準モードだと外に出ます。
また IE 6 では xml 宣言があると互換モードになるバグがありましたが、それは IE 7 以降では改善されていました。
とは言え、もう頭に来たので -100点♪

ちなみにフォントファミリーは無視してください。多分、僕の設定の問題です。

さ。考えてみてください。
こんな IE をまだ半数ものユーザーが利用しているということを。
しかもこの結果から、IE 8.0 を待つ意味はあるのでしょうか?

そろそろ Firefox か、あるいは Safari あたりでビシッと決めちゃいましょうよ、奥さん。
早く汚れのないコーディングを楽しませてよ(笑)

と言うわけで、WordPress 管理パネルから角丸処理をすべて排除しました(曝)
角丸処理の撤去だけで CSS ファイルだいぶ軽くなったんちゃうかな?

結論:CSS の角丸なんて、まだ要らないっ。

20090305-css

例え角角(笑)でも、クロスブラウザなだけウェブ屋の精神は保たれますわ。
まあ、IE で使ってた方は、気づきもしなかったかな(汗)

こちらのエントリーもどうぞ♪