2012-04-06 17 views
1

私はラスタースクロールを試している、と私のような何かをしたい:カスタムCSSプロパティまたはHTML属性?

速度がスクロール中のアイテムの移動速度を制御し、特定のアイテムに割り当てられた属性である
$('.page').each(function() { 
    $(this).css("background-position", 
     "center " + ((window.pageYOffset - $(this).offset().top)/
        $(this).css("speed")) + "px"); 
}); 

。私はこれがCSSとできない場合があります理解し

#item { speed: 4; } 

<div name="item" class="page"></div> 

:だから私のようなものを持っているでしょう。 HTML5はカスタム属性をサポートしていますが、これらの要素を要素の他の情報とともに頭の中のどこかに宣言したいと思います。
これを行う方法に関する推奨事項はありますか?

ありがとうございます!カスタムdata-属性を持つ

+0

なぜこのJavaScriptを使用しないのですか – HerrSerker

答えて

2

あなたはCSSでこれを行うことはできません。しかし、あなたはHTML5のカスタム属性を使用することができ、あなたは、ヘッダーのすべてを宣言したい場合は、あなたの質問に言ったように、あなたは、要素にデータをバインドするjQueryの独自のメソッドを使用することができます。

$(document).ready(function(){ 
    $.data(selector,'speed',5); 
    alert($.data(selector,'speed')); //this will alert 5 now 
}); 

ドキュメントがここにあります:http://api.jquery.com/jQuery.data/

そして、この1つはまた、動作するはずです:http://api.jquery.com/data/ - コードは、ここで少し違って見えるでしょう:助けthath

$(document).ready(function(){ 
    $(selector).data('speed',5); 
    alert($(selector).data('speed')); //this will alert 5 now 
}); 

希望。

+0

ありがとう!これはまさに私が探していたものです。 – user1222728

1

HTML5:

<div name="item" class="page" data-speed="4"></div> 

あなたのループの中でjQueryのdata()メソッドを使用するには:

parseInt($(this).data('speed'), 10); 
+0

「これらのことを頭の中のどこかで宣言したい」 - これはHTML5をレースから除外します。また、jQueryを使用する場合、parseIntの使用は絶対に不要です。 – marue

+0

興味のあること:ここではなぜparseIntを使用しましたか? – marue

+0

ちょうどよい習慣。あなたは 'data-speed'属性が整数であることを期待していますが、それを仮定する必要はありません。 – Geert