質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

4回答

7096閲覧

iOS Safariにて、inputタグにフォーカスしたときにページ最下部にできてしまう余白をなくしたい

fruitmachine

総合スコア47

Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2018/07/26 06:41

編集2018/07/26 08:50

表題のとおりですが、iOS Safariにて、inputタグにフォーカスし、キーボードが表示されているとき
画像のようにページ最下部、htmlタグの下に余白ができてしまいます。

イメージ説明

css

1body { 2 background: url('image/hoge.jpg') #ff6; 3}

背景色は反映されるのですが、背景画像をこの余白分埋めることは可能でしょうか。
可能であればCSSで、できなければjsでも良いです。
こちらで確認しているバージョンは、iOS 10, 11です。

以下は試しましたが、だめでした。

css

1body { 2 background-size: cover: //意味なし 3 background-size: 100% 100%: //意味なし 4}

余白自体は、GoogleやYahooでも同じようにでてしまうので、なくすことはできなさそうと思っています。
よろしくおねがいします。

追記

キーボードとともに、アドレスバーが表示されていることも余白が出現する条件のようです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

<body>の大きさは変更できないので、jqueryでフォーカスイン/アウト時に20px動かすようにしてみました。 ```html <html> <head> <meta name="viewport" content="width=device-width,initial-scale=1"> <style type="text/css"> body { margin: 0; display: -webkit-flex; display: -moz-flex; display: -ms-flex; display: -o-flex; display: flex; -webkit-flex-direction: column; -moz-flex-direction: column; -ms-flex-direction: column; -o-flex-direction: column; flex-direction: column; justify-content: flex-end; background: url("https://www.photolibrary.jp/mhd5/img533/450-20170708173121221103.jpg") #ff8; } </style> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha256-3edrmyuQ0w65f8gfBsqowzjJe2iM6n0nKciPUp8y+7E=" crossorigin="anonymous"></script> </head> <body> <input type="text" id="textbox"> <script type="text/javascript"> $('#textbox') .focusin(function(e) { $(this).css('margin-bottom', '20px'); }) .focusout(function(e) { $(this).css('margin-bottom', ''); }); </script> </body> </html> ```

背景をはみ出させるとスクロールバーが出てしまうので、これでいかがでしょうか?

投稿2018/07/26 09:08

yukihisa

総合スコア672

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fruitmachine

2018/07/26 09:53

スクロールすると黄色の余白がでてしまうので、これではだめです。。 追記しましたが、アドレスバーが表示されていることも条件のようです。 Safariのバグのような気がしています。
yukihisa

2018/07/26 10:08

黄色の余白が出ている部分はbodyの範囲外なので、設定している色を消しましょう。 bodyにoverflow:hidden;を設定するとわかると思います。 で、移動距離が少し足りないのでもう何pxか追加してください。 この動作はバグではなく、テキスト入力時の予測変換領域を確保しているためなので、それに合わせて設計していくしかありません。 teratailでもスクロールできる以上に引っ張ると余白が出ます。 最下部にテキストボックスがある故に目立ちますが、正常な動作です。
fruitmachine

2018/07/26 13:58

Googleなどの他のサイトでも同じように余白が出ることは認識しています。 Chromeでは起こらないため、Safariでのバグと表現しました。 わかりやすいようにサンプルに黄色の背景を敷きましたが、私が実際にやりたいことは、 背景色が見えてしまうことを防ぐことではなく、背景画像を余白分までうめることです。 スクロールできる以上に引っ張れてしまうことが問題なのです。 無理そうに思いましたが、何かしら方法がないものか、と思いこちらで質問させていただきました。
yukihisa

2018/07/27 00:18

>Chromeでは起こらないため、Safariでのバグと表現しました。 >スクロールできる以上に引っ張れてしまうことが問題なのです。 再度になりますが、バグでも問題でもなく、Safariの仕様です。 ブラウザ間での仕様の違いは多くあります。 hoverの動作の違い、position:stickyの対応/非対応、ベンダープレフィックスによるcssの書き分けetc... 大事なのはそのような仕様の違いになるべく左右されないページデザイン、設計を心掛ける事です。 Safariではフォーカス時⇒入力時の予測変換が出るたびに変換領域のサイズに合わせて上下動すると見栄えが良くない為にフォーカス時に予測変換分の余裕を持たせてテキストボックスを表示させます。 今回で言えばinput領域が画面の最下部にレイアウトされていますから、余白分=画面の範囲外であるため、HTMLやCSSでは対処のしようがありません。 本来であれば今回の現象が起きないようにレイアウトの設計をしていくことが必要になります。 それでも画面最下部にinputを配置したいのであれば、回答したようにフォーカスイン/アウトのタイミングで中の要素を余白が出ない場所まで上へ移動させる以外にありません。 ただし、他の要素と重なり合う危険性やPCで見た場合は移動させると不自然な為、スマホのみ移動させるなど、色々面倒な事が出てくるため、おすすめはしません。 日本のiphoneのシェア率を考えると「Safariがおかしい」というよりも「Safariで綺麗に見える」設計にシフトした方がよいと思います。
fruitmachine

2018/07/27 01:56

デザインについてはクライアントがいますので、シフトすることはできません。 Safariの仕様なのであればそれはそれでそのようにクライアントに伝えられるので大丈夫です。
guest

0

これだけ回答があっても解決できないということは
htmlまたはinputタグに直接style属性が指定されている
可能性がある気がするのですが
そのようなことはないでしょうか。

念の為、HTMLのコードの記載をお願いします。

投稿2019/05/10 03:58

yasutomi

総合スコア2937

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yukihisa

2019/05/10 04:11

私の回答で記述していますがブラウザの仕様による動きです。 テキスト入力時に予測変換表示領域を確保する為、テキストボックスが画面最下部に配置されている場合には質問の様な現象が起きます。 「仕様」なのでそれに合わせて設計するしかない、以外は言えないので控えてたけど後から何度も回答ついてるみたいなんで再度。
yasutomi

2019/05/10 04:13

なるほど、ご回答ありがとうございます。
guest

0

以下のcssを反映してみる

css

1html, 2body{ 3 width: 100%; 4 margin-left: 0; 5 margin-right: 0; 6}

出来なかったら
overflowの設定
body直下をdivなどで囲い、overflow: hidden;を指定なども試してみては。

投稿2019/03/25 04:29

tukatter

総合スコア284

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fruitmachine

2019/04/06 03:57

どれも試してみましたが、ダメでした... Apple Developer Forumsで質問してみたのですが、そちらでも回答がないので、 どうしようもないのかもしれません。
tukatter

2019/04/06 04:23

意外とシンプルに body{padding:0; margin: 0;} なのかなとも 思いますが!important指定での優先順位だったり background-size: contain;としてみたり。 背景画像云々の問題でない場合は viewportはどのようにされていますか? <meta name="viewport" content="width=device-width" /> 指でタップしたときの誤操作対策で指の接地面と指先のまるくなってる部分の誤差を埋めるためということもあるのかもしれないですね。 指先でタッチしようとしたのに実際はちょっと下の方をタッチしていることになるので。 やったことないので暇なときにためしてみますね。
tukatter

2019/04/06 04:52

アイフォンの設定で アクセシビリティを選んで 視差効果をへらすを on/off切り替えてみて 見え方が変わるかためしてみてもいいかもしれませんね。 ふと、その余白の部分を見ていたら キーボードの変換候補を表示する余白に見えるね。 アイフォン自体が必要とする余白なのかもということでしょうか。 何か分かれば追記しておきますね。連投すみませんでした。
guest

0

CSS

1.body { 2 backgound: url('image/hoge.jpg') #ff6; 3 background-size: cover; /*追加*/ 4}

これやってみても駄目でしょうか?

投稿2018/07/26 06:48

aKusano

総合スコア3763

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fruitmachine

2018/07/26 06:55

はい、ダメでした...
aKusano

2018/07/26 07:02

そうですか。。 ならば input[type="text" ] { margin-bottom: 0 !important; }とか? (※セレクタは問題のフォームを確実に選択できるものに変更してみてください。)
aKusano

2018/07/26 07:03

あ、上記のコードに body {padding-bottom: 20px; }とか、なんか適当に余白いれてみるのも合わせてやってみてもらえます?
fruitmachine

2018/07/26 07:31

paddingやmarginをいじっても、余白は消えません。。 http://mimhhs.moo.jp/test.html こちらにサンプルのコードをあげましたので、お時間有りましたらデベロッパーツールなどで触ってみてください。
aKusano

2018/07/26 07:36

効果あるかわからないですが、 1.1行目に<!DOCTYPE html>を入れる 2.input要素のfont-sizeを16px以上に設定する の2つを試してみてもらえますか?
fruitmachine

2018/07/26 07:41

効果なしです。。
aKusano

2018/07/26 07:42

むぅ、そうですか。。。 手強いですね。 どなたか猛者が現れると良いのですが。
fruitmachine

2018/07/26 07:51

不可能な気がするので、現在Appleに問い合わせています。。
aKusano

2018/07/26 07:55

そうですね、inputにフォーカスした状態で下に現れる余白は、 諸々の挙動からして通常のCSSのコントロール範囲外にあるように思えますね…。 Appleからの返答で理由がわかったら是非お知らせください。
yukihisa

2018/07/26 08:21

当方 ・iphone7 ・iOSは最新版 で提示されたサイトを確認したところ、ご質問のような余白はなく、普通に背景が表示されました。 そして、提示されている画像とサイトの画面にかなり差異があったので、できれば全く同じソースにしていただけると現象の確認がしやすいと思います。 特定のバージョンで起きるという可能性も捨てきれませんが。。。
fruitmachine

2018/07/26 08:26

只今、スクリーンショットを撮ったときと同じ状態にしました。ご確認ください。
yukihisa

2018/07/26 08:35

ありがとうございます、確認できました。 inputがbodyの一番下に配置されているため、inputフォーカス時上移動した結果、表示範囲が画像の範囲<body>を超えてしまっていますね。 回答に書いてみるのでやってみて下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問