1

抱歉,我知道这是一个非常糟糕的标题,但我想不出一个更好的标题。

我正在尝试使用纯 CSS 来布局这个网站。以前这是使用 javascript 完成的,但我知道它可以只用 CSS 完成。

首先:这是预期布局的图表:

布局 基本上,我们有一个包含页眉、页脚和 iFrame 的包装页:

包装器.aspx:

<form id="form1" runat="server">
    <div id="wrapper">
        <div id="divHeader">
        </div>
        <div id="divMain" >
            <iframe id="ifrmMainBody" src="page.aspx"></iframe>
        </div>
        <div id="divFooter" >
        </div>
    </div>
</form>

然后,iFrame 中的页面使用一个母版页,该母版页有一个主菜单、一个导航面板、几个工具栏,然后是内容:

main.master:

<form runat="server">
    <div id="mainMenu">
        main menu
    </div>
    <div id="navPanel">
        navigation panel
    </div>
    <div id="breadCrumb">
        bread crumb
    </div>
    <div id="caption">
        caption
    </div>
    <div id="subMenu">
        sub-menu
    </div>
    <div id="toolBar">
        toolbar
    </div>
    <div id="content">
        content
    </div>
    <asp:ContentPlaceHolder ID="MainContent" runat="server" />
</form>

然后是使用母版页的页面。我硬编码了宽度和高度以强制滚动条出现:

页面.aspx:

<form>
    <div style="height: 1200px; width: 1500px;">
        <p>
            Put content here.
        </p>
    </div>
</form>

我面临的问题是:

  • 让 iFrame 占用整个页面高度减去页眉和页脚时出现问题
  • 让滚动条仅出现在内容部分
  • 滚动时导航面板和其他工具栏不移动

谁能帮我正确布局此页面?

4

2 回答 2

1

我认为固定位置元素有点粗俗,因为它迫使用户在他们可能只想看到内容时不断地看到你所有的额外内容,但这听起来就像你正在寻找的东西。你可以尝试这样的事情:http: //jsfiddle.net/HBeBq/

#header {
    position: fixed;
    top: 0;
    width: 100%;
    height: 5em;
}
#navigation {
    position: fixed;
    left: 0;
    top: 5em; // same as header height
    bottom: 5em; // same as footer height
    width: 10em;
}
#footer {
    position: fixed;
    bottom: 0;
    width: 100%;
    height: 5em;
}
#contentWrapper {
    position: fixed;
    left: 10em; // same as nav width
    top: 5em; // same as header height
    bottom: 5em; // same as footer height
    right: 0;
    overflow: auto; // if this div's contents are too big, scrollbars automatically appear
}
#content {
    position: relative;
    width: 2000px;
    height: 2000px;
}
于 2013-07-19T22:57:18.777 回答
0

亚当的回答非常好。我做了类似的事情:

/*in wrapper*/
#wrapper {
    width: 100%;
    height: 100%;
}
#divHeader
{
    position: absolute;
    top: 0px;
    left: 0px;
    right: 0px;
    height: 30px;
    background-color: #756398;
}
#divMain  /*container for iframe*/
{
    position: absolute;
    top: 30px;
    bottom: 30px;
    left: 0px;
    right: 0px;    
}
#ifrmMainBody
{
    width: 100%;
    height: 100%;
}
#divFooter
{
    position: absolute;
    bottom: 0px;
    left: 0px;
    right: 0px;
    height: 30px;
    background-color: #926531;    
}

/*in master*/
#mainMenu
{
    position: absolute;
    top: 0px;
    left: 0px;
    right: 0px;
    height: 30px;
    background-color: #a9b77c;    
}
#navPanel
{
    position: absolute;
    top: 30px;
    left: 0px;
    bottom: 0px;
    width: 150px;  
    background-color: #b87c9a;  
}
#breadCrumb
{
    position: absolute;
    top: 30px;
    left: 150px;
    right: 0px;
    height: 20px;
    background-color: #ABCDEF;  
}

#caption
{
    position: absolute;
    top: 50px;
    left: 150px;
    right: 0px;
    height: 20px;
    background-color: #AB79B8;  
}

#subMenu
{
    position: absolute;
    top: 70px;
    left: 150px;
    right: 0px;
    height: 20px;
    background-color: #A7b2E5;  
}
#toolBar
{
    position: absolute;
    top: 90px;
    left: 150px;
    right: 0px;
    height: 20px;
    background-color: #E76235;  
}
#content
{
    position: absolute;
    top: 110px;
    left: 150px;
    right: 0px;
    bottom: 0px;
    background: #666;
    overflow: auto;
}
于 2013-07-19T23:00:04.773 回答