• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DIVの幅を常に100%にしたい)

DIVの幅を常に100%にしたい

このQ&Aのポイント
  • 「div1」に背景色を設定し、横幅100%で表示していますが、テーブルの幅が大きくなると「div1」の幅も元の画面サイズまでしか描画されません。テーブルの幅が大きくなった時に、「div1」も一緒に大きくなる方法はありますか?
  • テーブルの幅が画面を超えると、「div1」の幅も元の画面サイズまでしか描画されません。テーブルの幅が大きくなった時に、「div1」も一緒に大きくなる方法はありますか?
  • 「div1」には横幅100%の背景色が設定されていますが、テーブルの幅が大きくなると「div1」の幅も元の画面サイズまでしか描画されません。テーブルの幅が大きくなった時に、「div1」も一緒に大きくする方法はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.5

>データを一覧表示する為のtableを入れます。  了解しました。  tableの目的から、table自体が広がるのは当然ですよね。これはスマホだろうがパソコンだろうが関係なく、横にスクロールしなければならないことは必然です。  それが入る親コンテナブロックの幅が指定されていても、すべてを表示しなければなりません!!!。ウィンドウ幅よりも広いとき横長の表が横スクロールを強制するのと同じです。  単純に <body> <div class="header"> </div> <div class="section"> <table summary="何たらの表">...</table> </div> <div class="footer"></div> </body> だとして、 div.header,div.section,div.footer{} に対してwidthを指定しなければ良いです。ルートのブロックは表示域を参照しますから、【引用】____________ここから ルート要素の包含ブロック(これを初期包含ブロックと呼ぶ)はUAが定める。 ルートではなく且つ絶対配置でもない要素の場合、最も近い祖先ブロック要素の内容辺が包含ブロックになる。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[視覚整形モデル詳細( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/visudet.html#containing-block-details )]より   width:100%とすれば、ウィンドウ幅にされてしまうのは当然ですよ。デフォルトのautoのままにしておけばよいです。

luca20110205
質問者

お礼

何度もご教示頂き、有難うございます。 教えて頂いた通り、widthの指定を無くしたらうまくいきました。

すると、全ての回答が全文表示されます。

その他の回答 (5)

回答No.6

>「div1」には背景色を設定し、横幅100%で表示しています。 あなた自身がこう指定したのだから >「div1」の幅が元々の画面サイズまでしか描画されません。 こうなるのは当然でしょう、頭がおかしくなっていますね、そうでなければもともとHTMLとCSSを理解しきれていない >DIVの幅を常に100%にしたい と言っておきながら >テーブルの幅が大きくなった時に、「div1」も一緒に大きくなるようにするには などと問い、矛盾したことを同時に要求する、そして >外枠用のテーブルを使えばできるのでしょうが これなどはまったく意味不明ですね ほかの人も言い触れていますが、そもそもあなたが提示したHTMLの記述では何のために<div>が2重に<table>を囲っているのですか? 背景画像の上に<table>があるだけのページなら、<div>はまったく不要ですよ? おそらくリキッドレイアウトをとっているのでしょうが それを勉強するときに、幅の最大値と最小値を設定するべきだというのを学ばなかったんですね <div>のmin-widthをiPhoneの幅より大きくとれば解決するはずです

luca20110205
質問者

補足

知り合いでもない人に頭がおかしいとか言われる筋合いはありません。 ネット弁慶がやりたいなら2ちゃんねるというサイトがありますので、 そちらで思う存分誹謗中傷をやり合ってくださいね。

すると、全ての回答が全文表示されます。
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.4

>class="section"の中にテーブルを入れるとすると、 >CSSをうまく書けば目的の処理ができるという事でしょうか?  そもそも、本当にtableなのですか?デザインのためではなく!!!

luca20110205
質問者

補足

データを一覧表示する為のtableを入れます。

すると、全ての回答が全文表示されます。
回答No.3

何も指定しなければ内容に合わせて広がるんじゃないでしょうか。

すると、全ての回答が全文表示されます。
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

tableやdivをデザインのために使ってませんか? ・DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するための一般機構を提供する。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/global.html#h-7.5.4 ) ・単に文書内容を整形する目的だけで表を用いるべきでない。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#h-11.1 )  tableは二次元データを表すものです。したがって、そのデータ構成が分かるように必ずデータ分だけサイズが横に広がり表示されなければなりません。(枠・ウィンドウを越えても!!!)  また、ブロックはサイズが指定されていればそれ以上は広がりません。広がらないためにサイズを指定するのですからね。  しかも含む内容と関係ないブロックの幅が広がるはずもありません。 ★tableを使用したデザインをやめること!!  これは必須です。本当にtableなら枠をはみ出しても表示して良いのです。 ★divは、HTML5では、  Authors are strongly encouraged to view the div element as an element of last resort, for when no other element is suitable.( http://www.w3.org/TR/html5/grouping-content.html#the-div-element )  ・・DIVは多に適当な要素がないときの最終手段として使うことになります。・・・  HTML4では適当な要素がありませんから、class名を使ってきました。 単純に <body>  <div calss="header">    <h1>タイトル</h1>  </div>  <div class="section">   <h2>本文</h2>  </div>  <div class="footer">  </div> </body> HTML5なら <body>  <header>    <h1>タイトル</h1>  </header>  <section>   <h2>本文</h2>  </section>  <footer>  </footer> </body> としましょう。

luca20110205
質問者

補足

ご回答有難うございます。 現状、HTML5は使えません。 class="section"の中にテーブルを入れるとすると、 CSSをうまく書けば目的の処理ができるという事でしょうか?

すると、全ての回答が全文表示されます。
回答No.1

iPhoneですか?…… 一応styleに「#div1{width:100% !important;}」で常に100%ですけど ローテーション時にサイズ変更したいとのことなのでそういうことではないですよね? javascriptなら以下 window.onorientationchange = function() {   //bodyやdivのサイズ変更   document.body.style.Height = "100%";   document.getElementById("div1").style.Height = "100%"; } 画面サイズよりもコンテンツや要素のサイズが小さい場合100%にはならないので bodyもサイズ変更するのをオススメします

luca20110205
質問者

補足

ご回答有難うございます。 style、javascript共に試してみましたが、結果は変わりませんでした。 > ローテーション時にサイズ変更したいとのことなのでそういうことではないですよね? ローテーション時だけではなく、テーブルの幅が100%を超えて大きくなった時に、 div1も一緒に大きくなって欲しいのです。 div1の幅を100%指定 →テーブルの内容によってテーブルの幅が100%を超える →div1の幅が初期の100%のままなので、右側にスペースができてしまう という状況です。

すると、全ての回答が全文表示されます。

関連するQ&A