NerineをFirefox4で動くよう改造してみる
NerineはHTML5/JavaScript製のプレゼンテーションソフトであるが、Webkitでしか動作しない構造となっている。Firefox4(Beta)でCSS3 transitionsに対応する機会に、Firefox4対応用にgithub上でフォークした。 基本的に行ったのは以下の2つの対策。
対策 : CSS zoom → CSS3 transform
Firefox(やOpera)はCSS zoom 対応していない。そのためindex表示(↑キーを押す)すると、縮小されずにクリッピングされた形になってしまう。
CSS zoomをCSS3 transformのscale()
関数に置き換える。IE&Webkit独自機能であるCSS zoomと違って、CSS3 transformはCSS3規格であるので、これに対応すれば現代のモダンなブラウザで正しく表示される。
対策 : CSS vender-specific extension
多くのCSS3は、まだ規格策定(Working)のため、正式ではない。そのため多くのウェブブラウザの実装では vender-specific extension (vender prefix) なる接頭辞をつけて使っている。オリジナルの Nerine では、-webkit-
しか付けていない。
接頭辞 | 対象ブラウザ | 備考 |
-webkit- | Webkit (Safari,Chrome) | Webkit CSS styles |
-moz- | Mozilla (Firefox) | CSS_Reference:Mozilla_Extensions |
-ms- | IE9 | |
-o- | Opera | Web specifications supported in Opera Presto 2.3 |
このようなものに他の各種ブラウザの vender prefix をつけた。なお、使用しているブラウザ以外の vender prefix は無視されるので、何も考えずに追記すればよい。
なお、JavaScriptでアクセスする場合はラクダ文字(camelCase)にしなければならないが、このときはWebkitTransition
,MozTransition
と書く。以上を踏まえるとCSS zoomをJavaScriptで設定しているコードは下記のようになった:
その他・課題
エフェクトを定義するPetalについては大幅に書き直したが、やはり上の対策を注意すればいいだけである。ただ、今のところ一部Firefox4.0b5でしか動かないエフェクトなどがあるため、今後対策が必要になってくると思われる。