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

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

ただいまの
回答率

88.93%

スマホでレイアウトが崩れてしまいます。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 187

chair

score 13

下記の画像のようにスマホだとなぜかレイアウトが崩れてしまいます。

↓PCサイトの画像です
PC

↓スマホで表示した画像です
スマホ

<試したこと>
・スマホでPC版サイトを表示しても、同じ崩れ方
・スマホでchromeブラウザとsafariで表示してみたが同じ崩れ方
・PCのディベロッパーツールで、スマホの幅にした場合は崩れない
・<meta name="viewport" content="width=1263, user-scalable=yes," />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
を両方試したが、変わらない
・↓下記のCSSの.m-formと.countryのpositionタグを消して、代わりに.countryにtransformを指定してみたのですが、同じでした。
原因がわかる方、ご教示願います!

以下、省略したコードですが貼らせて頂きます!

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Airbnb</title>
    <link rel="canonical" href="">
    <link rel="stylesheet" href="reset.css">
    <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet">
    <link rel="stylesheet" href="style.css">
    <link rel="stylesheet" href="responsive.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>

<!-- モーダルスタート -->
        <article class="modal-wrapper" id="modal">
            <div class="modal-w">
                <p class="entry"><i class="fas fa-times" id="modal-close"></i>ログイン</p>
                <div class="m-scroll">
                    <form action="" method="post" class="m-form">
                        <label class="country">国/地域</label>
                        <select name="log-on-place" class="log-on-place">
                            <option value="" selected>日本(+81)</option>
                            <option value="">コンゴ (+242)</option>
                            <option value="">イギリス (+44)</option>
                        </select>
                        <input type="text" name="log-on-phone" class="log-on-phone" placeholder="電話番号">
                    </form>
                    <p class="m-text">番号確認のため、電話またはSMSでご連絡いたします。 SMS基本料金およびデータ通信料がかかります。</p>
                    <p class="continue">続行する</p>
                    <p class="m-center">または</p>
                    <ul class="social-a">
                        <li class="s-account"><img src="./img/mail-icon.gif" alt="mail"><a href="">メールアドレスで続行</a></li>
                        <li class="s-account"><img src="./img/facebook-icon.gif" alt="facebook"><a
                                href="">Facebookで続行</a></li>
                        <li class="s-account"><img src="./img/google-icon.gif" alt="google"><a href="">Googleで続行</a>
                        </li>
                        <li class="s-account"><img src="./img/apple-icon.gif" alt="apple"><a href="">Appleで続行</a></li>
                    </ul>
                    <p class="already-a">すでにアカウントをお持ちですか?<a href="">ログイン</a></p>
                </div>
            </div>
        </article>
        <!-- モーダルラスト -->
/* モーダルスタート */

.modal-wrapper {
    display: none;
    position: fixed;
    background-color: rgba(0, 0, 0, 0.6);
    width: 100%;
    height: 100%;
    z-index: 10;
}

.modal-w {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 570px;
    height: 570px;
    border-radius: 15px;
    background-color: #ffffff;
    opacity: 1;
}

.m-scroll {
    height: 500px;
    padding: 0 25px 15px 25px;
    overflow-y: scroll;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -ms-flex-direction: column;
    flex-direction: column;
}

.m-form {
    position: relative;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -ms-flex-direction: column;
    flex-direction: column;
}

.log-on-place {
    padding-top: 30px;
    padding-bottom: 10px;
    width: 500px;
    border: solid 1px #b0b0b0;
    border-top-right-radius: 10px;
    border-top-left-radius: 10px;
    margin: 40px auto 0 auto;
    padding-left: 10px;
    font-size: 16px;
    color: #222222;
    background-image: url(./img/chevron-down-solid.gif);
    background-repeat: no-repeat;
    background-size: 18px 10px;
    background-position: right 10px center;
}

.country {
    position: absolute;
    top: 52px;
    left: 15px;
    font-size: 12px;
    color: #717171;
}

.log-on-phone {
    line-height: 55px;
    width: 500px;
    border: solid 1px #b0b0b0;
    border-top: none;
    border-bottom-right-radius: 10px;
    border-bottom-left-radius: 10px;
    margin: 0 auto 10px auto;
    padding-left: 10px;
}

#modal-close {
    padding-right: 210px;
    padding-left: 25px;
}

.entry {
    line-height: 64px;
    font-size: 16px;
    font-weight: 800;
    border-bottom: 1px rgba(176, 176, 176, 0.3);
    color: #222222;
}

.m-text {
    font-size: 12px;
    line-height: 16px;
    color: #717171;
}

.continue {
    width: 503px;
    line-height: 48px;
    font-size: 16px;
    font-weight: 600;
    background-color: #dd1062;
    border-radius: 10px;
    text-align: center;
    margin: 20px auto 25px auto;
    color: #ffffff;
}

.m-center {
    font-size: 12px;
    margin: 0 auto 20px auto;
}

.m-center:before {
    content: "";
    display: inline-block;
    border-bottom: solid 1px #e4e4e4;
    width: 210px;
    margin: 0 20px 3px 0;
}

.m-center:after {
    content: "";
    display: inline-block;
    border-bottom: solid 1px #e4e4e4;
    width: 210px;
    margin-left: 20px;
    margin-bottom: 3px;
}

.social-a li {
    line-height: 44px;
    width: 500px;
    border: solid 2px #b0b0b0;
    text-align: center;
    margin-bottom: 15px;
    border-radius: 10px;
}

.social-a li img {
    float: left;
    margin: 10px 0 0 10px;
    width: 29px;
    height: 25px;
}

.social-a li a {
    font-size: 14px;
    font-weight: 600;
}

.already-a {
    font-size: 14px;
    margin: 5px 0 25px 0;
}

.already-a a {
    font-size: 14px;
    font-weight: 600;
    margin-left: 10px;
    text-decoration: underline;
}

/* モーダルラスト */
$(function () {
    // モーダルウィンドウ開
    $('#modal-switch').click(function () {
        $('#modal').fadeIn();
    });
    // モーダルウィンドウ閉
    $('#modal-close').click(function () {
        $('#modal').fadeOut();
    });

    // モーダルバー上段の枠

    $('.log-on-place').click(function () {
        let $border = $('.log-on-place');
        if ($border.hasClass('thick')) {
            $border.removeClass('thick');
            $border.css('border', 'solid 1px #b0b0b0');

        } else {
            $border.addClass('thick');
            $border.css('border', 'solid 2px #000000');

        }
    });
    // モーダル、アカウントリンクバーの枠
    $(".s-account").hover(function () {
        $(this).css('border', 'solid 2px #000000');
    }, function () {
        $(this).css('border', 'solid 2px #B0B0B0');
    });
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • chair

    2020/07/16 22:11

    OSはsafariです!

    キャンセル

  • FrontEnd_Japan

    2020/07/16 22:13

    ブラウザではなくOSです。
    AndroidかIOSのバージョンを教えて下さい。

    キャンセル

  • chair

    2020/07/16 22:28

    すいません、間違えました!
    iOS 13.6です!

    キャンセル

回答 2

checkベストアンサー

+2

iosはform要素にflex設定はバグがあるようです。

form要素に対してflexプロパティを設定するのではなく、select, input要素をdiv要素でラッピングのは如何でしょうか。

<form action="" method="post">
  <div class="m-form">
    <label class="country">国/地域</label>
    <select name="log-on-place" class="log-on-place">
      <option value="" selected>日本(+81)</option>
      <option value="">コンゴ (+242)</option>
      <option value="">イギリス (+44)</option>
    </select>
    <input type="text" name="log-on-phone" class="log-on-phone" placeholder="電話番号">
  </div>
</form>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/17 23:42

    ご提案通りの方法で解決致しました!
    バグとかは考えたことなかったです。視野が広がりました。
    どうもありがとうございました!

    キャンセル

  • 2020/07/18 00:01

    flexはブラウザとOSに依ってバグが複数あります。
    私も時々flexのバグに悩まされることが多いです。

    キャンセル

  • 2020/07/18 00:40

    そうなんですね!
    勉強になります!

    キャンセル

+1

全体を見れないので何とも言えませんが、、、
.m-form {
position: relative;}

.m-form {
position: absolute;}
に変えると同じような表示になりますのでそれがヒントになったりするかもしれません。

また余談ですが、
.log-on-placeにmargin: 40px auto 0 auto;ではなく
.m-formにmargin: 40px auto 0 auto;にした方がきれいだと思います。
.log-on-phoneのmargin: 0 auto 10px auto;もいりませんし、
.country { top: 52px;}が10px程度で済むかと。
...全体を見ていないので一概には言えませんが...失礼m(__)m

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/16 22:35

    確かに同じような表示になりました。
    解決はしてませんがヒントになりそうです!

    コードレビューして頂きありがとうございます!
    さっそく編集しました。

    キャンセル

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

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る