• ベストアンサー

CSSで、左側にあるGlobalNavigationを右側にあるコンテンツよりも後に読み込ませるには?

CSSです。 検索エンジンへ読み込ませるソース部位の順番をコントロールしたいのですが、 左側にあるGlobalNavigationを右側にあるコンテンツよりも後に読み込ませる方法を模索しております。 本件もご多分にもれず、HeaderとFooterが上下にある構成です。 position: absoluteを使って、記述順番をコンテンツを先にして後にGlobalNaviとすれば、ここだけみればできるんですが、困るのがFooterでして、本件のようにHeader、Main(GlobalNaviとコンテンツ、さらに改行して横いっぱいに「TopOfThePages(ページの先頭へ戻る)」リンクボタンエリア)、Footerとある場合ですから、真ん中のMainを絶対配置にしてまうと、その次にくるTopOfThePages、Footerも絶対配置にしないと出来ないだろうと思うので困っております。 これらを絶対配置したくとも、Main部分の縦サイズは各コンテンツの内容ごとに違ってくるわけで、だからして絶対配置ができないからです。 コンテンツを絶対配置で記述、その後にGlobalNavigationを絶対配置で記述、その後のTopOfThePages、Footerも問題なく配置させる方法はどうすればいいでしょうか?

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

  • ベストアンサー
  • miya_00
  • ベストアンサー率47% (9/19)
回答No.2

解釈が間違っていたらすみません。 もし自分が思っている解釈であっているなら下の通りで実現可能です。 ■XHTML <div id="Header"> </div> <div id="container">  <div id="Main">  </div>  <div id="GlobalNavi">  </div> </div> <div id="TopOfThePages"> </div> <div id="Footer"> </div> ■CSS div#Header { width: 800px; } div#container { width: 800px; } div#container:after { height: 0; visibility: hidden; content: "."; display: block; clear: both; } div#Main { width: 580px; float: right; } div#GlobalNavi { width: 200px; float: left; } div#TopOfThePages { width: 800px; } div#Footer { width: 800px; } positionを使わずに組めるはずです。 もしMainとGlobalNaviの高さを揃えたいのであれば、 heightLine.jsと言うjavascriptを使って自動的に高さをあわせてしまえば問題は解決すると思われます。

touchy
質問者

お礼

せっかくよいアドバイスと思われることを書いて頂いていたのに 遅くなって申し訳ありません。どうもありがとうございました<(_ _)> さて、業務で忙殺されていてやっとアドバイス頂いたことを実験できました。 結果、確かにこのソースでやるとできますね!! ただし、MainとGlobalNaviの行揃えができないんですか・・・・ 厳しいですね・・・・こんなことができないなんてCSSの規格が問題ですね。 JavaScriptファイルも最悪導入しないといけません。しかし、JavaScriptですから可能な限りやりたくないですが・・・・ CSSハックに回避方法でもないものかなぁ・・・・・ さて、ご案内で自分が気づいたのは二点です。 [1] 「Main」が右に位置はするが、HTMLでの記述は先に書いた。   ただしそのままだと左に位置してしまうので、float:rightと記述。   逆に、「GlobalNavi」の方はHTMLでは後に記述し、float:leftで表示は   先に、つまり左に位置させた。 [2] CSSファイル記述で、全てのidタグの記述を通常の「#hogehoge」とせずに   「div#hogehoge」と記述した。 この二点によって可能となったと理解していますが、float:right、leftだけでなく、 なぜこの「div#hogehoge」という書き方が必要なんでしょうか。 floatについては「おお!そういえばそうだな!」と思えるんですが、「div#hogehoge」の方が何をしているものなのかわからずにおります。 宜しくお願い致します。

touchy
質問者

補足

お礼の書き込み済んだあとに、div#Header等の記述についてわかりました。 お蔭様で前進できます。 どうもありがとうございました。

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

その他の回答 (1)

  • suzuko
  • ベストアンサー率38% (1112/2922)
回答No.1

●CSS #header { width: 100%; } #Main { width: 100%; } #コンテンツ { float: right; width: 75%; } #GlobalNavi { float: left; width: 20%; position: absolute; } #TopOfThePages { clear: both; width: 100%; } #Footer { width: 100%; } ●html <div id="header"> </div> <div id="Main"> <div id="コンテンツ"> </div> <div id="GlobalNavi"> </div> <div id="TopOfThePages"> </div> </div> <div id="Footer"> </div> ならば、検索エンジンにはコンテンツの中身を先読みさせれますが。 もし、headerの高さも決まっているのならば、さらにMainの位置を絶対配置で指定して、htmlではheaderを後ろに回す方法もあります。 ※上の場合、必ずコンテンツとGlobalNaviの幅は100%になら内容にしてください。

touchy
質問者

お礼

早々にありがとうございます。 > ならば、検索エンジンにはコンテンツの中身を先読みさせれますが。 このソースでは質問に書いたように、FooterがMainの下にひっついてくれないのではないでしょうか? Footerの上の行に位置するMainたちが絶対配置だから、FooterはHeaderの下にいきなり位置し、Mainはその上に乗っかるように重なってしまうのではないでしょうか? この書き方は過去にミスして経験しているのですが、どこか気づいていない違いがあるのかな・・・ > もし、headerの高さも決まっているのならば、さらにMainの位置を > 絶対配置で指定して、htmlではheaderを後ろに回す方法もあります。 はい、Headerの高さ、決まっています! これですね! どうせコンテンツを先読みさせるならばここまでしないといけませんね! ありがとうございます。 > ※上の場合、必ずコンテンツとGlobalNaviの幅は100%になら内容にしてください。 残念、100%になっています・・・ 厳密に言うと、 ------------------------------------------------------------ 【CSS】 #main-all { margin: 0px; width: 100%; background: #5ca786; } #main-area { margin: 0px; padding-left:5px; width: 749px; background: #266e4e; float: left; overflow: auto; } #main-line { margin: 0px; width: 1px; background: url(../img/share/line_rht.gif) repeat-y; float: left; } #nv-global { margin: 5px 0px 0px 0px; width: 177px; padding-bottom: 100px; background: #7bb395; float: left; } #nv-global ul { margin: 0px; padding: 0px; } #nv-global li { } #main-area-cts { margin: 5px 0px 0px 0px; padding-left: 5px; width: 557px; padding-bottom: 30px; background: #266e4e; float: left; } #main-area-btm { width: 749px; height: 70px; background: #266e4e; } 【XTHML】 <div id="main-all"> <div id="main-area"> <div id="globalnav"></div> <div id="main-area-cts"></div> </div> </div> <div id="nv-global"></div> ------------------------------------------------------------ と記述しております。 無理ってことでしょうか。

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

関連するQ&A

  • CSSでボーダーがとぎれてしまう・・

    すみません・・普段は自分で調べても分からないときだけこちらで質問するのですが、今回は作業に追われておりまして・・申し訳ない気持ちですが、質問させていただきます。 CSSで・・・ header、main、menu、footer の順番でdivで囲まれたコンテンツ?があります。 headerが上でその下の左にmenu、右にmainと並べて、その境目にボーダー線を指定したいのですが、どちらに指定しても逆側が長くなってしまうとボーダーが途中で途切れてしまいます。 これをこれを常にfooterの位置まで表示する方法はありませんでしょうか? よろしくお願いします。

    • ベストアンサー
    • CSS
  • CSSで先に大枠レイアウトを作成し、その後コンテンツを入れるとレイアウト崩れが起こる

    掲題のとおり、先にCSSでヘッダー、コンテンツ枠、その中に左部分、右部分、そしてフッターを作っておき、それをコピペしてコンテンツを入れていくと、フッターがコンテンツにめり込んできます。clearを使ってますし、コーディングには思い当たる節はありません。これを再度、上から順番に組みなおすと、今度はきちんと表示されます。また、フッターの部分のCSSの記述を最下部にもってきても、やはりめり込みます。どなたかこの理由が分かる方がいらっしゃいましたら、ご教授願います。

    • ベストアンサー
    • HTML
  • CSSレイアウトの2カラム左メニューでコンテンツを先にHTMLに記述できる方法をおしえてください。

    趣味でHPを作成しております。 一般的なCSSレイアウト2カラム左メニューにしたいのですが、 HTML部分で左メニューよりコンテンツを先に記述し、 CSSで左メニューで右にコンテンツがくるようにしたいです。 現在のCSSは * { margin:0; padding:0; } .wrapper { width: 750px; margin: 0 auto; } .header { width: 750px; height: 100%; } .main { width: 750px; } .menu { float: left; width: 200px; } .contents { float: left; width: 550px; } .footer { clear: both; width: 750px; height: 100%; } .menu ul { list-style: none; } このような記述です。 つづきましてHTML部分は <body> <div class="wrapper"> <div class="header"> ヘッダー部分 </div> <div class="main"> <div class="contents"> コンテンツ部分 </div> <div class="menu">  メニュー部分 </div> </div> <div class="footer"> フッター部分 </div> </div> </body> このような感じです。 しかしこれだとHTML部分はコンテンツが先にきておりますが、 メニューが右になってしまいます。 これをHTML部分を変えずにCSSでメニューを左に配置する方法はありますでしょうか? 1週間くらい試行錯誤したのですが、できませんでした。 お詳しい方教えてください。

    • ベストアンサー
    • HTML
  • css固定したフッターが本文と重なってしまいます

    #all { height:100%; min-height:100%; } #header { left:150px; position:absolute; } .main { top:60px; left:150px; position:absolute; } #footer { left:150px; bottom:0px; position:absolute; } ------------------------------------------------------------- <div id="all"> <div id="header"> ヘッダ部 </div> <div class="main"> メインの記事 </div> <div id="footer"> フッター </div> </div> ============================================================== このように指定したのですが、 ウィンドウを小さくしたり、長い文を書いたりすると、 メインの記事がフッターと重なって読めなくなってしまいます。 記事が短い時は、ページ全体の下部に、 長い時はスクロールした一番下にくるようにしたいです。 テーブルのheight指定を使えば同じような効果は得られますが、 テーブルの無いレイアウトをやってみたかったので。 同じような質問は発見したのですが、いい解答が見つかりませんでした。

    • ベストアンサー
    • HTML
  • CSSで微妙にずれる

    CSSで微妙にずれる こんにちは、最近HPを作成するようになった初心者です。 あるフリーサイトのCSSを雛形としてHPを作成したのですが、 (TOPとMENUとMAIN(コンテンツ)とFOOTERの4構成 MENUは左でMAINが右) ブラウザの枠の中にFOOTER部分が表示されると (上下に短いコンテンツ) 微妙に左(多分3PXぐらい)に、ずれて表示されてしまいます。 この様な、場合原因の部位を特定するには、どの様なアプローチを 行えばよろしいのでしょうか? 教えていただけるとありがたいです。 ちなみに、FOOTERのHTMLは <div id="footer"> <address>Copyright &copy; 2010 XXXXX All Rights Reserved.</address> </div> で、 CSSは div#footer { clear:both; margin:0 20px 0 20px; } です

  • FIREFOXでのCSS表示

    よろしくお願いします。 CSSのレイアウトで、よくある2カラムのオーソドックなもの 左側にメニュー、右側にメインコンテンツ、上下にヘッダ・フッタ <div id="wall"> <div id="header"></div> <div id="menu"></div> <div id="main"></div> <div id="footer"></div> </div> のような構造の場合、メインコンテンツは各ページによってボリュームが違うので、wall部分もmainのボリュームにあわせて変化させたいです。 IEならば問題ないのですが、FIREFOXだとmenuやmainの部分が増えると、wallの上から重なるように表示されてしまうケースがありました。はみ出ています。 このような場合、それぞれのheightの設定など、どのようにしたら良いのでしょうか? mainの長さにあわせて最後にwallを1250pxのように具体的な長さ指定すると、見た目にはfirefoxでもうまく表示はされています (ただし、このやり方だと各ページのコンテンツの長さにあわせて、1つ1つ設定しないといけない) floatの設定なども含めて、どういった記述をすれば良いのか、どなたか教えてもらえませんでしょうか。

  • CSSの読み込み開始までラグがあります

    header.php、main.php、footer.phpの3ファイルを作成して、 index.phpに include './header.php'; include './main.php'; include './footer.php';などとして読み込ませました。 cssファイルは、header.phpの<head>に <link rel="stylesheet" type="text/css" href="header.css"> <link rel="stylesheet" type="text/css" href="main.css"> <link rel="stylesheet" type="text/css" href="footer.css"> の形で記述されています。 javascriptがあり、これも同様に<head>に記述されています。 以上のファイルはすべて同じフォルダ内にあり、これをlocalhostで表示させました。 これをchromeで要素を検証してみたところ、 cssの読み込み開始までに2秒近いラグがあります。 このラグの考えられる原因は何があるでしょうか。 どなたか心当たりのある方、教えてください。よろしくお願いします。

    • ベストアンサー
    • CSS
  • CSSの三段組みレイアウトについて教えて下さい。。

    CSSレイアウト初心者ですが、CSSの作成段組みを作る時に <div id="container"> <div id="header"> </div><!--/header--> <div id="contents"> <div id="left_bar"> </div><!--/left_bar--> <div id="main"> </div><!--/main--> </div><!--/contents--> <div id="right_bar"> </div><!--/right_bar--> <div id="footer"> </div><!--/footer--> </div><!--/container--> と三段組固定レイアウトを作成したいのですが、 一度目は何回やり直してもfloatの設定でleft_bar,mainの横並びが上手くいかずに、 contentsの中でleft_bar,mainが縦並びになってしまい何回何が原因か様々なサイトで考えを模索してソースを直しても何故かleft_bar,main がcontentsの中で何回書き直しても縦並びになりもう一度一からCSSを組み直してみると、 どうした訳かようやくcontentsの中でleft_bar,mainが横並びになってくれました。 これは一体根本的に何が原因で横並びにさせるつもりが、縦にボックスが並んでしまうのでしょうか? CSSのfloatの概念からハックかなと思いハック親ボックスにハックをかけてみてでも全く関係ないみたいでしたし、親ボックスにピクセルを指定していないからかと思い親ボックスにピクセルで指定しても何故か縦並び?! CSSをもう一度書きなすことで意図したレイアウトになると言う事は一番は何が原因していると見られるのでしょうか?

    • 締切済み
    • CSS
  • CSS ブロックの配置について

    ヘッダの部分なんですが、左上にロゴ、その隣に少しスペースを空けて二つブロック要素を配置したいんですが、(テーブルで言うと2行3列と言った感じです)position: absoluteで指定すると絶対値で指定されてるので、ウィンドウ幅を変えたりしても、それに合わせてサイズが変わらないんですが、変わるようにはどう記述したらいいんでしょうか?position: absolute以外で記述すると思ったところに配置されません。どなたかアドバイスいただけませんか?宜しくお願い致します。

  • CSSのfloatとdivについて質問です。

    CSSのfloatとdivについて質問です。 下記のようにmainの中にlocal-navigationを配置したいのですがやり方が分からないのでご教授お願いします。 現在はlocal-navigationがfooterの上に表示されて自分の意図することが出来ていません。 sidebar-leftとsideba-rightはfooter部分まで伸びていて欲しいのです。 やりたいこと: ____________________________ |header-menu                      | |___________________________| |sidebar-left|     main     |sidebar-right | |      |            |       | |      |            |       | |      |            |       | |      |            |       | |      |            |       | |      |            |       | |      |            |       | |      |            |       | |      |____________|       | |       |local-navigation    |       | |______|____________|_______| |footer                         | |___________________________| 現在の状況: ____________________________ |header-menu                      | |___________________________| |sidebar-left|     main     |sidebar-right | |      |            |       | |      |            |       | |      |            |       | |      |            |       | |      |            |       | |      |            |       | |      |            |       | |      |            |       | |      |            |       | |       |            |       | |______|____________|_______| |local-navigation                    | |___________________________| |footer                         | |___________________________| 過去の質問: 「CSSでメイン部分が80%ぐらいに表示するには? http://okwave.jp/qa/q7728293.html 」 「CSSのbackground-imageについて http://okwave.jp/qa/q7728304.html 」

    • ベストアンサー
    • CSS