jQueryにcss3 border-radiusプロパティをアニメーション化する方法はありますか?
それを行うプラグインが見つかりません。
-webkit-border-radius
-moz-border-radius
私は当初、次のようなものを期待していました...
$("selector")
.css({borderRadius: 10});
.animate({borderRadius: 30}, 900);
...うまくいくでしょう。しかし、私は間違っていました:WebkitはborderRadius
を介して4つのコーナーすべての値をsetすることを許可していますが、それを読み返すことはできません-上のコードでは、アニメーションIEには同じ問題があります。Firefoxwill読み返して、すべてが期待どおりに機能するようにします。
そうですね... border-radiusには、実装の違いの歴史のようなものがあります。
幸い、回避策があります。各コーナーの半径を個別に指定するだけです。
$("selector")
.css({
borderTopLeftRadius: 10,
borderTopRightRadius: 10,
borderBottomLeftRadius: 10,
borderBottomRightRadius: 10 })
.animate({
borderTopLeftRadius: 30,
borderTopRightRadius: 30,
borderBottomLeftRadius: 30,
borderBottomRightRadius: 30}, 900);
古いブラウザとの互換性を維持したい場合は、オールインして古いブラウザの接頭辞付きの名前を使用できます。
$("selector")
.css({
borderTopLeftRadius: 10,
borderTopRightRadius: 10,
borderBottomLeftRadius: 10,
borderBottomRightRadius: 10,
WebkitBorderTopLeftRadius: 10,
WebkitBorderTopRightRadius: 10,
WebkitBorderBottomLeftRadius: 10,
WebkitBorderBottomRightRadius: 10,
MozBorderRadius: 10
})
.animate({
borderTopLeftRadius: 30,
borderTopRightRadius: 30,
borderBottomLeftRadius: 30,
borderBottomRightRadius: 30,
WebkitBorderTopLeftRadius: 30,
WebkitBorderTopRightRadius: 30,
WebkitBorderBottomLeftRadius: 30,
WebkitBorderBottomRightRadius: 30,
MozBorderRadius: 30
}, 900);
ただし、これはかなりおかしくなり始めます。なるべく避けたいです。
CssHooksを使用します。
これはあなたを助けるでしょう:
http://www.webmuse.co.uk/articles/border_radius_csshook_with_internet_Explorer_support/
CssHooksへのリンク:
https://github.com/brandonaaron/jquery-cssHooks
幸運を!
正直なところ、ブラウザのCSSプレフィックスを検出する関数を使用できます。ここではサンプルコードを示します。 http://jsfiddle.net/molokoloco/f6Z3D/