jsでcssスプライト用ロールオーバー
今日は、前々から欲しいと思っていた機能を試しに作ってみたのでメモっときます
スマホの場合、cssスプライトを使う場面は多々あると思うのですが
よくググって出てくるロールオーバー用のJSは、画像ファイル名を置換するものが大半で
cssのクラス名を置換してくれる物が、見つからなかったので作りました
ググる力が足りなかっただけかもしれませんが・・・。
※DOMの操作なのでメモリが消費されるから、".off()"とか入れた方がよろしいかも・・・。
導入手順
使い方は、めっちゃ簡単!!
1.背景画像を指定しているデフォルトクラスに"XXX_off"というように"_off"をクラス名の語尾につける
2.ロールオーバー用の背景画像が指定されているクラス名に"XXX_on"というように"_on"をクラス名の語尾につける
3.トリガー用の"Rollover_js"をつける
4.ロールオーバー用javascriptとJquery.jsかzepto.jsを読み込ませる
あら不思議!!
タッチした瞬間にロールオーバー用の画像が表示され
離した瞬間に元画像にもどります。
使用例
■html
<p class="Rollover_js btnbg_ss_off margin_top10"></p>
<p class="Rollover_js btnbg_s_off margin_top10"></p>
<p class="Rollover_js btnbg_m_off margin_top10"></p>
<p class="Rollover_js btnbg_ll_off margin_top10"></p>
※こんな感じでクラスが、複数してされていても"_off"と"_on"の置換のみ行います
■ロールオーバー用javascript
$(function(){
//一応改良した時にグローバルを汚染しないように即時関数にしてみた
(function(){
//トリガー用クラス指定
$('.Rollover_js').on({
//タッチスタート用イベント
touchstart:function(){
//タッチされたノードのクラス名を取得し、"_off"を"_on"に変更
var _on = $(this).attr('class').replace('_off','_on');
//"_on"になったクラス名に書き換え
$(this).attr('class',_on);
},
//タッチエンド用イベント
touchend:function(){
//"_on"を"_off"に変更
var _off = $(this).attr('class').replace('_on','_off');
//"_off"になったクラス名に書き換え
$(this).attr('class',_off);
}
});
}());
});
これを作るのに手伝ってもらった方がいるので、ものすごく感謝
とともにひたすら開発しないと、読めるのみになってまう><
「もりもり書いて色んなものつくりなさい
この一年で思いっきり知識つめこんだんだから
これからはアウトプットに徹しなよ」
この言葉をうちに秘めて、ひっそり、こっそり開発して行きますー!!
