LoginSignup
5
0

More than 3 years have passed since last update.

はじめに

最近のiPhoneにはいやーなsafe areaというのがありますね。
普通に作ってると、ホームバーがcanvasと重なりやがる。

くそーAppleめー、めんどくさいじゃ無いか。

いろいろ情報収集してると、padding-bottomにenv(safe-area-inset-bottom)を入れておけばいいらしい。ほうほう、そうなんですね。

ぶー、かなりダメだ。稀にしか動かないような。styleは詳しく無いんだよ。

でもなんとかなった。

やり方

    <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">

viewport-fit=coverを追加して

<canvas style="position:absolute;
       left:env(safe-area-inset-left);
       top:0px;
       width:calc(100% - env(safe-area-inset-left) - env(safe-area-inset-right));
       height:calc(100% - env(safe-area-inset-bottom));">
</canvas>

これでsafe area内にcanvasがいい感じで収まる。縦横切り替えても、Safariのツールバー非表示にしてもOK。

ちなみにenv(safe-area-inset-bottom)の値はjsでは取れないらしい。
js(これはdartだけど)からいじる時はこんな感じでいけた。

canvas.style.height = "calc(100% - ${なんか数字}px - env(safe-area-inset-bottom))";

しかーしcalc(100% - env(safe-area-inset-left) - env(safe-area-inset-right))とは・・・いまいちかなあ。

で、改良。こうなった。

    <div
        style="visibility: visible;position:absolute;top:0px;left: 0px;right: 0px;bottom: 0px;margin-left: env(safe-area-inset-left);margin-right: env(safe-area-inset-right);margin-bottom: env(safe-area-inset-bottom);">
        <canvas id="stage"
        style="position: absolute;left: 0px;top: 0px;width: 100%;height: 100%;"></canvas>
    </div>

このdivのstyle、canvasだとうまくいかないんだよね。displayとかbox-sizingとかも試したけどダメ。
何がダメだったのかわからない。誰か教えて。

終わりに

paddingじゃなくて、大きさを調整すればよかったんだけど、canvasはよくわからんね。

htmlはめんどくさい。

5
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
5
0