ブラウザの画面幅を取得するコードは以下のページを参考にした。
参考:ブラウザの画面サイズの取得(javascript) - Object Design Blog
画像の読み込み完了前に拡大縮小率を計算しないように、img の load 完了イベント時に、画像の幅を取得するのがポイント。以下、コードの一部抜粋。
<head> <script type="text/javascript"> var imgW = 0; var imgH = 0; var paneW = 0; var scale = 100; //ブラウザ幅に合わせて拡大縮小率を算出する //マージンは20px function calcScale(){ var paneW_alt = paneW - 20; if(imgW > paneW_alt){ scale= ((paneW_alt/imgW)*100).toFixed(0); }else{ scale = 100; } } function getBrowserWidth() { if(window.innerWidth) { return window.innerWidth; } else if(document.documentElement && document.documentElement.clientWidth != 0){ return document.documentElement.clientWidth; } else if(document.body){ return document.body.clientWidth; } return 0; } </script> </head> <body marginheight="0" marginwidth="0"> (中略) <script type="text/javascript"><!-- var img = document.getElementById("dlImg"); //画像のload完了時に画像の幅と高さを取得する img.addEventListener('load', getImageSize, false); function getImageSize(){ imgW = img.width; imgH = img.height; } //画像の幅と高さを取得した上で画像をリサイズする img.addEventListener('load', resize, false); //端末が回転された際もブラウザ幅に合わせて再度リサイズする window.addEventListener('orientationchange', resize, false); function resize(){ paneW = getBrowserWidth(); calcScale(); if(imgW > 0 && imgH > 0){ img.width=(imgW * (scale/100)).toFixed(0); img.height=(imgH * (scale/100)).toFixed(0); } } //--></script> </body>
0 件のコメント :
コメントを投稿