色はanimate()できない
2010年7月15日
色を animate() しようとしたら。
animate(params, [duration], [easing], [callback]) - jQuery 日本語リファレンス
数値型の値をとらない属性(backgroundColorなど)には、animate関数は対応していません。
できない仕様だった。何か自分の書き方が悪いのかと、いろいろ悩んでしまった......。
色をアニメーションするプラグイン (Plugins | jQuery Plugins) があって、それを使えばいいっぽい。
そもそも背景色の指定にいまいち慣れないから、いっぱいうろうろするので、ちゃんと調べた。
そのいち
css( "name", "value" )
- 1つのスタイルしか指定できない。
- キーと値どちらもダブルコーテーション「"」で囲む。
- キーと値はカンマ「,」で区切る。
- 「CSS() 関数の引数として指定している」ということ?
そのに
css({ name: "value" })
- 複数のスタイルを指定できる (連想配列)。
- キーは、DOMで通用する書き方の場合のみ、ダブルコーテーションで囲まなくてもよい。
- 値はダブルコーテーションで囲む。
- キーと値はコロン「:」で区切る。
ということを踏まえると――
- OK: $(".hoge").css({ background : "#f00" });
- OK: $(".hoge").css({ backgroundColor : "#f00" });
- NG: $(".hoge").css({ background-color : "#f00" });
- OK: $(".hoge").css({ "background" : "#f00" });
- OK: $(".hoge").css({ "backgroundColor" : "#f00" });
- OK: $(".hoge").css({ "background-color" : "#f00" });
こういうことだった。「background」も「backgroundColor」も、DOMで使える書き方。「background-color」はjQuery特有の書き方だから、ダブルコーテーションで囲まないとダメ。
ややこしい。
英語のドキュメント (.css() - jQuery API) には、ちゃんと書いているような気もする (「the CSS and DOM formatting of multiple-word properties」あたり?)。
「キーはいつの日もダブルコーテーションで囲むこと」と決めておけば迷わない?