@roberkules问我是否想出了一个解决方案,我们做了。有点。至少,它在当时是有用的。我一直想写一篇博客文章很长一段时间,但从来没有涉及到它,所以我会尝试在这里总结答案。
总的来说,我们做了两件事。 1,我们添加了通过在不打断网格的情况下给出'.span-x'边框来创建'盒子'的功能。在图2中,我们将标准的24列结构细分为更细的细节,将“半”和“四分之一”测量的概念添加到网格系统。
要创建接壤容器盒,我们增加了一类名为span-border
(我们一直与蓝图跨度-X的语法尽可能我们可以用我们自己添加):
注意:所有的例子都是基于我们网格宽25px,宽度为15px(每个跨度为40px)。
div.span-border {
margin-left: -1px;
margin-right: 14px;
border-width: 1px;
border-style: solid;
}
所以,无论何时我们想创建一个带边框的容器,我们都可以添加该类。例如:
<div class="span-8 span-border">our box</div>
这给了我们一个8列的有边框。目标是让开发人员在那里创建仍然使用蓝图网格CSS的元素,这样我们就不会为页面上的每个小框创建新的CSS。
比方说,我们想要在该框内的两列。一个比另一个窄。我们可以放入一个跨度为3和跨度为5的,他们会适合,但他们会碰到盒子边缘,那会很丑。
所以,我们所做的是增加了一些-half
和-quarter
风格舒展使用网格的分数事情。
实施例的CSS:
.pad-1 {
padding: 20px;
}
此添加填充到div的20像素周围的一切,其中,水平= '1' 格栅40像素的单元。因此,让我们重新写我们的信箱HTML这样:
<div class="span-7 pad-1 span-border">our box</div>
我们的盒子仍然占据了8蓝图网格单元为7 + 1 = 8,所不同的是8个单位的内容空间,而不是,我们现在有7作为一个完整的单位,即用于填充。
我们现在可以中添加我们的栏目:
<div class="span-7 pad-1 span-border">
<div class="span-3">left column</div>
<div class="span-4 last">right column</div>
</div>
瞧!现在我们启用Blueprint来处理嵌套元素的概念。
有了这个系统,你可以无限地嵌套,如果需要的话。
随着时间的推移,我们只是调整了一些东西来适应新的情况。例如,我们最终需要将具有奇数个网格列的元素分成两个相等的列。为此,我们添加的stretch-x
概念:
.span-1.stretch-half {width:45px;}
.span-1
通常是25像素宽(40像素 - 15px的右边缘)。现在我们已经将它拉伸了整个网格单位的1/2(20px)。
我们会做到这一点对所有的现有跨度-X设置:
.span-2.stretch-half {width:85px;}
.span-3.stretch-half {width:125px;}
.span-4.stretch-half {width:165px;}
...
.span-23.stretch-half {width:925px;}
现在回到我们最初的例子中,我们可以创建两个相等的嵌套列,例如:
<div class="span-7 pad-1 span-border">
<div class="span-3 stretch-half">left column</div>
<div class="span-3 stretch-half last">right column</div>
</div>
3 + 3 + half + half = 7.
所以,这就是我们想到的。它随着时间的推移对我们运作良好。初步弄清楚和调整你的需求是一件很痛苦的事情,但是一旦建立起来,它使得快速原型设计变得非常简单,并且可以避免大量的CSS膨胀,如果你能让所有人都能够使用网格概念。
我应该补充一点,如果网站是由大量人员构建和维护的,我肯定会推荐这种方法。如果网站是由一个人构建的,并且随着时间的推移,源HTML不一定需要大量更新,那么这可能有点矫枉过正,因此根据需要编写自己的自定义CSS可能更容易特定的网站。
哦!还有一件事:免责声明:以上都不适用于IE6,因为IE6无法处理一次引用两个类的CSS。当时,我们不得不支持IE6。我们所做的只是为IE6创建了一个jQuery脚本,它将寻找例如class="span-8 stretch-half"
的div,并动态地将其替换为仅用于span-8-stretch-half
的IE6的丑陋类。
IE6然后得到了一个不同的样式表,稍微更像这样的单个类的臃肿。这是丑陋的,但工作,我们真的只支持IE6支持抗议;)
或者你可以完全抛弃它,并做你喜欢,没有任何框架限制你:) – 2009-11-25 15:47:06
@meder - 我们可以,但那会打败使用框架的目的。 :) – 2009-11-25 16:05:20
2年后,你找到了解决这个问题的办法吗?只是想第一次使用CSS网格,但设计包含嵌套的框。如果没有干净的解决方案,我会在没有网格的情况下执行此操作,或者只是在应用程序中使用网格,而忽略侧边栏 – roberkules 2011-11-02 17:57:10