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

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

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

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

Q&A

解決済

1回答

842閲覧

コンテンツ幅 >画面幅 となる場合のヘッダーの固定について

s3j5k4

総合スコア1

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

0グッド

0クリップ

投稿2020/05/14 04:18

前提・実現したいこと

PHPを使用してwebページを製作しています。
ページには固定ヘッダーと、複数のテーブルを表示しています。テーブルの幅は全て同一で、表示内容によって700~1000pxあたりとなります。
テーブルの幅はwidthを直接指定して、固定レイアウトとしています。

スマートフォン、デスクトップでも固定ヘッダーは画面上部に固定し、テーブルを含めた表示内容はスクロールして閲覧できることが理想です。

発生している問題・エラーメッセージ

Chromeの開発者ツールのデバイスモード、またはandroidスマートフォンの場合のみ、上記のページでは固定ヘッダーが「画面の幅」ではなく「テーブルの幅」まで広がってしまいます。

なお、以下の場合にはヘッダーが画面上部に固定されています。
・Edgeの開発者ツールでのモバイル表示
・iPhone実機
・iPad実機

iPhone、iPadの場合は拡大/縮小も可能です。

該当のソースコード

同様の条件を再現したコードになります。
また、このコードを再現したテストサイトが以下になります。

http://navi-test.ready.jp/navi-test.php

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>サンプルサイト</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <style> body{ margin:0; } #nav{ position:fixed; top:0; left:0 border: 1px solid black; width: 100%; background-color:#b7b7b7; height:50px; } #nav ul li{ display: inline; width:33%; } #main{ margin:50px 8px 0 8px; } .sample-table{ margin-bottom:50px; } </style> </head> <body> <div id="nav"> <ul> <li><a href="">ホーム</a></li> <li><a href="">メニュー1</a></li> <li><a href="">メニュー2</a></li> </ul> </div> <div id="main"> <h1>サンプルサイト</h1> <?php for($i = 1; $i <= 6; $i++){ echo " <div class='sample-table'> サンプルテーブル{$i} <table style='width:700px;border:1px solid black'> <tr><td>サンプル{$i}-1</td></tr> <tr><td>サンプル{$i}-2</td></tr> <tr><td>サンプル{$i}-3</td></tr> <tr><td>サンプル{$i}-4</td></tr> </table> </div>"; } ?> </div> </body> <script> $(function() { console.log('screen.width: '+window.screen.width); console.log('innerWidth: '+window.innerWidth); // console.log('navWidth: '+ $('#nav').width()); console.log('$window: '+$(window).width()); console.log('$body: '+$('body').width()); console.log('$html: '+$('html').width()); }); </script>

試したこと

viewportにuser-scalable=noを指定するとヘッダーは固定されます。
また、全てのtableをtableで囲み、overflow-x: visible;を指定することでもヘッダーは固定されます。

ただ、そうすると画面の拡大/縮小ができなくなってしまうことがネックとなっています。
画面の拡大/縮小に対応して、ヘッダーを画面の幅で固定することができないかと思います。

デバイスモードにてconsoleを表示した場合、innerwidthがテーブルの幅まで広げられた値となっています。
これはchromeの仕様でしょうか?また、そうであれば解決策はありますでしょうか?

分かりづらい点がありましたら申し訳ありません。
何とかお力を貸していただければと思います。
よろしくお願いいたします

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

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

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

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

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

guest

回答1

0

ベストアンサー

.sample-table#mainoverflow-x: scroll; を設定してみてはいかがでしょう。

【overflow-x - CSS: カスケーディングスタイルシート | MDN】
https://developer.mozilla.org/ja/docs/Web/CSS/overflow-x

投稿2020/05/14 04:44

kei344

総合スコア69453

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

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

s3j5k4

2020/05/14 05:06

ご回答ありがとうございます。 overflow-x: scrollも試してみましたが、画面の拡大はできても縮小はできません。 テーブルの性質上、縮小して見られるようにもしておきたいと思っています。
kei344

2020/05/14 05:12

前提に書かれていないので見落としていました。別ページにしてiframeで読み込むとかしか方法は無いかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問