私が現在取り組んでいる Web プロジェクトには、これらの気の利いた丸みを帯びたコーナーが必要でした。
画像ファイルのリクエストを最小限に抑えるために、CSS ではなく JavaScript を使用してそれを達成しようと考えました (はい、必要なすべての角の丸い形状を 1 つの画像に組み合わせることが可能であることはわかっています)。その場で背景色をかなり変更できるようにします。
私はすでにjQueryを利用しているので、優れた角丸プラグインを調べたところ、試したすべてのブラウザーで魅力的に機能しました。しかし、開発者として、もう少し効率的にする機会があることに気付きました。スクリプトには、現在のブラウザーが Webkit 角丸 (Safari ベースのブラウザー) をサポートしているかどうかを検出するためのコードが既に含まれています。その場合、div のレイヤーを作成する代わりに生の CSS を使用します。
-moz-border-radius-*
ブラウザが Gecko 固有のプロパティをサポートしているかどうか、サポートしている場合はそれを利用するために、同じようなチェックが実行できれば素晴らしいと思いました。
Webkit サポートのチェックは次のようになります。
var webkitAvailable = false;
try {
webkitAvailable = (document.defaultView.getComputedStyle(this[0], null)['-webkit-border-radius'] != undefined);
}
catch(err) {}
しかし、それはうまくいかなかった-moz-border-radius
ので、代替手段をチェックし始めました.
もちろん、私の代替ソリューションはブラウザ検出を使用することですが、それはもちろん推奨される方法とはほど遠いものです。
私の最善の解決策は次のとおりです。
var mozborderAvailable = false;
try {
var o = jQuery('<div>').css('-moz-border-radius', '1px');
mozborderAvailable = $(o).css('-moz-border-radius-topleft') == '1px';
o = null;
} catch(err) {}
これは、Gecko が複合 -moz-border-radius を 4 つのサブプロパティに「拡張」するという理論に基づいています。
-moz-border-radius-topleft
-moz-border-radius-topright
-moz-border-radius-bottomleft
-moz-border-radius-bottomright
より良い解決策を持っているjavascript/CSSの第一人者はいますか?
(このページの機能リクエストはhttp://plugins.jquery.com/node/3619にあります)