2014-09-04 172 views
1

你好真棒程序員,縮小窗口大小移動元素

我一直在CSS一段時間以來一直在掙扎。調整窗口大小時出現問題,我的一些div開始摺疊頁面。 (如圖所示)

之前:

before http://411metrics.com/pics/before.PNG

後:

before http://411metrics.com/pics/after.PNG

我曾嘗試在各種div的最小寬度設置爲100%,並且也嘗試設置溢流隱藏。

沒有人有任何建議如何解決這一問題?

我的HTML:

<div id="navigation"> 
    <div id="branding-logo"><img src="/Portal/images/sharktek-logo.png" width="35" height="35"></div> 
    <div id="branding">Sharktek Tracking</div> 
    <div id="link-wrap"> 
     <div id="active-nav"><a href="/Portal/dashboard">Dashboard</a></div> 
     <a href="/Portal/statistic">Reports</a> 
     <a href="/Portal/record">Call Logs</a> 
     <a href="/Portal/manage">Manage Campaigns</a>';   
    </div> 
    <div id="nav-user"> 
     Welcome<br> 
     <a href="/Portal/account">Account Settings</a> 
     <a href="/Portal/auth/logout">Logout</a> 
    </div> 
</div> 
<div id="nav-accent"></div> 

我的CSS:

#navigation { 
    z-index:3; 
    position: fixed; 
    top: 0; 
    width: 100%; 
    min-width:100%; 
    color: #ffffff; 
    height: 60px; 
    text-align: center; 
    /* Adds the transparent background */ 
    background-color: rgba(22, 29, 37,1); 
    color: rgba(1, 172, 237, 1); 
} 


#navigation a { 
    float:left; 
    font-size: 14px; 
    padding: 25px 25px 0 25px; 
    color: white; 
    text-decoration: none; 
} 

#link-wrap { 
    float: left; 
    overflow: hidden; 
    margin-left: 15%; 
} 

#active-nav{ 
    z-index: 2; 
    float:left; 
    color:white; 
    height: 60px; 
    background: -webkit-linear-gradient(#346c83, rgba(1, 172, 237, 1)); /* For Safari 5.1 to 6.0 */ 
    background: -o-linear-gradient(#346c83, rgba(1, 172, 237, 1)); /* For Opera 11.1 to 12.0 */ 
    background: -moz-linear-gradient(#346c83, rgba(1, 172, 237, 1)); /* For Firefox 3.6 to 15 */ 
    background: linear-gradient(#346c83, rgba(1, 172, 237, 1)); /* Standard syntax */ 
} 

#active-nav a:hover { 
    color:white; 
} 

#navigation a:hover { 
    color: grey; 
} 

#branding-logo { 
    margin-top: 15px; 
    margin-left: 10px; 
    float: left; 
} 

#branding{ 
    margin-top: 20px; 
    margin-left: 10px; 
    font-size:1.4em; 
    color: white; 
    float: left; 
    padding: 0px; 
} 


#nav-accent { 
    z-index:2; 
    position: fixed; 
    top: 60px; 
    width: 100%; 
    color: #ffffff; 
    height: 2px; 
    padding-top: 1px; 
    /* Adds shadow to the bottom of the bar */ 
    -webkit-box-shadow: 0px 0px 8px 0px #000000; 
    -moz-box-shadow: 0px 0px 8px 0px #000000; 
    box-shadow: 0px 0px 8px 0px #000000; 
    /* Adds the transparent background */ 
    background-color: rgba(1, 172, 237, 0.95); 
    color: rgba(1, 172, 237, 1); 
} 
#nav-user { 
    color: white; 
    font-family:Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif; 
    padding: 15px 30px 0 0; 
    font-size: .8em; 
    float:right; 
} 

#nav-user a{ 
    margin: 0; 
    padding: 0 0 0 10px; 
    font-size:.8em; 
} 
+0

你需要在這裏放棄一些東西。如果你需要響應能力,那麼你需要爲響應行爲編碼,定義在特定尺寸下會發生什麼。很明顯,無論如何,在某些時候,元素不適合。在這種情況下......你想要發生什麼?基於此,你可能有不同的答案。現在,你可以有立場元素:絕對的,它會工作....直到你看到那個元素重疊的一切關於調整 – Devin 2014-09-04 20:57:14

+0

好了,我沒經過你的代碼只是一目瞭然你的問題,我會建議你切換到引導網格系統來設計你的佈局。我相信一旦你習慣了它,你永遠不會回頭。 http://getbootstrap.com/css/#grid – 2014-09-04 21:40:22

回答

0

,直到我開始理解和應用絕對定位我有過類似的問題。即在你的DIV相對定位。

絕對定位父DIV必須設置爲相對定位之後,你解決你的內在元素,你喜歡的任何一側,而無需瀏覽器接管流量控制。

例如在你的情況下,與...

#link-wrap { 
    position: absolute; 
    width: 500px; 
    /* ... the rest */ 
} 

...你的導航鏈接將停止跳過整個頁面。我在這個小提琴http://jsfiddle.net/xb9cdu34/2/做了一些調整。

+0

這是一種可怕的建議,既爲特定情況下,以及在一般。絕對定位不應該被愛或恨,它必須在需要時使用,並在不需要時不惜一切代價避免。當然,這是在絕對位置不需要,除非你添加的代碼比較多了很多,包括媒體的一個最重要的例子查詢 – Devin 2014-09-04 20:59:49

+0

我的意思是,解決方案僅工作,如果你比這增添了不少代碼,包括所有元素行爲與所有媒體查詢的所有大小。所以是的,這是更多的代碼。只要做一個實驗:打開你的小提琴並調整它。我不是說很多,只是把它調整到大約900像素的寬度,看看你的位置會發生什麼:絕對元素,那麼你就會理解我的意思(只是在你沒有注意到的情況下,你的元素將會覆蓋所有的東西其他) – Devin 2014-09-04 21:50:00

+0

@Fabio,好吧,我明白你現在從哪裏來。在我看來,第一步是使網頁在網頁瀏覽器中工作。現在,一旦頁面大小調整,事情就會發生嚴重錯誤。使用我提供的絕對定位解決方案,對於我來說就像一個普通的網頁。我的解決方案對於所有情況都不夠健壯,但我仍然認爲它對大多數人都有效。我仍然很想知道最佳解決方案的樣子。感謝您的反饋! – chriskelly 2014-09-04 22:02:37