shortcut Webデザインとかガジェットについてつらつらと書き連ねています

318月/052

今日のダメな人

ただいま2時45分です。
今日というには遅すぎる時間ですね。まあいいや。

前置き。

僕は自宅でハンドヘルドPCのシグマリオンを使っています。
おっきいNOKIA 9210のようなものです。と言っても余計分からないか。小さいノートPCのようなものです。
機能があまりなかったり遅い代わりにスタイラスというペンを使って画面のボタンを押したり絵を描いたりすることができます。

前置き終わり。

今日は仕事で古いノートPCのセットアップをしていました。
とりあえずブラウザが動けばよかったので、OSのCD-ROMを入れてインストーラーを走らせて、ぼんやりしたり他の仕事をしていました。
OSのインストールが終わってもろもろの設定をして、「はい」「いいえ」という同意を促すダイアログがポップアップされた時、

ほぼ無意識に液晶画面のボタンを指で押していました…。ぐにっと。

そのあとしばらくして、指の圧力で液晶の色が変わっているのを見て初めて間違った操作をしていることに気づきました。
仕事が立て込んで頭が回っていなかったとはいえ、習慣とは怖いモノだなと思った残暑厳しい8月の終わりでした。

そのノートPCは、液晶もかなりガタがきているようないつ捨てても惜しくない状態のシロモノだったので、ほとんど実害はありませんでしたが、これが買ったばかりの私物のノートPCとかだったら血の気が引いていたことでしょう。

Filed under: diary 2 Comments
308月/050

はじめての CSS

かなり広範囲のブラウザをターゲットにしたXHTML+CSSのサイトを作っているのですが、この世からなくなってしまえ、と思うくらいIEはまともにレンダリングしてくれないですね。
せめてIE6の互換モードとIE5の表示くらいは揃えて欲しいと思いました。

Filed under: misc No Comments
268月/050

テーブルの列を折りたたむ

横スクロールが出るような幅の広いテーブルを使わなければいけない時に使うといいかもしれないDHTML。

サンプルを見る。

WinIE6とfirefox1で確認済み。Safariは折り畳むときにゴミが表示されるので、ちょっと使えないかも。

ソースはこんな感じ。とりあえず表示できていますというレベルなので、全然エレガントでもスマートでもありません。もっと素敵な処理方法を知っている人がいたら教えてください。

javaScript

/*
テーブルのセルの表示/非表示を切り替える
*/
function hideCell(className,idName) {
obj=document.getElementById(idName);
if(obj.className == "on"){
obj.className = "off";
changeDisplay(className,'none',idName,"+");
}else {
obj.className = "on";
changeDisplay(className,'',idName,"-");
}
}
/*
テーブルのセルの表示/非表示を切り替える(表示部分)
*/
function changeDisplay(className,visible,idName,idText) {
document.getElementById(idName).innerHTML = idText; // 切り替えボタンの表示を切り替え
var spans = document.getElementsByTagName('span');
var length = spans.length;
for (var i = 0; i < length; i++) {
var e = spans[i];
if (e.className == className) {
e.style.display = visible;
}
}
}

スタイルシートのdisplayを操作して、該当するクラス名のspanタグの表示/非表示を切り替えているだけです。
クラス名の付けられたエレメントを直接操作する方法が分からなかったので、HTML内で使用しているspanタグを全て配列に入れた後、総当たりでクラス名を判定するという非効率な方法を使っています。そのため、テーブルの行や列が増えてくるとレスポンスが目に見えて落ちてきます。

テーブルのデータ部分

<tr>
<td><span class="cell01">1</span></td>
<td><span class="cell02">..................</span></td>
<td><span class="cell03">..................</span></td>
<td><span class="cell04">..................</span></td>
<td><span class="cell05">..................</span></td>
</tr>

列ごとに異なるクラス名を付けることで、javaScript側で列を判別できるようにしています。
始めはtdタグとthタグに直接クラス名を指定していましたが、そうすると折りたたみボタンも一緒に消えてしまうので、spanタグを間に挟みました。

テーブルのヘッダー部分

<th><a href="javascript:hideCell('cell01','s01')" id="s01" class="on" title="a">-</a><span class="cell01">a</span></th>

折りたたみボタンのクラスをフラグ代わりに使っています。クラス名が「on」の時は表示、「off」の時は非表示となります。
aタグのtitle属性はなくても動作に支障ありませんが、付けておくとIEではマウスオーバーでツールチップが表示されるので、折り畳んだときでも項目名を知る事ができます。

クッキーを組み合わせると折りたたんだ状態を保持できます。後日追加する予定なので乞うご期待。

追記: (05/09/06)
クッキーの処理を追加した。といっても、書籍の関数をそのまま使ったので説明は後で。

Filed under: HTML No Comments
248月/050

帰省してました。

ひたすら寝て、ひたすら本と漫画を読んでました。
あと、報道ステーションを初めて最初から最後まで見ましたが、ニュースショーってこんなに演出してたっけ?と思うくらい派手に感じました。普段NHKのニュースとワールドビジネスサテライトしか見てないから余計にそう思ったのかもしれません。
常時接続の環境がなかったので、ネットでの調べものができないというのはちょっとつらかったですが、逆にひとつのものごとに集中できてこれはこれでよかったような気がします。

月に1回くらいのペースで「ネットに繋がない日」を作るのも気分転換にいいかもしれないと思った2005年の夏でした。

Filed under: diary No Comments
168月/050

CSSでの段組みを考える

blogがはやりだした2年ほど前に既に語り尽くされた感のある話だが、最近とてもいい本を買っていろいろ勉強してみたので書いてみる。

CSS完全ガイド
CSS完全ガイド
posted with amazlet at 09.03.03
エリック・A. メイヤ
オライリージャパン
売り上げランキング: 121853

amazonの書評は辛辣だったりするけど、サンプルが多いのと、現在ワーキングドラフトになっているCSS2.1について言及されている部分が多いので、これからCSSを仕事で使う人は一度目を通しておいた方がいい本だと思う。

で、段組みの方法だが、メジャーなところで以下の2通りの方法があると考えられる。

作ってみてわかったけど、どちらかが正解という訳ではなくて、用途によって使い分ける必要があるだろう。
メニューなどのコンテンツのボリュームが見えているものは絶対指定を使った段組みにして、コンテンツエリアのなかでさらに段組みを行う場合はfloatを使った段組みをする、など。

IEがもう少しまともな表示をしてくれると楽なんだけどなぁ。
あと、互換モードは悪夢だ...。

Filed under: CSS No Comments
108月/050

VIP魔法瓶

日課として、大手のメーカーのサイトをいくつか眺めていたりするんだけど、やはり世界の松下は、視点というか商売に対する姿勢がひと味違いますね。

『VIP魔法びん』沸騰浄水ジャーポット NC-SUシリーズ を発売 | ニュース | 松下電器産業株式会社

VIPって…

Filed under: gadget No Comments
108月/050

Ajaxを使ったフルIME

速度も操作性もOSレベル。すごい。

via. [を] Ajax による日本語 Full IME が登場!

Filed under: web No Comments
98月/054

Perlプログラマのレベル10

自分のレベルを測る目安となるレベル10のリストを提示している。自分はPerlのプログラマではないが、レベル2あたりにあたると思う。読んでいないけどリャマ本買ったし。

自分が今いる会社でwebアプリケーションの開発というと、開発言語はJava以外あり得ないような状況になっているが、言語で開発者を限定するのではなくて、開発者のスキルでどの言語を使うかを決めた方がまっとうなんだろうな。

Filed under: misc 4 Comments
98月/050

Flash、DreamWeaverの最新バージョンが発表される

次のバージョン名はMX2005ではなくて8になる模様。

flash 8の主な新機能は、flash-jpで邦訳されていた人がいたので引用

  • ドロップシャドウ、ブラー、グロウ、ベベルなどのフィルターエフェクト*
  • 乗算、スクリーン、オーバーレイなどのブレンドモード(合成手法)*
  • パスによって細かく設定可能なイージングコントロール*
  • きれいになった文字レンダリング-FlashType
  • 描画を高速化するビットマップキャッシュ
  • 高品質なビデオCODEC On2 VP6
  • ビデオにアルファチャンネルが使用可能*
  • キューポイントの設定や高度な設定など強化されたビデオ機能*
  • ActionScriptにノーマルモード復活
  • 携帯端末向けのオーサリング強化*
  • などなどとなっています。(*はpro版のみ)

    ビデオにアルファチャンネルが使用できるということは、マシンパワーが許せばクロマキーのようなことをflash内部でできるということだろうか。

    DreamWeaverの方は英語が読めないのでツアームービーの内容しか分からないが、

    • ズームツールが搭載された
    • CSSを使ったレイアウト作業がより作業しやすくなった
    • タグエディタでアウトラインエディタのような折り畳み表示ができるようになった
    • XMLを使ったコンテンツ(スニペット?)をドラッグ&ドロップで挿入できるようになった

    っぽい。ズームツールは待ち望んでいた人も多いのではないだろうか。

    Filed under: web No Comments
    88月/050

    ウィンドウにflashをフィットさせる

    ウィンドウがあるサイズ以下の場合はウィンドウにフィットした状態で表示し、それ以上のサイズの場合は既定のサイズで表示するという、変な条件があった場合の対処方法。
    DOMを使えばもう少しきれいに書けると思うが、MacのIEという微妙なブラウザでも表示できるように昔ながらの方法を使った。

    <script type="text/javascript"><!--
    function writeFlash(){
    // ウィンドウサイズの取得
    if (document.all && document.getElementById && (document.compatMode=='CSS1Compat')) {
    // IE6 標準モード
    scrY = document.documentElement.clientHeight;
    }else if(document.all){
    // IE6 互換モード
    scrY = document.body.clientHeight;
    }else{
    // それ以外
    scrY = innerHeight;
    }

    // flashサイズの設定
    var flashX = 本来のサイズ;
    var flashY = 本来のサイズ;
    if(scrY < flashY) {
    flashX = Math.round(flashX*(scrY/flashY));
    flashY = scrY;
    }

    // タグの書き出し
    document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
    codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
    width="' + flashX + '" height="' + flashY + '" id="index" align="middle">');
    document.write('<param name="allowScriptAccess" value="sameDomain" />');
    document.write('<param name="quality" value="high" />');
    document.write('<param name="scale" value="exactfit" />');
    document.write('<param name="bgcolor" value="#ffffff" />');
    document.write('<param name="movie" value="hoge.swf" />');
    document.write('<embed src="hoge.swf" quality="high" scale="exactfit" bgcolor="#ffffff"
    width="' + flashX + '" height="' + flashY + '" name="index" align="middle" allowScriptAccess="sameDomain"
    type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embded>');
    document.write('</object>');
    }
    -->
    </script>

    headタグに上のスクリプトを書いて、bodyタグの中に下のスクリプトを書いて呼び出す。

    <script><!--
    writeFlash();
    --!></script>

    onresizeを使ってウィンドウのリサイズ時に再度ウィンドウサイズを取得してリロードすればもう少しユーザーに優しいページなるかも。

    Filed under: flash No Comments