uupaa.js version 0.4 をリリースしました。

uupaa.js version 0.4リリースしました。

今回は、

  • min-width: max-width: min-height: max-height: をサポート
  • opacity: をサポート
  • img要素のpng画像を透過, background-imageのpng画像を透過
  • メソッドチェーン式のI/Fを提供開始
  • いくつかのバグFIX

です。max-widthのサポートがメインです。

uupaa.js 機能比較で動作例が見れます。

反省会

  • IE7.js のインスパイアで終わってしまった、残念なアップデート。
    • 本当は display: table-cell を実装したかったんだけど、それにはまずmax-widthの実装を検討する必要があって、max-widthの実装がトライ&エラーだったってのが実情。
    • 特に難しかったのが、幅を求めるために、実際に要素の幅を色々と変化させる必要があって、でもそういうことをすると、リサイズ(再描画)イベントが発生して、その処理中にさらにリサイズイベントが…といった感じに、永遠にリサイズイベントが発生するケースというかプロパティの組み合わせがあることがわかった。そこからが大変。IEを何度も何度もフリーズさせてしまい、かな〜り悩んだ。
  • max-width を実現するライブラリとして、IE7.js と minmax.js からアイデアをもらった。
    • IE7.js のコードの多くはまだ理解できていない。すごいコードだと思う。
    • minmax.jsは10行ほどのエッセンシャルなロジックに分解できるんだけど、CSS非準拠な解釈や動きがいくつか見つかったので、実装の参考にはならなかった。
  • max-heightは後でやり直しが必要かも、ちゃんと動いていない気がする。
  • jQuery風味なメソッドチェーン式I/Fは、必要なものから順次実装する予定なので、例によってスカスカの状態。

minmax.js の不具合(?)っぽいやつを一応書いておくと、

max-width < min-width のケースで幅の解釈が変だったり、

%指定時の解釈が変だったりする。

黄色のIEが minmax.js で、ピンクのIEuupaa.js。残りのピンクは、Opera9.5, Firefox3, Safari3.1。