960网格系统 - 嵌套网格有布局问题

时间:2010-08-31 10:40:47

标签: css 960.gs

我刚开始为自己开发一个爱好网站,并尝试使用960 css grid system在屏幕上布置我的html元素。

我得到了基本想法,并且刚刚实施了一个骨架网站here on my server

到目前为止我有几个问题:

<div class="container_12">
<div class="grid_12">
    <div id='top_bar' class='grid_insider'><!-- start of #top_bar -->

        <ul id='top_menu' class='grid_5'><!-- start of #top_menu -->
            <li>Home</li>
            <li>Fake1</li>
            <li>Fake2</li>
            <li>Fake3</li>
        </ul><!-- end of #top_menu -->
        <ul id='user_panel' class='grid_2 prefix_4'><!-- start of #user_panel -->

            <li>log in</li>
            <li>faq</li>
        </ul><!-- end of #user_panel -->

    </div><!-- end of #top_bar -->
</div>
<div class="clear"></div>
<div id='title_bar' class="grid_12">
    <h1 id="logo" align='center'>LOGO, TITLE and SLOGAN all go here!</h1>

</div><!-- end .grid_1 -->
<div class="clear"></div>

我使用的是基于网格12的模板,因此每个“行”上的“网格”总数应为12.但是,我只能将两个元素放在同一“行”上,并添加网格总数最多11个,但不是12个。如果我将#user_panel“的类更改为”grid_3 prefix4“,那么实际上会将此元素带到下一行,这会破坏所有内容。

另一件事是,虽然top_bar和title_bar等第一级元素位于正确位置(您可以使用方便的Firefox插件gridfox确认),精确宽度为940px,嵌套网格不在他们应该的位置(有点远离设计的位置)。

我是这个css网格系统的新手,有没有更好的方法来管理嵌套元素?我不得不说960.gs上的一些示例网站是非常惊人的:)

提前感谢任何建议!

更新信息

好的,基于下面的答案,我认为在调试嵌套网格时仍然可以使用彩色边框,有一种“欺骗”的特殊方式:

.grid_insider
{
    border : 1px solid red;
    margin : -1px; /* this will stop the element from 'expanding' its space */
}

2 个答案:

答案 0 :(得分:14)

不确定您是否还没有意识到,但框架确实为嵌套元素提供了一种方法。

/* `Grid >> Children (Alpha ~ First, Omega ~ Last)
------------------------------------------------*/

.alpha {
    margin-left: 0;
}

.omega {
    margin-right: 0;
}

这将覆盖它们为所有网格元素提供的边距,从而允许侧面的元素靠在其容器的两侧。

您需要做的是将左侧菜单栏设为alpha类,右侧为omega类。然后,您必须删除添加到这两个元素及其容器的所有边框。这是因为CSS float非常精确,如果你使元素大于框架定义的元素,它将会中断。

如果需要添加边框,则必须添加一些覆盖这些边框的其他样式,并为它们提供宽度为两个px(边框每边一个),小于框架中定义的宽度。

答案 1 :(得分:2)

和一个非常晚的答案......

使用边框大纲

`outline: 1px solid red;`

或使用box-sizing

     .gridInsider {
       -webkit-box-sizing: border-box;
       -moz-box-sizing: border-box;
       box-sizing: border-box;
     }