HTML5::Canvas.clip を Google Chrome で使用するとジャギーが発生する
uuAltCSS.js ver 0.2 の開発中です。
.bg { -uu-box-shadow: white 1px 1px 20px; -uu-background: url(../../img/grad1.png) skyblue repeat-x left bottom; } .radius { -uu-border-radius: 40px; } .border { border: 10px solid black; }
とした場合に、Google Chrome3 でこのようなジャギーが発生します。
ボーダーの内側を描画する際に canvas の clip メソッドを利用していますが、Safari4 では canvas の clip メソッドで アンチエリアスがかかり、Chrome ではかからないようです。
追記
クリッピングエリアを上下左右に +1px することで、ブラウザの差分を吸収しました。
コード的には、こんな感じになります。
function drawMultipleBackgroundImage(bfx, ctx) { ... if (!_ie || bfx.slmode) { /* boxpath(ctx, _ie67 ? bfx.border.l : 0, _ie67 ? bfx.border.t : 0, bfx.nodeRect.ow - bfx.border.l - bfx.border.r, bfx.nodeRect.oh - bfx.border.t - bfx.border.b, bfx.bradius.r); */ boxpath(ctx, _ie67 ? bfx.border.l : -1, _ie67 ? bfx.border.t : -1, bfx.nodeRect.ow - bfx.border.l - bfx.border.r + 2, bfx.nodeRect.oh - bfx.border.t - bfx.border.b + 2, bfx.bradius.r); ctx.clip(); } ... }
このページをバグ報告しておきました。