前回、W3Cで未だ確定していないプロパティを、各ブラウザベンダーが独自に実装したプロパティに対して「ベンダープリフィックス」を記述する必要があると解説しました。

しかし、いちいち同じ記述をブラウザ毎に記述するのも面倒ですし、コードの可読性も悪くなります。

そこで、ベンダープリフィックスを記述しなくて済むようになる便利なライブラリ、「prefixfree.js」を紹介します。

「prefixfree.js」を使うと、アニメーションのプロパティだけでなく、シャドウやグラデーションなど、ベンダープリフィックスが必要なプロパティ全てで有効になります。

「prefixfree.js」の導入

サンプルを見る

今回は、オブジェクトの位置を移動するというアニメーションを付けてみました。

このサンプルは、CSS3の「transitionプロパティ」に対応した「Firefox」、「Chrome」、「Safari」でしか動作しません。 残念ながら現時点ではIEは「transitionプロパティ」には対応していません。

早速記述を見てみます。

<style>
#box
{
    cursor:pointer;

    width:80px;
    height:80px;
    background:#CCC;
    color:#FFFFFF;
    overflow:hidden;

    transition-property:transform;
    transition-duration:500ms;
    transition-timing-function:ease-out;
}
#box p
{
    margin:0;
    padding-top:30px;
    text-align:center;
}
</style>
</head>
<body>
    <div id="box">
        <p>クリック</p>
    </div>
</body>
</html>

ご覧のとおり、ベンダープリフィックスは、一切記述されていません。 前回の記述より、かなりすっきりしましたね。 これを実現してくれるのが、「prefixfree.js」です。

では早速導入したいと思います。

Prefix free: Break free from CSS vendor prefix hell!

上記サイトにアクセスし、左上のボタン「Only 2KB gzipped」から、ソースをダウンロードします。次に、メニューの「Plugins」に入り、下の方の「prefixfree.jquery.js」をダウンロードします。

この、「prefixfree.jquery.js」は何をするのかというと、「prefixfree.js」は、ページのロード時にはベンダープリフィックスを補完してくれますが、jQuery等でに動的にCSSを書き換える場合などでは補完できません。

そういう訳で、この講座ではjQueryを標準的に使用しているので、「prefixfree.jquery.js」も一緒に読み込みましょう。

ではJavaScriptの記述を見てみましょう。

<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="prefixfree.min.js"></script>
<script type="text/javascript" src="prefixfree.jquery.js"></script>

<script>
$(function ()
{
    $("#box").toggle(
        function()
        {
            $("#box").css("transform", "translate(200px,200px)");
        },
        function()
        {
            $("#box").css("transform", "translate(0px,0px)");
        }
    );
});
</script>

まずはダウンロードしてきたJavaScriptファイルを読み込みます。 順番としては、「prefixfree.jquery.js」は、jQueryとprefixfree.jsの読み込みの後に記述します。

そして、今回もjQueryの「toggle」メソッドを使います。楽ですからね。 ここでは前回と違って、「transformプロパティ」を使っています。「transformプロパティ」についてはまた後日解説するとして、ここで重要なのは「transformプロパティ」はベンダープリフィックスが必要なプロパティということです。

試しに、「prefixfree.jquery.js」の読み込みの記述を消して実行してみると、アニメーションが走らなくなります。

この様に、「prefixfree.js」と「prefixfree.jquery.js」を使うと、CSS3のプロパティをもっと手軽に扱うことが出来るのです。 「prefixfree.js」と「prefixfree.jquery.js」はともにMITライセンスという、 非常に制限の緩いラインセンス形態で配布されており、ソースコード内の著作権表記のコメントを消さない限り、自由に商用利用可能ですので、積極的に利用していきましょう。

河野 義貴
インハウスのFlashクリエイターとして勤務後、2010年独立。一年間のフリーランス期間を経て、2011年9月にスウィーツアンドストリーム株式会社を設立。主にFlash・HTML5を駆使した、PC・スマートフォン向けインタラクティブコンテンツを中心に活動中。マイナビクリエイターセミナー(WCBセミナー)の講師としてもおなじみ。

クリエイター向け転職・派遣情報サイト「マイナビクリエイター」より転載