0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

4:3サイズのエリアをブラウザいっぱいに画面全体に表示する方法

Posted at

はじめに

ゲームっぽいウェブアプリを作っています。

4:3の比率で作成されたマップ画像をブラウザの画面いっぱいに表示したいです。

つまり、下記のようなことをしたいです。

  • ブラウザのウィンドウが横長の時は、左右に余白をつけて、上下は余白なし
  • ブラウザのウィンドウが横長の時は、上下に余白をつけて、左右は余白なし

以下、Chromeでの実験結果です。

4:3のエリアをブラウザ内いっぱいに表示する方法

ChatGPTに聞いたところとても良いソリューションを教えてくれましたので、ここで共有します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        body, html {
            height: 100%;
            margin: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            background-color: black; /* 背景色を設定してエリアを際立たせる */
        }
        .container {
            width: 100vw;
            height: 75vw;
            max-width: 133.33vh;
            max-height: 100vh;
            background-color: lightgray; /* テスト用の背景色 */
        }
    </style>
</head>
<body>
    <div class="container">
        <!-- コンテンツをここに追加 -->
        <p>ここに内容を追加します。高さが小さすぎる場合にはスクロールバーが表示されます。</p>
    </div>
</body>
</html>

body, html でまず子要素をflex化し、左右も上下もセンタリングするように指定しています。

縦長の場合

そして、子要素となる .container クラスが面白いです。

まずは縦長の場合の4:3エリア設定です。

width: 100vw, height: 75vw で、4:3のサイズを指定しています。ここで単位にどちらもvwを使っているのがミソです。vw はブラウザ内の表示エリアの横幅を%で指定する単位です。高さに対しても横幅基準で設定することで4:3を実現しています。

開発中のウェブアプリに適用したのが下記です。

image.png

横長の場合

これだけだとブラウザが横長の時には子要素の高さが大きすぎて画面をはみ出してしまいます。

この対策が max-width: 133.33vhmax-height: 100vh です。こんどは vh を単位としているところがミソです。高さは最大 100vh、つまりブラウザの表示エリアの高さまでとし、横幅の最大値も高さ単位で133% とすることで4:3を実現しています。

先ほどのウェブアプリで、ブラウザのサイズを変えてみると次のようになりました。

image.png

私はこれでうまくいきました。

なお、ブラウザの横幅や高さが小さくなり過ぎたらこの指定をやめてスクロールに切り替えたいと思いましたが、 min-width: 300px などとしただけではうまくいきませんでした。JavaScriptの支援が必要かもしれません。

おわり。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?