2009-01-01から1年間の記事一覧

角丸(border-radius:)をほぼ全てのブラウザに + ドロップシャドウ(box-shadow:)を一部のブラウザで使えるようにしてみた

今日も uuAltCSS.js をいじってました。 ハイ・チーズ 左から、Firefox2/3/3.5, Opera9.52/10β, Safari4, Google Chrome3, IE8 です。ブラウザ毎の縮小率がバラバラですね。記念写真には写ってませんが、もちろん Opera9.27, IE6, IE7 でも動きます。canvas …

角丸 + ドロップシャドウ(border-radius + box-shadow)を IE に実装してみた

uuAltCSS.js に border-radius: と box-shadow: を実装してみました。IE6, IE7, IE8 で動きます。 http://twitpic.com/9wxi5 http://twitpic.com/9wyq8 これらは、IE8 + Silverlight3 のスクリーンショット。 ガウスフィルタ(影のぼかし)が使えない環境もあ…

display: table, display: table-cell を IE6, IE7 で使えるようにした

オリジナル uuAltCSS.js を導入 IE6 IE7 Safari4 <html><head><title></title> <style> .cell1, .disptblcell1 { width: 20%; background-color: #FFCC66; } .cell2, .disptblcell2 { width: 29%; background-color: #CC6633; } .cell3, .disptblcell3 { width: 30%; background-color: #FF9966</head></html>…

グローバルフラグ付きの RegExp.test が予想外の動きをする

正規表現が沢山あると、書くほうも読むほうもしんどいので、時々まとめちゃいます。 たとえば、こんなふうに。 function hoge(ary) { var i = 0, iz = ary.length, val; var rex = /\s*\!\s*important\s*/g; // グローバルフラグ付き for (; i < iz; ++i) { …

Firefox3.5 の Canvas の描画結果が他のブラウザと異なる

ついったーだと長すぎたので、こっちに書きます。http://uupaa-js-spinoff.googlecode.com/svn/trunk/uuCanvas.js/demo1/5_1_canvas_savestate+shadow.htmlの結果が他のブラウザと異なります。 ctx.globalCompositeOperation = "destination-over""source-ou…

関数の初期化とCallオブジェクト

大事なことなので、記憶を裏打ちしてみる。 <html><head><title></title></head><body><script> function fn() { alert(typeof a + ", " + a); // undefined, undefined alert(typeof b + ", " + b); // function, function() { alert("b2"); } b(); // alert("b2"); try { alert(typeof c + ", " + c); } cat</body></html>…

Acid2 セーフな uuCSSBoost.js で、ヒャッハーな世界へようこそ

ブラウザのレンダリングの互換性テストといえば、Acid2, Acid3 が有名です。 モダンブラウザだと、Firefox3+, Safari2+, Opera9+, IE8の標準準拠モードが Acid2 をパスします。 さかのぼること 8ヶ月前 こんなことを語ってました。 いまやってること CSSパー…

古いブラウザでもCSS3セレクタを使ってWebページをデザインできるようにしてみた(4日目)

IE6 で以下の機能が利用可能になりました。 alphapng をサポートしました。 <img src="*.png"> や <input type="image" src="*.png"> で αチャネルを持つ PNG 画像を透過表示します。 <div class="alphabg" style="background-image: url(*.png)"> のように class に "alphabg" が設定されている PNG 画像を透過表示します。 max-width をサポートしました。 <div class="maxmin" style="max-width: 120px"> のよう…</div></div>

古いブラウザでもCSS3セレクタを使ってWebページをデザインできるようにしてみた(3日目)

静的なデモばかりだとつまらないので、動的なデモを作りました。 お題は、CSS3 の :target 擬似クラスを使ったタブメニューです。 Opera10 で タブメニューA が動かない問題について追記しました。@os0x さん @edvakf さん、ありがとうございます。 タブメニ…

古いブラウザでもCSS3セレクタを使ってWebページをデザインできるようにしてみた(2日目)

若干修正しました。コンディショナルセレクタ搭載してみました。 あー、良く考えたらコンディショナルな仕組みは必要なのかも。 レンダリングエンジンでスタイルを適用したり/しなかったり、代替スタイルを用意するって仕組みはあってもいいのかもしれない C…

古いブラウザでもCSS3セレクタを使ってWebページをデザインできるようにしてみた

uuCSSBoost.js は uuAltCSS.js に名前が変更になりましたが、一部の説明が記事を書いた当時の古い名前のままになっています。最新版では、uuCSSBoost.revalidate() は廃止され uuAltCSS() を呼び出すように変更になっています。 コードの解説を追記しました…

IE は runtimeStyle より !important のほうが強い

IE は CSS で !important が指定されていると、runtimeStyle が機能しなくなります。 デモ IE6〜IE8 では、赤い "this is test" が表示され、その他のブラウザでは青く表示されます。 <html><head><title></title> <style>body { color: red !important }</style> </head><body>this is test <script> window.onload = functi</body></html>…

px単位の値を取得する(その2)

JavaScript の勉強を始めた頃(去年の今頃)こういう日記を書いてました。 IEで width: "3em", width: "auto" から px単位の値を取得する - latest log uuStyle.toPixel() を、よりクロスブラウザなコードにしてみました。 <script> var _ie = document.uniqueID; var …

JavaScriptでCSSパーサーを書くための情報を収集中(5.5日目)

window.name + フレーム のくだりについてちょっと追記 uuCSSParser.js は uuAltCSS.js の古い呼び名です。昨日の段階で、最新のCSS(CSS3)のセレクタを古いブラウザでも利用可能になりました。 このスクリプトを発展させれば、CSSハックや、ブラウザ毎にCSS…

JavaScriptでCSSパーサーを書くための情報を収集中(5日目)

はい。5日目です。今日は「収集したルールを元に、要素にスタイルを適用する」です。 レガシーとかインラインとかは無かったことに 昨日は、レガシースタイルとインラインスタイルを収集して重み付けしましたが、今日はそのへんバッサリと削ってます。 # よ…

JavaScriptでCSSパーサーを書くための情報を収集中(4日目)

4日目です。今日は、 レガシースタイル( インラインスタイルを収集する。 ⇒ _collectInlineStyle() body要素からターゲット要素までの絶対パスを生成する。⇒ _createPath() といった機能を実装しています。 デモ http://uupaa-js-spinoff.googlecode.com/svn…

JavaScriptでCSSパーサーを書くための情報を収集中(3日目)

三日目です。今日は、重み付け(spec)と !important です。http://uupaa-js-spinoff.googlecode.com/svn/trunk/uuCSSParser.js/demo/sortspec.htm <html><head><title></title> <link rel="stylesheet" type="text/css" href="a.css" /> <style type="text/css"></link></head></html>

JavaScriptでCSSパーサーを書くための情報を収集中(2日目)

はい、JavaScript で クロスブラウザな CSSパーサー の2日目です。 今日は、<link rel="stylesheet" type="text/css" href="a.css" /> の読み込みや @import url(...) への対応にトライしてみます。これが HTML です。 ロードが終わると、CSSの情報をかき集めて表示します。 <html><head><title></title> <link rel="stylesheet" type="text/css" href="a.css" /> <style type="text/css">…</link></head></html></link>

JavaScriptでCSSパーサーを書くための情報を収集中(1日目)

<style type="text/css"> ... </style> CSS ファイルを一本化できればステキ。ブラウザ毎に書き分けるのって本来の姿じゃない。 CSS3 の機能を古いブラウザで使えればもっとステキ。 古いブラウザに時間を掛けたくない。CSS のバッドノウハウなんてノーサンキュー。やりたいことが表現できれ…

ECMAScript5でargumentsがArgumentsオブジェクトになる(らしい)

@taku_eof さんのご指摘を受けて、タイトルを「ECMAScript5でargumentsが配列になる」から「ECMAScript5でargumentsがArgumentsオブジェクトになる(らしい)」に変更。(らしい) としているのは、また変化するかもしれないから。ECMAScript5 で arguments が配…

uuQuery.js と uuCanvas.js の version 1.0 をリリースしました。

http://code.google.com/p/uupaa-js-spinoff/クロスブラウザな環境で、CSS3::Selector, HTML5::Canvas が使えるようになる JavaScript ライブラリの(ほぼ)最終版です。 人前に出せる状態になったので、彼らに新しい名前をつけてあげました。来週からは、仲間…

お手軽 レンダリングエンジンバージョン判定

getRenderEngineVersion() は、レンダリングエンジンのバージョン番号(Major[.Minor])を返します。 <html><head><title></title></head><body> <script> function getRenderEngineVersion() { // @return Number: var rex = /(?:rv\:|Kit\/|sto\/)(\d+\.\d+(\.\d+)?)/; return parseFloat(((rex.exec(navigato</body></html>…

お手軽 ブラウザバージョン判定

getBrowserVersion() は、ブラウザのバージョン番号(Major[.Minor])を返します。 <html><head><title></title></head><body> <script> function getBrowserVersion() { // @return Number: return window.opera ? (opera.version().replace(/\d$/, "") - 0) // Opera10 shock : parseFloat((/(?:IE |fox\/|ome</body></html>…

お手軽 Silverlight バージョン判定

getSilverlightVersion() はインストールされている Silverlight のバージョン番号(Major[.Minor])を返します。Silverlight version 3 〜 5 を判定するようにコードを差し替えました。 <html><head><title></title></head><body> <script> var _ie = !!document.uniqueID; function detectSilverlightVersion(</body></html>…

JavaScript で、画像本来のサイズ(幅, 高さ)を取得する方法

Opera で DOM Mutation Event を使用するコードを追記しました。 まとめを追加しました。 Opera パート2に取得できないケースが見つかったため、パート3 を追加しました。rhino.jpg(幅:300px, 高さ:227px) を、 <img id="rhino" src="rhino.jpg" width="100" height="75" /> と、100 x 75 で表示している場合を例に、画…

WebKit は document.defaultView.getComputedStyle の戻り値がちょっと便利

<html><head><title></title></head><body onload="boot()"><script> function boot() { var cs = document.uniqueID ? document.body.currentStyle : document.defaultView.getComputedStyle(document.body, ""); alert(cs["textAlign"]); alert(cs["text-align"]); } </script></body></html> 実行するとこうなります。 Browser textA…

uupaa-excanvas.js 0.4β

uupaa-excanvas.js version 0.4β を固めて置いておきました。 uupaa-excanvas.js HTML5::Canvas 互換機能を提供する JavaScript ライブラリです。 最新版は、http://uupaa-js-spinoff.googlecode.com/svn/trunk/uupaa-excanvas.js/README.htm で見れます。 v…

fillText を改善

今日も uupaa-excanvas.js いじってました。 uupaa-excanvas.js は IE, Opera9.5, Firefox3 で HTML5::Canvas をアレしてコレしてゴニョゴニョするJavaScript ライブラリです。 最新版は、http://uupaa-js-spinoff.googlecode.com/svn/trunk/uupaa-excanvas.…

日本語でJavaScript

前衛的でギルティなコードを目指してみた。 <body> <div id="defs" title="constructor,document,body"></div> <script> 定義 = defs.title.split(","); 窓 = this; 発火 = (0)[定義[0]][定義[0]]; 本体 = 窓[定義[1]][定義[2]]; 発火('本体.innerHTML' + '="<img src=http://www.google.co.jp/images/nav_logo4.png>"')(); </script> </body> 発火(…

uupaa-excanvas.js 0.4 alpha

IE で HTML5::Canvas を利用可能にする uupaa-excanvas.js 0.4 alpha をプレリリースしています。version 0.4 は VML と Silverlight を使って実装可能と思われる HTML5::Canvas API 互換機能を全て実装したバージョンです。ダウンロード: http://code.googl…