[侧箱1] [主要内容
[边框2].主要内容]
要么
[如果没有提供侧箱,主要内容跨度为100%]
我希望主内容框跨越#load(减去边距)中可用的整个高度和宽度,除非边框在那里,然后我希望它只跨越那些框(及其右边距).
我的CSS:
#load { margin: 10px; height: 100%; min-width: 1080px; } #primary,#secondaryOne,#secondaryTwo { border-radius: 8px; background: #f5f5f5; border: 1px solid #ccc; } #primary { float: right; height: inherit; width: 75%; height:500px; background:red; } #secondaryOne,#secondaryTwo { min-width: 250px; max-width: 300px; height: 220px; margin-right: 10px; width: 20%; clear:left; float:left; } #secondaryTwo { margin-top: 10px; }
简单的HTML
<div id='load'> <div id='primary'></div> <div id='secondaryOne'></div> <div id='secondaryTwo'></div> </div>
问题
> *已解决*如果缺少侧箱,则#primary会覆盖整个宽度.
> *已解决*有没有办法在#primary的左侧排列两个sideBox(#secondaryOne,#secondaryTwo)而不将它们嵌套在一个单独的div中?如果我使用float:left on left,它们并排排列,如果我不浮动它们,#primary会在它们下方产生,而不是在它们旁边.
解决方案
>问题#1由joeytje50使用辅助主标记解决,并将辅助侧框放在HTML中的主要标记之前.
>问题#2以多种方式解决.我选择的方式是将二级标签放在一起,在主要之前由NoobEditor使用clear:left和一个负边缘顶部.
解决方案可以在:http://jsfiddle.net/v4cvv/67/找到
解决方案的主要部分是:
#primary { width: 100%; } #secondaryOne + #primary,#secondaryTwo + #primary { margin-top: -221px; width: 75%; }
替代解决方案
我在上述解决方案中遇到的一个问题是它需要两个盒子并且它们的高度相同.解决这个问题的方法是将框放在他们自己的div中.这个解决方案是:
HTML
<div id='load'> <div id="sideBoxes"> <div id="BoxOne" class="Box"></div> <div id="BoxTwo" class="Box"></div> <div id="BoxThree" class="Box"></div> </div> <div id="primary" class="Box"></div> </div>
CSS
.Box { border-radius: 8px; background: #f5f5f5; border: 1px solid #fff; } #primary { float: right; display:block; height: 97%; width: 100%; } #sideBoxes + #primary { width: 75%; } #sideBoxes { float: left; height: 97%; width: 23%; margin-right: 10px; } #sideBoxes .Box { float: left; height: 220px; margin-bottom: 10px; width: 100%; }
备用解决方案不再需要清除,可以扩展用于其他用途.您现在可以在sideBoxes div中拥有所需的1,2,3或多个方框.
谢谢大家的帮助.
解决方法
#primary {width:100%;} .secondary + #primary {width:75%;}
如果你将CSS代码放在样式表的底部,然后将主div标签放在第一个辅助div标签之后,那么它默认为100%宽,除非有一个元素具有class =“secondary”.这不会改变div渲染位置的任何内容,但它会解决您的问题.
或者,如果您的辅助div可能隐藏而不是不在那里,您可以这样做:
#primary,.secondary.hidden + #primary {width:100%;} .secondary + #primary {width:75%;}
也就是说,假设您通过诸如.hidden之类隐藏了辅助选项卡.