Jul 28, 2007

拡張機能でtext-shadowを実装してみた

Text Shadow。名前の通り、CSS3のtext-shadowを無理矢理再現するインチキ拡張機能。もう小学生だなんて言わせないZE!

以下は原理的にどうしようもない問題。

  • 重い重い重い重い重い重い重い
  • 疑似クラス、疑似要素には対応できず(ダイナミック疑似クラス? 何それ? つおい?)ダイナミック疑似クラスと:before, :after疑似要素以外はサポートの目処が付いた。:selection等はこの実装だと実現してもあまり意味がないし、そもそもFirefoxではセレクタ自体が無視されてしまうので、実装はオミットしても良さげ。0.2.2007080702でダイナミック疑似クラスに対応した。
  • 文字選択やソースの表示で、無駄な文字列が大量に出てきてしまう 無駄な文字列までコピーされてしまう問題は0.2.2007080101で解決した。

以下はめんどくさいから実装をさぼってる部分。そのうちどうにかするかもしれないし、しないかもしれない。

  • userContent.css内に書かれたtext-shadowの指定を読めない。 0.2.2007080602で、userContent.cssで書かれた指定も反映するようにした。
  • 名前空間付きのセレクタに対応していない。
  • ウィンドウをリサイズした時に自動で再描画しない。 0.1.2007072902で再描画処理を入れた。重いけど。
  • mm、cm、pt、pcなどの絶対単位に対応していない。絶対単位は72dpi固定でとりあえずサポートした(0.1.2007073101)。ちなみにemとexの算出方法もいいかげんです。
  • @mediaルールやなんかにも対応してません。0.1.2007072801で@mediaに対応した。セレクタの優先順位もまともに評価してません。0.2.2007080101で、セレクタの優先順位も計算するようにした。
  • style属性で指定されたtext-shadowには対応してない。 style属性での指定には0.1.2007072800で対応した。
  • 複数の影の指定に対応してない(まあSafariも対応してないし、そこは許してくださいな) 0.1.2007072802で複数の影の表示に対応した。が、Firefoxの仕様上の問題で3つ以上の指定は正しく認識できない。

セレクタから要素ノードを選択する処理は、selector.jsを丸パクリ。でも組み込んでみたら予想以上にまともに動いてくれなかったので、半泣きになりながら修正してやっとちゃんと使えるようにした。

エントリを編集します。

wikieditish message: Ready to edit this entry.











拡張機能