WebデザインノートBOOK

Webクリエイターに関する勉強を書き記したブログになります。

続|スマホ用画像サイズ自動変換スクリプト

_____________________________
【3/22更新】
iOSAndroidともに実機テストをおこなって調整した結果、少し短くおさまりました。もちろんスマホの画面を縦横に回転しても対応できます。
※ついでにPCブラウザのウインドウサイズを変えた時にも対応してます(笑)
なお、下記ソースは新しい物に書き換えてあります。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

とりあえずこれで落ち着いた。
htmlに埋め込んだスクリプトが長くなってしまったので、これもまた別に読み込む形にするつもり。

html埋め込み
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="js/imageResize.js"></script>
<script type="text/javascript">
    // カンプ作成時に想定していたサイトの全体幅を設定
    imageResize.config.iniSiteWidth = 480;
  
    // 画面の向きを変えた時の変換
    $(window).resize(function() {
        $('html').css('width', window.innerWidth);
        $('body').css('width', window.innerWidth);
        imageResize.setSize();
    });
  
    // 画像リサイズ
    imageResize.set(); 
</script>
imageResize.js
/*
 * imageResize.js
 * http://d.hatena.ne.jp/bondx2/
 *
 * @version
 * 1.0.0 (March 14 2012)
 * 1.2.0 (March 22 2012)
 *
 * @copyright
 * Copyright (C) 2012 http://d.hatena.ne.jp/bondx2/
 */

if ( ! window.imageResize ) var imageResize = function() {
    var isc = {
        // configuration
        config: {
            margin: 0
           ,iniSiteWidth : 0
        }
        ,items: null
        ,getItems: function(){
            if ( ! isc.items ) isc.items = function() {
                var m, i
                    ,images = document.getElementsByTagName("img")
                    ,items = new Array()
                ;
                for ( i = 0; i < images.length; i++ ) {
                    m = images[ i ];
                    items.push( {
                        originalWidth: m.width
                        ,originalHeight: m.height
                        ,img: m
                    });
                }
                return items;
            }();
            return isc.items;
        }
        ,setSize: function() {
            var w, h, m, i
                ,items = isc.getItems()
                ,config = isc.config
            ;
            for ( i = 0; i < items.length; i++ ) {
                m = items[ i ];
                w = m.originalWidth;
                h = m.originalHeight;
                m.img.width = (window.innerWidth * w) / config.iniSiteWidth;
                if((m.img.width % 2) == 1 ) {
                    m.img.width += 1;
                }
                m.img.height = h * (m.img.width / w);
                if((m.img.height % 2) == 1 ) {
                    m.img.height += 1;
                }
            }
        }
        ,set: function() {
            var f = isc.setSize;
            window.addEventListener( "load", f, false );
            window.addEventListener( "orientationchange", f, false );
        }
    };
    return isc;
}();