0

window.open関数を使用してポップアップウィンドウを開いています

window.open('some_page.htm','','width=950,height=500');

今私が欲しいのは、ユーザーがウィンドウのサイズを変更しようとしたときに、アスペクト比を維持する必要があることです。つまり、幅を小さくすると、それに応じて高さも小さくなり、逆も同様です。新しい寸法を計算したいだけです。これまでのところ、私はこれを試しました

function ResizeWindow()
{
    var iOrignalWidth = 950;
    var iOrignalHeight = 500;
    var iOuterHeight = window.outerHeight;
    var iOuterWidth = window.outerWidth;

    var iNewOuterWidth = Math.round((iOrignalWidth / iOrignalHeight) * iOuterHeight);
    var iNewOuterHeight = Math.round((iOrignalHeight / iOrignalWidth) * iNewOuterWidth);

    alert("New Width: "+ iNewOuterWidth + "\t" + "New Height" + iNewOuterHeight);
}

望ましい結果が得られていないため、何か問題があることはわかっています。これに関する解決策はありますか?

4

2 に答える 2

1

幅を高さに調整するか、またはその逆に調整する必要があります。両方ではありません。このコードでは、幅を高さに調整する必要があると想定しました。

function ResizeWindow()
{
    var iOrignalWidth = 1000;
    var iOrignalHeight = 500;
    var iOrginalRatio = iOrignalWidth/iOrignalHeight; // 2

    var iOuterWidth = window.outerWidth; // example: 1083
    var iOuterHeight = window.outerHeight; //example: 600

    var iNewOuterHeight = iOuterHeight; // 600
    var iNewOuterWidth = Math.round(iNewOuterHeight*iOrginalRatio); //600 * 2 = 1200

    alert("New Width: "+ iNewOuterWidth + "\t" + "New Height" + iNewOuterHeight);
}​

この例では、元の幅を1000に変更しましたが、実際のコードで元に戻すことができます。

于 2012-05-09T06:21:33.043 に答える
0

アスペクト比を維持するために、1つのサイズ変更に合わせて行う必要があります。例えば:

function ResizeWindow()
{
    var iOrignalWidth = 950;
    var iOrignalHeight = 500;
    var iOuterHeight = window.outerHeight; 
    var iOuterWidth = window.outerWidth;

    var w = (window.outerWidth  - iOrignalWidth) / iOrignalWidth; // for exam: (1280-950) / 950= 0.34
    var h = (window.outerHeight - iOrignalHeight) / iOrignalHeight; // for exam : (800 - 500) / 500= 0.60

    var newWidth;
    var newHeight;
    if (w<h)
    {
        // If percentage of width is less than percentage of height, Resize should be according to percentage of width.
        newWidth = iOrignalWidth * w * 100;
        newHeight = iOrignalHeight * w *100;
    }
    else
    {
        // If percentage of height is less than  percentage of width, Resize should be according to percentage of height.
        newWidth = iOrignalWidth * h * 100;
        newHeight = iOrignalHeight * h *100;
    }

    alert("New Width: "+ newWidth + "\t" + "New Height" + newHeight );

}

そのため、アスペクト比は常に維持されます。

于 2012-05-09T06:21:05.883 に答える