11

我正在考虑从 HTML 表格过渡到纯 CSS 布局。到目前为止,让我难以理解的一件事是如何正确布局页面。

我可以:

  • 标题
  • 左侧导航
  • 内容
  • 页脚

所以像这样:

________________________ 
|      Header           |
|_______________________|
| Left |     Content    |
| Nav  |                |
|      |                |
|      |                |
|      |                |
|      |                |
|      |                |
|      |                |
|      |                |
|      |                |
|      |                |
|______|________________|
|     Footer            |
|_______________________|

但是,在某些页面上,我希望能够将“内容”区域划分为以下内容:

________________________ 
|      Header           |
|_______________________|
| Left | info | info    |
| Nav  |      |         |
|      |      |         |
|      |      |         |
|      |      |         |
|      |______|_________|
|      | Other info     |
|      |                |
|      |                |
|      |                |
|      |                |
|______|________________|
|     Footer            |
|_______________________|

有谁知道这样的事情会怎么做?或者甚至是一个很好的网站来帮助解决这种事情?

4

5 回答 5

33

第一个布局预览(在线演示):

在此处输入图像描述

html:
<div id="header">Header</div>
<div id="main-wrap">
    <div id="sidebar">Left Nav</div>
    <div id="content-wrap">Content</div>
</div>
<div id="footer">Footer</div>
CSS:
/* sizes */
#main-wrap > div { min-height: 450px; }


#header,
#footer {
    min-height: 40px;
}

/* layout */
#main-wrap {
    /* overflow to handle inner floating block */
    overflow: hidden;
}

#sidebar {
    float: left;
    width: 30%;
}

#content-wrap {
    float: right;
    width: 70%;
}   

第二版布局预览(在线演示):

在此处输入图像描述

html与第一个布局非常相似,但我们包含一个包装器#content-wrap
<div id="header">Header</div>
<div id="main-wrap">
    <div id="sidebar">Left Nav</div>
    <div id="content-wrap">
        <div id="info-wrap">
            <div class="info">small info </div>
            <div class="info">small info</div>
        </div>
        Content
    </div>
</div>
<div id="footer">Footer</div>
css也类似,顺便说一下,我们添加了一些css规则来定位新的 div:
/* sizes */
#main-wrap > div { min-height: 450px; }

#header,
#footer {
    min-height: 40px;
}

.info { min-height: 80px; }

/* layout */
#main-wrap {
    /* overflow to handle inner floating block */
    overflow: hidden;
}

#sidebar {
    float: left;
    width: 30%;
}

#content-wrap {
    float: right;
    width: 70%;
}

#info-wrap {
    /* overflow to handle inner floating block */
    overflow: hidden;
}

.info {
    width: 50%;
    float: left;
}

更新:改进的样式

于 2012-05-15T11:38:30.323 回答
2

试试其中一个 CSS 网格系统。这个网站列出了一些:10 个非常出色和有用的 CSS 网格系统

于 2012-05-15T04:41:23.763 回答
2

http://grids.heroku.com/fluid_grid?column_amount=3

您可以添加和删除这些网格。

于 2012-05-15T04:43:26.370 回答
2

为您的内容 div 设置一个宽度,然后为信息部分创建三个 div。

前两个给出一个宽度并确保它们不超过容器内容的总和。一左一右浮动。

在 div 下方添加:

<div class="clear"></div>

的CSS是:

.clear {clear:both;}

在 clear 下将是您的第三个 div,它将为您提供所需的布局。

于 2012-05-15T08:09:18.980 回答
-2

在内容列中添加另一个内表。将此表设为服务器 (runat="server)。在文件后面的代码中指定条件并使表可见为 false 或 true。这里我的示例包含一个嵌套表。当我通过代码后面有特定条件时将其隐藏关于特定事件的文件。

例如:

<body>
    <form id="form1" runat="server">
    <div>

        <table >
            <tr>
                <td colspan="2">
                    header</td>
            </tr>
            <tr>
                <td style="height:50px;">
                    left nav
                </td>
                <td>
                    content

                    <table class="style1" id="innertab" runat="server">
                        <tr>
                            <td>
                                info</td>
                            <td>
                                info</td>
                        </tr>
                        <tr>
                            <td colspan="2">
                                other info</td>
                        </tr>
                    </table>

                </td>
            </tr>
            <tr>
                <td colspan="2">
                    footer</td>
            </tr>
        </table>

    </div>
    </form>
</body>

文件后面的代码:

protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["value"].ToString == ValueType)
            {
                innertab.Visible = false;
            }
        }
于 2012-05-15T05:14:56.713 回答