2015-05-27 148 views
2

我需要固定的右側列,左側列佔據剩餘空間。然後在移動兩列將是全寬,並且右列應浮動左側UNDER需要在小屏幕上向右流動UNDER左側(固定寬度右側,左側可變寬度)

我跟着就如何使右側立柱固定這個堆棧問題,左列可變寬度:make a div fill up the remaining width

這涉及到我的移動右列格在HTML左欄DIV以上。所以現在在較小的瀏覽器中,當我將兩列的寬度都做成100%時,右側浮動左邊的以上,但是我想右邊的列浮動下的左邊。

關於如何改變的想法?

<div id="main"> 
    <div id="primary"> 
    left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>left div<br/> 
    </div> 
    <div id="container"> 
    middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div <br />bit taller 
    </div> 
</div> 

#main { 
    width: 100%; 
} 
#primary { 
    width: 100px; 
    float: right; 
    background-color: #fcc; 
} 
#container { 
    background-color: #cfc; 
    overflow: auto; 
} 

@media screen and (max-width: 500px) { 
    #primary, #container{ 
     width: 100%; 
    } 
    #primary{ 
     float:none; 
    } 
} 
} 

https://jsfiddle.net/8pk4K/2157/

+0

兩列的高度是否一樣?如果右欄較短,您是否希望左欄填寫右欄下方的空格? – gilly3

+0

@ gilly3他們是不一樣的高度。不,我可能不希望剩下的內容在右邊流動。如果右側比左側短,請將其留作白色空間。 –

+0

我已經添加了一個解決方案,主要包裝容器div –

回答

1

1;首先將容器放入HTML標記中,然後放入固定寬度的div。

2;設置要顯示的元素:table-cell;在寬屏幕上顯示:block;在狹窄的屏幕

#main { 
    width: 100%; 
} 
#primary { 
    width: 100px; 
    display:table-cell; 
    background-color: #fcc; 
} 
#container { 
    display:table-cell; 
    background-color: #cfc; 
    overflow: auto; 
} 

@media screen and (max-width: 500px) { 
    #primary, #container{ 
     width: 100%; 
    } 
    #container{ 
     display:block; 
    } 
    #primary{ 
     display:block; 
     width:100%; 
    } 
} 

https://jsfiddle.net/Nillervision/hpsnqs60/

+0

TABLE-CELL !!!!你是一個天才。我不知道爲什麼我沒有想到這一點。謝謝,它像一個魅力! –

+0

不客氣。但是,我也可以建議你使用類名作爲CSS選擇器。現在幾乎完全使用類名是一種慣例,這樣你可以重複使用多種元素的樣式。 – Nillervision

+0

它使用'ids'的唯一原因是因爲它是一個wordpress模板。如果我有時間可以通過並將我的基本模板更改爲類(並添加該表格技巧) –

0

你貼什麼彩車「初級」向右&給它一個固定的寬度,即使你把它稱爲「左格左格左格。」這與你上面解釋的相反。在小屏幕上,它應該首先放置「主要」,然後按照它們在HTML中出現的順序放置「容器」,這正是發生的情況。

給出一個寬度(百分比作品)和相應的浮動。最簡單的解決方法是交換HTML命令......

https://jsfiddle.net/8pk4K/2159/

#main { 
    width: 100%; 
} 
#primary { 
    width: 10%; 
    float: right; 
    background-color: #fcc; 
} 
#container { 
    background-color: #cfc; 
    width: 90%; 
    overflow: auto; 
    float:left; 
} 

@media screen and (max-width: 500px) { 
    #primary, #container{ 
     width: 100%; 
    } 
    #primary{ 
     float:none; 
    } 
} 
} 

<div id="main"> 

     <div id="container"> 
     middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div <br />bit taller 
     </div> 
     <div id="primary"> 
     left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>left div<br/> 
     </div> 
    </div> 
+0

這不適合我,因爲我需要固定右側。又不是一個百分比。我需要它400px,然後左邊填充空間。 –

1

也許試試這個:

HTML

<div id="main"> 
    <div id="container"> 
    middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div <br />bit taller 
    </div 
    ><div id="primary"> 
    left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>left div<br/> 
    </div> 
</div> 

注意, 「容器」 DIV的原因關閉標籤被擴展出來是因爲容器和主div之間不能有任何空格,否則會有額外的空間它們之間。

CSS

#main { 
    width: 100%; 
} 
#primary { 
    width: 100px; 
    right: 0px; 
    background-color: #fcc; 
    display: inline-block; 
} 
#container { 
    vertical-align: top; 
    display: inline-block; 
    background-color: #cfc; 
    overflow: auto; 
    top: 0px; 
    left: 0px; 
    width: calc(100% - 100px); 
} 

@media screen and (max-width: 500px) { 
    #primary, #container{ 
     width: 100%; 
    } 
} 
} 
0

你肯定希望把右列第二位的HTML。之後,有許多方法可以完成CSS所需的工作。

一種方式來做到這一點是使用絕對定位在右列中,父元素加入padding-right

#main { 
 
    position: relative; 
 
    padding-right: 100px; 
 
} 
 
#primary { 
 
    width: 100px; 
 
    position: absolute; 
 
    top: 0; 
 
    right: 0; 
 
    background-color: #fcc; 
 
} 
 
#container { 
 
    background-color: #cfc; 
 
} 
 

 
@media screen and (max-width: 500px) { 
 
    #main { 
 
    padding-right: 0; 
 
    } 
 
    #primary, #container{ 
 
    width: auto; 
 
    } 
 
    #primary{ 
 
    position: static; 
 
    } 
 
}
<div id="main"> 
 
    <div id="container"> 
 
    middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div middle div <br />bit taller 
 
    </div> 
 
    <div id="primary"> 
 
    left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>left div<br/> 
 
    </div> 
 
</div>

jsfiddle.net/8pk4K/2160

相關問題