tips blog

【jQuery】resizeのときに必ず必要な処理

2016年3月14日

jQuery(javascript?)でリサイズする場合、下記のように処理するのが普通に考えられるが
これだけでは正常な動作を行わない。

$(window).on(‘resize’,resizeHandler);

■正常に動作する処理(例)

$(function(){

var resizeTimeout;
$(window).on(‘resize’,resizeHandler);

function resizeHandler(){

resize();
clearTimeout(resizeTimeout);
resizeTimeout=setTimeout(resize,10);
}
function resize(){
}
}); 

なぜ、このような処理をしなければいけないかというと
ブラウザの最大化・縮小化したとき、$(window).on(‘reisze’,function(){});が発火した瞬間
width,heightは、最大化・縮小化する前の数値となっており、(原因は不明)
前者の処理では、最大化・縮小化の瞬間くずれてしまうからである。

なので、
$(window).on(‘reisze’,function(){});の発火の後、もう一度0.01秒後にresizeの処理を行っている。
リサイズ途中にsetTimeoutが何度も処理されて重くならないように、
リサイズが一旦とまるまでclearTimeoutでsetTimeoutを削除している

■上記が原因で悩みそうな事
・リサイズしたとき崩れる
・resizeが動作しない
 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です