2015-07-11 30 views
0

我一直在嘗試創建三列CSS佈局的不同方式。在Youtube上,我發現了一個video,這是在沒有包裝的情況下實現的。我一直在試圖將「left」div列浮動到左側,然後將「content」div列(這是html代碼中的第二個)放在右側。根據視頻的結果是,沒有浮動的列 - 在這種情況下,「右」div列將自動在另外兩個列之間出現,只需要一個保證金0自動定位它。將中心DIV列置於左右浮動列之間的位置?

你可以到4:20以後看視頻。

但是,這不會發生在我身上。出於某種原因,我的「右」div列有一個趨向包裝並最終在頁面的其他地方 - 通常在身體區域之外,並進入HTML背景顏色。我知道這可以通過將「正確的」DIV列浮動到左邊來解決,但我想知道爲什麼我無法實現此目的,因爲在視頻中沒有我的「正確」div會在頁面中途結束並在身體區域之外。

的代碼是在這裏

<!DOCTYPE HTML> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title> 
Three Column! 
</title> 
<link type="text/css" rel="stylesheet" 
href="style.css" media="screen"> 
</head> 
<body> 



<div id="header"> 
<h1>Lorem Ipsum</h1> 
</div> 

<div id="left"> 
<p> 
<ul> 
<li>Here</li> 
<li>There</li> 
<li>Everywhere</li> 
</ul> 
</p> 
</div> 

<div id="content"> 
<p class="paragraphs">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut 
labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet 
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur 
sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum 
dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
et dolore magna aliquyam erat, sed diam voluptua. </p> 
</div> 

<div id="right"> 
<h2>Ad Content</h2> 
<p class="Paragraphs">At vero eos et accusam et justo duo dolores et ea rebum. 
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p> 
</div> 

<div id="footer"><p>Footer</p></div> 

</body> 
</html> 

,然後CSS

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

html { background : silver } 

body 
{ 
     background : black ; 
     color : white ; 
     height : 780px ; 
     width : 1620px ; 
     margin : 0 auto 2em ; 
     font : 16px "Arial", sans-serif ; 

} 

#header 
{ 
     text-align : center ; 
     background : purple ; 
     padding : 3px 0px ; 
     margin : 100px 0 10px 
} 

#left 
{ 
     float : left ; 
     margin-right : 45px ; 
     width : 180px ; 
     height : 660px ; 
     background-color : olive ; 
     padding : 5px 
} 

#content 
{ 
    float : right ; 
    background-color : gray ; 
    height : 660px ; 
    width : 1140px ; 
    padding : 5px 
} 

#right 
{ 
     width : 180px ; 
     background-color : blue ; 
     height : 660px ; 
     padding : 5px 
} 

#footer 
{ 
     background-color : black ; 
     clear : both 
} 

#footer p { text-align : center } 
+1

請提取的問題,必要的代碼只有部分,並把它們放在一個代碼段。 – light

+0

我明白你的觀點。我不知道代碼中究竟出現了哪些錯誤,但將來會嘗試減少代碼。 –

回答

0

使用「格」,並將它們排列到不同的列花車一般不響應好網頁設計是一個好主意。

您應該考慮使用一個負責任的電網系統(或使用流行的Twitter的引導框架),你可以閱讀更多的http://getbootstrap.com/css/#grid

它基本上包括便於佈局選項預定義類,並在你的情況,你可以設置爲您3節浮塔段以下代碼像這樣的東西:

<!-- Column 1 -->  
    <div class="col-md-4"> 
    <p> Some content here </p> 
    </div> 

<!-- Column 2 -->  
    <div class="col-md-4"> 
    <p> Some content here </p> 
    </div> 

<!-- Column 3 -->  
    <div class="col-md-4"> 
    <p> your content here </p> 
    </div> 

然後,您可以添加額外的利潤和/或墊襯CSS代碼,以進一步自定義您的列內容定位。

希望這會有所幫助!

+0

謝謝丹尼爾。我已經看過Youtube上的Bootstrap教程。它看起來很有趣,但我覺得我需要首先掌握基本知識,然後繼續努力。 –

0

作爲一個webdesigner我不喜歡我的元素漂浮沒有控制,它更好只是浮動他們全部在和設置每個div的寬度。請看下面的例子:

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

 
html { background : silver } 
 

 
body 
 
{ 
 
     background : black ; 
 
     color : white ; 
 
     height : 780px ; 
 
     width : 1620px ; 
 
     margin : 0 auto 2em ; 
 
     font : 16px "Arial", sans-serif ; 
 

 
} 
 

 
#header 
 
{ 
 
     text-align : center ; 
 
     background : purple ; 
 
     padding : 3px 0px ; 
 
     margin : 100px 0 10px 
 
} 
 

 
#left 
 
{ 
 
     margin-right : 20px ; 
 
     width : 180px ; 
 
     height : 660px ; 
 
     background-color : olive ; 
 
     padding : 5px 
 
} 
 

 
#content 
 
{ 
 
    background-color : gray ; 
 
    height : 660px ; 
 
    width : 1140px ; 
 
    padding : 5px 
 
} 
 

 
#right 
 
{ 
 
     width : 180px ; 
 
     background-color : blue ; 
 
     height : 660px ; 
 
     padding : 5px 
 
} 
 

 
#left, #content, #right { 
 
    float: left; 
 
} 
 

 
#footer 
 
{ 
 
     background-color : black ; 
 
     clear : both 
 
} 
 

 
#footer p { text-align : center }
<title> 
 
Three Column! 
 
</title> 
 
<body> 
 

 

 

 
<div id="header"> 
 
<h1>Lorem Ipsum</h1> 
 
</div> 
 

 
<div id="left"> 
 
<p> 
 
<ul> 
 
<li>Here</li> 
 
<li>There</li> 
 
<li>Everywhere</li> 
 
</ul> 
 
</p> 
 
</div> 
 

 
<div id="content"> 
 
<p class="paragraphs">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut 
 
labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet 
 
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur 
 
sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
 
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum 
 
dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
 
et dolore magna aliquyam erat, sed diam voluptua. </p> 
 
</div> 
 

 
<div id="right"> 
 
<h2>Ad Content</h2> 
 
<p class="Paragraphs">At vero eos et accusam et justo duo dolores et ea rebum. 
 
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p> 
 
</div> 
 

 
<div id="footer"><p>Footer</p></div> 
 
    
 
</body>

一個的jsfiddle版本在這裏http://jsfiddle.net/jx0qL9b6/2/

1

在您的例子,如果你從#right DIV刪除寬度,這似乎解決您的問題。在這種情況下,#right div會佔用2個div之間的可用空間。然而,如果你想堅持你指定的寬度,給#right div一個顯示:inline-block;

這裏是fiddle

#right 
{ 
    width : 180px ; 
    background-color : blue ; 
    height : 660px ; 
    padding : 5px ; 
    display:inline-block; 
} 
+0

我可以讓這些工作。麻煩的是,如果我按照視頻邊距中的示例進行操作:即使使用display:inline-block標記,auto也不適用於我,儘管margin-left可以工作。我不確定這是爲什麼。當然,你的例子可以完成這項工作,但我爲什麼會感到困惑:0汽車不管我嘗試什麼都行不通。 –