2013-12-09 17 views
5

私は固定位置付けの2つのサイドバナー(左右)とコンテンツの中心のコンテナを作成しようとしています。HTML/CSS divの重複を引き起こす固定配置

enter image description here

問題は、画面を最小化するとき、2つの側バナーは中心容器を覆うことです。ビューの最小幅を860pxに設定するには、CSSソリューションが必要です。その後、ウィンドウはスクロール可能になり、divは重複しません。完璧なソリューションです:

enter image description here

のような私が使用しているHTMLがある:上記のコードは中央のコンテナに重なっから左のバーを防ぎ

<div class="left" style="position:fixed; height:100%; background-color:#7fb4dd; top:43px; left:0px; width:180px;"> 
</div> 

<div class="center" style="margin:100px 180px 0 180px;"> 
     <div style="width:100%;"> 
         <div style="width:500px; margin:0 auto;"> 
         </div> 
      </div> 
</div> 

<div class="right" style="position:fixed; height:100%; background-color:#7fb4dd; top:43px; right:0px; width:180px;"> 
</div> 

。問題はまだ右のバーに表示されています。

これは、コードのフィドルです:preview

+0

フィドルを作成してください。 – andi

+0

私は質問された質問の一番下にフィドルを追加しました。 –

+0

あなたが作ったあなたのフィドルを見た後、あなたのCSSを自分のファイルにすることを強くお勧めします。インラインスタイルは、特にレスポンシブウェブサイトを使用する方法ではありません。 –

答えて

3

あなたはラッピングDIVで3つのdivをラップし、重複を防ぐためにmin-widthを設定する必要があります。これにより、3つの列よりも幅が狭くなりません。幅を追加し、最小値として設定します。

+0

@ BruteForceまた、javascriptの 'if'ステートメントを使って、それらのページに応じてこれを追加することができます。 (すべてこのスタイルが必要ない場合) –

+0

@Diodeus私はこの提案を試みましたが、問題を解決しませんでした。右側のdivはまだ中央のラッパーをカバーしています。 スクロールバーが表示されていますが、右のバーの問題を防ぐものではありません。 –

+0

@JoshはどうすればJavaScriptを使うことができるか明確にすることができます –

1

position: fixed;の問題は、そのオブジェクトがワークフローから取り出され、他のオブジェクトがそれを押し出すことができないためです。私は働くために素敵で完全に反応するレイアウトを得ることができました。 (それがどうか分かります)

固定配置要素は通常のフローから削除されます。 ドキュメントおよびその他の要素は、固定された配置された要素のように動作します が存在しません。

固定配置要素は、他の要素と重なり合う可能性があります。より良いスーツに

更新答え、自分のニーズJSFIDDLE, remove the show, in the url, to see code)私は、レイアウトを変更するには、CSS media queriesを使用している、ここでやっているものを

わかりました。ここで

は、htmlです今

<div class="wrap"> 
    <nav></nav> 
    <div class="content"></div> 
    <section class="lSide"></section> 
    <section class="rSide"></section> 
</div> 

メディアクエリ、

@media only screen and (max-width: 680px) { 
    .content { 
    width: 90%; 
     margin-bottom: 10px; 
    } 
    .lSide, .rSide { 
     position: relative; 
     width: 90%; 
     height: 100px; 
     margin: 10px auto; 
     bottom: 0; 
    } 
} 

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0;"> 

、あなたのhtmlファイルにあなたのheadにこれを追加することを忘れないでください。 旧回答

CSS、(JSFIDDLE, remove the show to see code

html, body { 
    width: 100%; 
    height: 100%; 
    padding: 0; 
    margin: 0; 
    background: tan; 
} 

.wrap.active { 
    min-width: 750px; 
} 

nav { 
    position: fixed; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 20%; 
    background: brown; 
    z-index: 101; 
} 

.lSide { 
    background: #3b3b3b; 
    position: fixed; 
    left: 0; 
    top: 20%; 
    width: 200px; 
    height: 80%; 
} 

.content { 
    width: 300px; 
    height: 600px; 
    background: #c1c1c1; 
    margin: 0 auto; 
    position: relative; 
    z-index: 100; 
    top: 20%; 
} 

.rSide { 
    background: #3b3b3b; 
    position: fixed; 
    right: 0; 
    top: 20%; 
    width: 200px; 
    height: 80%; 
} 

.rSide.active { 
    display: none; 
} 

JS、(更新)

$(window).resize(function() { 
    if ($(window).width() < '750') { 
     $('.wrap, .rSide').addClass('active'); 
    } 
    else { 
     $('.wrap, .rSide').removeClass('active'); 
    } 
}); 

一つの解決策は、私は、CSSに次のフィドルを参照している、右側を削除するとき画面サイズが小さくなります。

+0

あなたがしたことは素晴らしいです。 あなたが言ったように、右側のバナーはコントロールするのが難しいです。あなたが問題を解決するか、何か提案をすることができたら本当に感謝します。 –

+0

更新された回答を見てください。これはあなたができる1つの選択肢です。 –

+0

良い提案。 重複している問題を示していたモバイルデバイスでテストしていました。 –

1

あなたのための純粋なHTML/CSSソリューションはここにあります。あなたの必要とするものが正確ではない場合は教えてください。

<html> 
<head> 
<style type="text/css"> 

body{ 
margin:0; 
padding:0; 
line-height: 1.5em; 
} 

b{font-size: 110%;} 
em{color: red;} 

#topsection{ 
background: #EAEAEA; 
height: 90px; /*Height of top section*/ 
} 

#topsection h1{ 
margin: 0; 
padding-top: 15px; 
} 

#contentwrapper{ 
float: left; 
width: 100%; 
} 

#contentcolumn{ 
margin: 0 200px 0 230px; /*Margins for content column. Should be "0 RightColumnWidth 0 LeftColumnWidth*/ 

background-color : red; 
width : 400px; 
margin-left : auto; 
margin-right : auto; 
} 

#leftcolumn{ 
float: left; 
width: 200px; /*Width of left column*/ 
margin-left: -100%; 
background: #C8FC98; 
} 

#rightcolumn{ 
float: left; 
width: 200px; /*Width of right column*/ 
margin-left: -200px; /*Set left marginto -(RightColumnWidth)*/ 
background: #FDE95E; 
} 

#footer{ 
clear: left; 
width: 100%; 
background: black; 
color: #FFF; 
text-align: center; 
padding: 4px 0; 
} 

.innertube{ 

margin: 10px; /*Margins for inner DIV inside each column (to provide padding)*/ 
margin-top: 0; 


height : 700px; 
} 


.innertubetop{ 
margin: 10px; /*Margins for inner DIV inside each column (to provide padding)*/ 
margin-top: 0; 
} 

</style> 


</head> 
<body> 
<div id="maincontainer" style = "min-width : 800px;"> <!-- this will be sum of width of all three columns--> 

<div id="topsection"><div class="innertubetop"><h1>Hello iam navigation bar</h1></div></div> 

<div id="contentwrapper"> 
<div id="contentcolumn"> 
<div class="innertube"><b>Center Column </b></div> 
</div> 
</div> 

<div id="leftcolumn"> 
<div class="innertube"><b>Left Column: <em>200px</em></b></div> 

</div> 

<div id="rightcolumn"> 
<div class="innertube"><b>Right Column: <em>200px</em></b></div> 
</div> 


</div> 
</body> 
</html> 
関連する問題