【问题标题】:3 Column CSS Layout needed需要 3 列 CSS 布局
【发布时间】:2011-06-06 20:07:15
【问题描述】:

查看布局here,我想将整个页面的最小宽度限制为600px。我尝试设置内容的最小宽度,但右侧与它重叠。

有人可以推荐一种更正此问题的方法或满足此要求的其他布局吗?

在此要记住的另一件事是内容在代码中出现的顺序 - 1) 2) 3),如页面所示。任何一列都应该能够将页脚向下移动,我希望再定义两个区域:当前标题在代码中显示为 4),以及 5) 是 4)

所以简而言之,页面内容区域会在页面上显示为这样(在代码中从上到下排序,从 1 开始):

7) top menu
5) header
4) contentbar
2) 1) 3)
6) (footer)

谢谢。

更新

在 Midas 的帮助下,我几乎得到了我想要的东西。下面的问题是,当浏览器宽度减小时,右侧列不会向下移动页脚,也不会在最小宽度处锁定到位。此外,我仍然无法将顶部菜单栏的所有内容都向下推,因为它只是与标题重叠:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Holygrail1</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<style type="text/css">
* { 
    margin:0; padding:0 
}
body { 
    font:76% Arial, Helvetica, sans-serif 
}
p { 
    margin:0 10px 10px 
}
a {
    display:block; color:#981793; padding:10px 
}

#container 
{
    margin-top:104px; min-height:400px;
    min-width:700px;
    top:20px;
}
#wrapper { 
    float:left; width:100% 
}
#content { 
    margin: 0 200px 0 200px
}
#content p {    
    line-height:1.4 
}
#leftbar { 
    background:#b9caff; float:left; width:200px; margin-left:-100% 
}
#rightbar { 
    position: absolute;
    background:#ff8539; 
    right:0px;
    width:200px; 
}
#header { 
    position:absolute; top:0; width:100%; height:266px;
}
#header h1 { 
    line-height:80px; padding-left:10px; background:#eee; color:#79b30b 
}
#contentbar { 
    position:absolute; top:80px; width:100%; z-index:1 
}

#footer, #contentbar { 
    background:#333; color:#fff 
}
#footer p, #contentbar p { 
    margin:0; padding:5px 10px; line-height:14px 
}
#footer { 
    clear:left; width:100% 
}

#topbar { 
    position:absolute; top:0px; width:100%; z-index:1;
    height: 20px;
    background-color:red;
}

</style>
</head>
<body>
    <div id="container">
        <div id="wrapper">
            <div id="content">
                <p><strong>1) Content here.</strong> column long long column very long fill fill fill long text text column text silly very make long very fill silly make make long make text fill very long text column silly silly very column long very column filler fill long make filler long silly very long silly silly silly long filler make column filler make silly long long fill very.</p>
            </div>
        </div>
        <div id="leftbar">
            <p><strong>2) leftbar here.</strong> long long fill filler very fill column column silly filler very filler fill fill filler text fill very silly fill text filler silly silly filler fill very make fill column text column very very column fill fill very silly column silly silly fill fill long filler</p>
        </div>
        <div id="rightbar">
            <p><strong>3) More stuff here.</strong> very text make long column make filler fill make column column silly filler text silly column fill silly fill column text filler make text silly filler make filler very silly make text very very text make long filler very make column make silly column fill silly column long make silly filler column filler silly long long column fill silly column very</p>
                <p>very make make fill silly long long filler column long make silly silly column filler fill fill very filler text fill filler column make fill make text very make make very fill fill long make very filler column very long very filler silly very make filler silly make make column column</p>
                <p>fill long make long text very make long fill column make text very silly column filler silly text fill text filler filler filler make make make make text filler fill column filler make silly make text text fill make very filler column very</p>
                <p>column text long column make silly long text filler silly very very very long filler fill very fill silly very make make filler text filler text make silly text text long fill fill make text fill long text very silly long long filler filler fill silly long make column make silly long column long make very</p>
        </div>
    </div>
    <div id="contentbar"><p>4) Content bar here.</p></div>
    <div id="header"><h1>5) Header</h1></div>
    <div id="footer"><p>6) Here it goes the footer</p></div>
    <div id="topbar"><p>7) Top Bar </p></div>
</body>
</html>

【问题讨论】:

    标签: css seo stylesheet


    【解决方案1】:

    由于这不是一个按代码付费的网站,所以我不会为你编写整个代码。

    这可能是一个愚蠢的问题,但这对你不起作用吗?

    body {
      min-width: 600px;
    }
    

    【讨论】:

    • 哈哈好笑……不,那不行。参考上面的链接,我确实在中心列上设置了最小宽度,但是,正如我所提到的,当缩小窗口时,右列会与中心列重叠。
    • 我的意思是将 CSS 应用到整个 &lt;body&gt; 标签(不是内容的主体),它包裹了整个网站。它对我有用。
    • 但我不太清楚你所说的min-width 是什么意思。你说的是整个网站的最小宽度,还是中心栏的最小宽度?
    【解决方案2】:

    Here is your reviewed layout. 排序就像你想要的那样,我不得不使用position:absolute 作为标题和“内容栏”。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Layout 19</title>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
        <style type="text/css">
    * { margin:0; padding:0 }
    body { font:76% Arial, Helvetica, sans-serif; min-width:600px }
    a { display:block; color:#981793; padding:10px }
    #navigation, #extra, #header, #contentbar { position:absolute; top:0 }
    #container { margin-top:104px; position:relative }
    #container p { margin:0 10px 10px }
    #content { margin:0 200px }
    #content p { line-height:1.4 }
    #navigation { background:#b9caff; width:200px }
    #extra { background:#ff8539; width:200px; right:0 }
    #header { width:100% }
    #header h1 { line-height:80px; padding-left:10px; background:#eee; color:#79b30b }
    #contentbar { margin-top:80px; width:100% }
    #footer, #contentbar { background:#333; color:#fff }
    #footer p, #contentbar p { padding:5px 10px; line-height:14px }
        </style>
    </head>
    <body>
        <div id="container">
            <div id="content">
                <p><strong>1) Content here.</strong> column long long column very long fill fill fill long text text column text silly very make long very fill silly make make long make text fill very long text column silly silly very column long very column filler fill long make filler long silly very long silly silly silly long filler make column filler make silly long long fill very.</p>
                <p>very make make fill silly long long filler column long make silly silly column filler fill fill very filler text fill filler column make fill make text very make make very fill fill long make very filler column very long very filler silly very make filler silly make make column column</p>
                <p>fill long make long text very make long fill column make text very silly column filler silly text fill text filler filler filler make make make make text filler fill column filler make silly make text text fill make very filler column very</p>
                <p>column text long column make silly long text filler silly very very very long filler fill very fill silly very make make filler text filler text make silly text text long fill fill make text fill long text very silly long long filler filler fill silly long make column make silly long column long make very</p>
            </div>
           <div id="navigation">
                <p><strong>2) Navigation here.</strong> long long fill filler very fill column column silly filler very filler fill fill filler text fill very silly fill text filler silly silly filler fill very make fill column text column very very column fill fill very silly column silly silly fill fill long filler</p>
            </div>
            <div id="extra">
                <p><strong>3) More stuff here.</strong> very text make long column make filler fill make column column silly filler text silly column fill silly fill column text filler make text silly filler make filler very silly make text very very text make long filler very make column make silly column fill silly column long make silly filler column filler silly long long column fill silly column very</p>
            </div>
        </div>
        <div id="contentbar"><p>4) Content bar here.</p></div>
        <div id="header"><h1>5) Header</h1></div>
        <div id="footer"><p>6) Here it goes the footer</p></div>
    </body>
    </html>
    

    【讨论】:

    • 感谢迈达斯。这非常有效。我在容器上设置了一个最小宽度,“4)内容栏”是完美的,但我希望能够将整个页面向下移动 20px 以拥有一个额外的顶部菜单“7)顶部菜单)”,而不必为其余元素添加垂直定位。
    • @ElHaix:调整标题栏和内容栏的top,调整#container 的margin-top。然后添加菜单并像标题和内容栏一样以绝对定位放置它。
    • 感谢迈达斯。最后一件事。如何修复正确的列宽,并将其附加到 RHS - 没有 %?
    • @Midas:查看我上面的更新。我稍微修改了您的布局,但仍然存在一些问题。见上文。
    • @ElHaix:该死。我尝试了everyting,如果不将顺序更改为5) 4) 1) 3) 2) 6),您似乎无法做到这一点。 See here.
    【解决方案3】:

    This Example 可以在&lt;body&gt; 标记或最外层&lt;div&gt; 标记周围设置为常量width:600px。

    关于这个布局的更详细的解释可以在A List Apart - Holy Grail找到

    【讨论】:

    • 谢谢布雷特...我正在寻找的东西与那个圣杯有点不同。
    猜你喜欢
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 2013-08-21
    • 2022-11-14
    相关资源
    最近更新 更多