2014-10-09 34 views
1

我有一個功能齊全的網頁,包含三個部分。橫幅容器,菜單容器和內容容器我應該如何正確使用位置和其他屬性來定位我的網頁?

這是佈局:

The layout of my webpage http://oi60.tinypic.com/2qjhc40.jpg

的問題是,這些使用position: fixed;定位在一起以marginleft,和top性質。這意味着當Web瀏覽器小於網頁的大小時,我無法滾動它。是的。我知道解決方案是刪除「位置:固定」(已在其他線程關於此主題在這裏在stackoverflow指出)。但問題是,我沒有能夠扣留佈局,同時消除固定的位置,甚至沒有關閉。

與此我最接近的是,只是將內容容器的位置屬性更改爲relative。這不會影響佈局,而Web瀏覽器窗口的大小大於整個頁面的寬度,並且當它是Web瀏覽器窗口小於內容容器時,我確實可以在其上滾動。但是,當然,當我縮小瀏覽器窗口的大小時,我的內容容器會跟着它,並遮住我的菜單容器(因爲它仍然具有固定的位置)。不管怎樣,我的菜單按鈕(即鏈接放置在列表中)即使沒有被內容容器遮蓋,也不會在點擊它們並懸停在它們上面時發生反應。

所以,對於如何使用定位和其他屬性來定位您的網頁,有一個很好的經驗法則,因爲很明顯,我已經以某種方式得到了所有錯誤。

這是我的三個集裝箱的相關CSS屬性:提前

div#banner_container{ 
    position: fixed; 
    width: 650px; 
    height: 75px; 
    margin-left: 50px; 
    margin-top: 8px; 
} 

div#menu_container { 
    top: 95px; 
    position: fixed; 
    width: 150px; 
    height: 150px; 
    margin-left: 50px; 
    margin-top: 10px; 
} 

ul#menu { 
    position: fixed; 
    left: 18px; 
    top: 89px; 
} 

div#content_container { 
    position: fixed; 
    top: 95px; 
    width: 100%; 
    max-width: 492px; 
    height: 500px; 
    margin-left: 210px; 
    margin-top: 10px; 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
} 

謝謝!

+0

我知道這不是一個適當的答案,但它可能會有所幫助。搜索「響應式設計」,並從最簡單的例子開始。您現在正在設計桌面,但我保證您希望您的網頁能夠在平板電腦和手機上運行。也可以從一開始就把它做好。 – 2014-10-09 09:51:12

+0

請參閱:http://stackoverflow.com/questions/22296568/converting-absolute-layout-to-use-floats/ – 2014-10-09 10:51:34

回答

1

這對你有好處嗎?

http://jsfiddle.net/0cmwhafq/2/

我只設置了所有位置相對的,使用浮動:左,爲你的菜單和內容容器

div#banner_container{ 
    position: relative; 
    width: 99%; 
    height: 75px; 
    margin:1%; 
    background-color:red; 
} 

div#menu_container { 
    position: relative; 
    width: 18%; 
    margin:1%; 
    height: 350px; 
    background-color:green; 
    float:left; 


} 


div#content_container { 
    position: relative; 
    width: 79%; 
    height: 500px; 
    margin-left:1%; 
    margin-top:1%; 
    float:left; 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
    background-color:blue; 

} 

如果你希望你的佈局爲中心,只需添加含包裝他們全部

+0

這樣的例子證明正是我所需要的!通過使用您的示例作爲模板,我能夠在保持原始設計的同時移除所有固定位置。 然後創建一個指定整個網頁寬度的包裝'div'(爲了防止內容容器在菜單下面浮動,因爲我想在我的內容容器和菜單上設置一個固定寬度),並且頁邊距(margin:0汽車;')。使我的佈局在Web瀏覽器中居中。 謝謝! – 2014-10-09 11:28:07

+0

不客氣! – Dikeneko 2014-10-09 13:14:15

1

這裏的根本問題是您使用position: fixed來設置整個佈局的樣式。這是非常糟糕的做法,可以完全避免。

如果你真的不想取消固定定位,則可以改爲給你內容容器overflow屬性設置爲scroll

div#content_container { 
    ... 
    overflow: scroll; 
} 

注意,overflow酒店還支持overflow-xoverflow-y這讓你分別迎合水平或垂直滾動​​條 - 在你的情況下這可能會更好。

+0

此建議似乎啓用了滾動我的內容容器內的內容。但是,我希望能夠在實際的瀏覽器窗口上滾動(不確定是否我正在解釋這個權利,對不起我的英語)。像「body {overflow:scroll}」這樣的東西也沒有做到這一點。 如果你可以詳細說明爲什麼使用固定定位是非常糟糕的做法和我應該做的事情,或者提供一個鏈接到解釋這個頁面的鏈接(因爲我沒有找到),我會非常感謝! – 2014-10-09 09:50:13

+0

@JonatanStenbacka如果您的整個佈局具有固定位置,則無法在瀏覽器窗口上啓用滾動。 – 2014-10-09 09:56:14

+0

就像我在我的問題中所說的:我知道問題在於我的網頁上元素的「位置」設置爲「固定」。但問題是,我嘗試了所有其他類型的定位,而無法恢復不同容器之間的正確距離,並且使所有工作都按照預期進行。我不是在尋找一種廉價的技巧來啓用瀏覽器窗口的滾動功能,而是關於如何使用'position'和其他屬性來定位我的網頁的指南(可能有點模糊,抱歉)。 – 2014-10-09 10:15:32

相關問題