2015-05-27 146 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

相关问题