
divタグで生成された3つの領域を横に並べたいのですが、
左2つは幅をピクセル指定で固定し、3つめをウインドウサイズに合わせて残りの幅全てを使う、という指定はどうすればいいでしょうか?
高さもやはりウインドウサイズにあわせるようにしたいです。
また、左2つの領域は固定したまま、3つめの領域のみスクロールができるようしたいです。
現在下記で試していますが、うまくいきません。
お分かりになる方、知恵をお貸しくださいo(_ _*o)
【HTML側】
<div id="left">1</div>
<div id="center">2</div>
<div id="right">3</div>
【CSS側】
html,body{
height:100%;
width:100%;
}
div#left{
width:150px;
height:100%;
float:left;
}
div#center{
width:160px;
height:100%;
float:left;
}
div#right{
width:100%;
height:100%;
float:left;
}

No.1ベストアンサー
- 回答日時:
できません。
そうなるとHTMLではなくてPDFなどの他の仕様の範疇です。
HTMLは、元来さまざまなプラットホームで利用できるように考案されたものです。すなわちさまざまな解像度、ウィンドウ幅、点字端末、読み上げブラウザ・・検索エンジンも・・
HTMLの基本中の基本です
【引用】____________ここから
HTMLは、どんな環境からもWebの情報を利用できるようにすべきだという方針の下に開発されている。例えば、様々な解像度や色深度のグラフィックディスプレイを持つPCや、携帯電話、モバイル機器、音声入出力機器、帯域が広いコンピュータや狭いコンピュータ、等の環境である。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Introduction to HTML 4 (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より
それはともかく、HTMLはワープロやDTP ( http://ja.wikipedia.org/wiki/DTP )のようなデザインのためではありません。これを最も間違える部分です。
ですのでマークアップは(インデントがわかりやすいようにタブを全角スペースで置き換えてあります)
<div class="section">
<h1>サンプル</h1>
<div class="body">
<h2>見出し</h2>
<p>段落</p>
<p>段落</p>
</div>
<div class="nav">
<ul>
<li>あいう</li>
<li>えおか</li>
</ul>
</div>
<div class="contentTable">
<h2>目次</h2>
<ol>
<li>きくけ</li>
<li>こさし</li>
</ol>
<div>
</div>
</body>
とかになるはずですね。HTMLは文書構造を示すもの。CSSはプレゼンテーションを示すものという明確な区別があります。id=leftなんて、しないこと。先で右に配置したくなったらどうするの・・
さて、div要素の幅はウィンドウ幅を認識できますが、高さはウィンドウの高さを認識しません。IEの互換モードにすれば、IEのバグ(仕様?)でウィンドウ高さを使えます。そのときdivの親要素がbodyなので、body{height:100%;}が必要。
★ただしこの方法は非推奨です。他のブラウザではうまくいきません。
ディスプレイ幅が小さなブラウザ、あるいは目が悪くてフォントを拡大して見られる訪問者のことも考えれば高さは指定すべきではありません。
よって幅だけを指定する方法を上記HTMLでしたら
html,body{margin:0;padding:0;}
div.section{width:100%;position:relative;background-color:gray;padding-left:320px;}
div.section div.nav,
div.section div.contentTable{position:absolute;top:0px;height:1000px;}
div.section div.nav{left:0px;width:150px;background-color:green;}
div.section div.contentTable{left:150px;width:160px;background-color:blue;}
でよい。
floatは、ここで使うべきじゃありません。あくまで文章中の画像の周囲に本文を回りこませるためや(小さなブロックをウィンドウ幅に合わせて並べるとか)に使うものです。もし本文でfkoatの必要がでてきたとき、clearできなくなっちゃう。
回答ありがとうございます。
独学で初心者なので基礎がわかっていなかったようです、すみませんo(_ _*o)
ORUKA1951さんの回答を読んで、おおすごい!なるほど!と納得しました。
少々難があるようなので、無理矢理作るよりも、もっと見る人に優しいデザインに変えてみたいと思います。
ありがとうございました!
No.2
- 回答日時:
独学でWEBサイトを作成している者です。
多少勘違いをしている様ですのでちょっと訂正をしておきます。
px値も%同様れっきとした相対単位です。
pxという単位の基準が画面サイズです。従って画面の大きさによって広さが変わります。
なので全て%値で良いのではないでしょうか?
どうしても絶対値指定したいならptとかで指定して下さい。絶対お勧めはしません。
で、rightのみスクロールバーを付けたいというのはその位置以外は動かない様にしたいというのと同義語ですよね?
余り推奨されてはいませんが、画面にスクロールしても常に同じ位置に表示させる事は可能です。
CSSでposition:fixed;(positionのabsoluteを指定したと同じで、さらにスクロールしても同じ位置に表示される)を指定してスクロール対象から外します。同時にtop,left,right,bottomなどで位置調整して、z-index:10;(HTMLで書かれた上部項目からどんどん数値が上がるようですのでページが長くスクロールで隠れる様なら数値を上げて下さい。初期値:body=0)と指定して、id=leftとid=centerを位置決めして下さい。
私がやるなら
div#left{
display:block;
background:#eeeeee;
position: fixed;
width:150px;
height:500px;
z-index:1; /*今回これないと表示されないので最低限の1ですが
画面全体の階層数に応じて増やして下さい*/
}
div#center{
display:block;
background:#ffff66;
position: fixed;
padding-left: 160px;
width:160px;
height:500px; /*この項目にもz-indexを追加して下さい。文字記入して
行ったらスクロールすると非表示(下に隠れる)になります*/
}
div#right{
display:block;
background:#ffccff
width:77%;
padding-left:330px;
height:500px;
background:#ffccff; /*ここは特にz-indexは必要ないです一番高い階層ですから*/
}
こうなります
中身が無いのでdisplay:block;で表示させてます。
全てのボックスの起点はleft:0;です。
で、padding-leftを使って文字の出力位置を調整しています。
さらに画面幅いっぱいでの注意!!CSS全体に言えるが…
ボックスの幅(あえてこう書いています)というのは
width+margin+padding=画面全体となりますので、調整する際はこの3つの要素を足し引きして
調整します。物の幅=widthではありませんのでこの点にご注意を!!
あとそのCSSは本来のではなくここで書いた物ですよね?
それコピペして検証しようとしたら全角スペース入ってたんで…(入ってると機能しません)
使うならTABキーを!!
回答ありがとうございますo(_ _*o)
pxが相対単位だというのは知りませんでした・・・勉強になります。
やはり熟練の方からしたら無理な注文、といった感じなのですね;
デザインをかえて作り直してみます。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- HTML・CSS PCサイズで赤い画像2つと、青い画像2つがそれぞれ横に2つずつ並んでいるのですが、これをスマホサイズ 5 2022/04/11 12:01
- HTML・CSS (Javascript)印刷するファイルに応じて印刷プレビュー画面で用紙を自動的に切り替えたい!! 2 2022/04/11 12:04
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
ライトボックスでスクロールバー
-
CSSがなぜかfont-sizeだけ効か...
-
書籍を見つつサイト造りの練習...
-
初心者html・CSS ウィンドウを...
-
スクロールボックス内の文字の...
-
widthやheightの数値に単位(px...
-
CSSでfloatした要素の高さを100...
-
divの中にspanを右寄せにするに...
-
余分な縦スクロールバーが出て...
-
CSSの角丸での質問です。 今、C...
-
画面に表示したらアニメーショ...
-
【CSS】ヘッダーの高さが不明の...
-
<div>と<div>の間の10px程の...
-
css初心者 フレックスボックス...
-
divで囲まれたpaddingの指定を...
-
トップに戻るボタン、スマホだ...
-
定義リストに下線をつけたいと...
-
日本地図(白地図的)にリンク...
-
スタイルシートで画面を縦に2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
CSSがなぜかfont-sizeだけ効か...
-
form input テキストを上下中央...
-
【CSS】ヘッダーの高さが不明の...
-
画像イメージの上下左右、欲し...
-
css初心者 フレックスボックス...
-
余分な縦スクロールバーが出て...
-
W3Cのソースコードの検証サービ...
-
表示倍率を変えるとレイアウト...
-
safariでの横並びリスト(List...
-
<div>と<div>の間の10px程の...
-
border-style:solidで文字がずれる
-
入力フォームとセレクトボック...
-
div内に外部のurlを表示させたい
-
divの中にspanを右寄せにするに...
-
dl,dt,ddタグでdtに対して、row...
-
divで囲まれたpaddingの指定を...
-
footer を横幅いっぱいに広げる...
-
CSSで指定した背景画像にリンク...
おすすめ情報