2012-03-26 20 views
3

私はデザインの本体が940ピクセルの固定ピクセル幅を持つように設計されていますが、上下の境界線がこの境界を超えて拡張されるように設計しています。幅の制限された要素内でページの幅にまたがるHTML要素を表示するにはどうすればよいですか?

これは、所望の効果を示す最も単純な画像である:トップナビゲーション配置絶対であるが、どのようなマークアップだろう可能性が

<!-- This is the Big Black width restricted box --> 
<div class="enclosingBox"> 
    <div class="topnav"> 
     Exclusives 
     Shop 
     The Brand 
     Press 
     Vault 
    </div> 

    <div> 
     <p>This is some stuff in the middle</p> 
     <p>Some Other Stuff in the middle</p> 
    </div> 

    <div class="bottomnav"> 
     SHOE PIC 1 
     SHOE PIC 2 
     SHOE PIC 3 
     SHOE PIC 4 
    </div> 
</div> 

:このようないくつかのHTMLを仮定

Example of desired effect

bottomnavのために働く必要がありますか?

+0

スクロール中にナビゲーション要素をページに留めておきますか? –

答えて

2

あなたはそれについて間違った方法を考えています。あなたが正しく理解していれば、あなたが思っているレイアウトを得るための最良の方法は、不自然なオーバーレイを強制するのではなく、水平の「セグメント」としてページを作成することです。

<div style="width:800px;margin-left:auto;margin-right:auto;"> 
... all the top stuff, 100% wide and smaller 
</div> 

<div style="width:100%;"> 
<div style="width:800px;margin-left:auto;margin-right:auto;"> 
... your nav stuff 
</div> 
</div> 

<div style="width:800px;margin-left:auto;margin-right:auto;"> 
... you're body ... 
</div> 

<div style="width:100%;"> 
<div style="width:800px;margin-left:auto;margin-right:auto;"> 
... bottom nav stuff 
</div> 
</div> 

<div style="width:800px;margin-left:auto;margin-right:auto;"> 
... all your feets are belong to div 
</div> 
+0

これは潜在的な解決策ですが、太い黒い枠線を持つメインの「ページ」は実際には意味的に2つのナビゲーション要素を含んでいるので意味的には奇妙に思えます。 – danieltalsky

+0

あなたはこれを逆にすることができます。しかし、コンテンツが追加されたときに、外部divをメインdivと整列させようとするのは面倒です。しかし、内側のdivの左右の境界線を単に強調表示すると、すべての要素を横切っているように見える素敵で連続的な境界線が視覚的に表示されます。それは非常に一貫性のある単一の長方形のボックスとして表示されます。私はこのテクニックを何度か使ってきましたが、いつもうまくいきます。また、動的コンテンツを使用する場合は、要素間で自然な境界ができます。 :) –

+0

これは最高の存在です私はこれがおそらく絶対に位置づけられた解決策より優れていると思う。私はマージンのトリック、または仕事をすることができる相対的な位置付けのトリックがあるかもしれないと思ったが、それは明らかではないようだ。 – danieltalsky

0

このようにします。

<div id="navigation"> 
    this is the navigation with 100% width. 
</div> 
<div id="width940"> 
    this is the container with 940px width 
</div> 

<!-- the css --> 
#navigation { 
    width:100%; 
    position:absolute; 
    top:50px; 
    height:32px; 
} 
#width940 { 
    width:940px; 
    margin:0 auto; 
} 
+0

これは上のナビゲーションでは上のナビゲーションの高さを知っていますが、下のナビゲーションではわかりません。質問を慎重に読んだら、主に私が求めていることがわかります。 – danieltalsky

+0

元の質問で、私は最後にこう言います。「トップナビゲーションは絶対的な位置づけになるかもしれませんが、bottomnavのマークアップはどのように動作する必要がありますか?」 – danieltalsky

2

このようなものはかなり近いようです。

http://jsfiddle.net/Fq32a/2/

html, body { width: 100%; position: relative; } 

.topnav { 
    position: absolute; 
    top: 100px; 
    height: 75px; 
    left: 0px; 
    right: 0px; 
    border: 1px dotted gray; 
    text-align: center; 
} 

.bottomnav { 
    position: absolute; 
    bottom: 20px; 
    height: 50px; 
    left: 0px; 
    right: 0px; 
    border: 1px dotted gray; 
    text-align: center; 
} 
+0

@danieltalsky - 他の回答にあなたのコメントを読んでください。おそらく、このフィドルは、少なくともいくらか始まってしまいます。それ以上に自分自身で考えるだろう。 – mrtsherman

+0

Hmmm ...私は要素を底から絶対的に配置する可能性は考慮しませんでした。可能性はありますが、私は絶対的なポジショニングよりもやや脆弱な解決策を求めています。 – danieltalsky

+0

@danieltalsky - k、ちょうど私の答えを更新しました。トリックは身体の「位置:相対」だった。私は絶対に上に泡立つことがボディやHTMLに当てはまると思ったが、それはページの真の高さではないことを文書化すると思う。 – mrtsherman

0

オーバーフロープロパティを調べることができます。 w3でドキュメントを見つけることができます。ただし、絶対的な測位を使用して投稿された回答は良好です。古いブラウザを扱う際にはかなり奇妙なものになりますので、試行錯誤的に問題に近づく必要があります。私はCSSの専門家ではありませんが、私はいくつかのことを知っています。理論的な絶対的な位置づけはうまくいくはずですが、私が言及した方法と絶対的な位置決め方法の両方に問題がありました。