CSS关于两列布局

发布于 2024-12-09 03:31:45 字数 598 浏览 1 评论 0原文

我从来没有想过使用css编写一个简单的两列布局是如此复杂....哈哈

我想做的是以下内容:

  1. 当内容div的高度超过屏幕尺寸的高度时,滚动条存在仅在内容 div 中。用户只能滚动内容 div,但侧边栏保持静态

  2. 两列应具有相同的高度

    我的布局是:

<----------------容器--------------------> ;

<-------------------标题------------------>

<-----侧边栏-----><---------内容--->

<------------------页脚-------------------->

<---容器末端------------------------>

这是我的 css 文件: http://137.189.145.40/c2dm/css/main.css

I have never thought that writing a simple two column layout is so complicated using css....haha

What I want to do is the following:

  1. When the height of the content div exceed the height of screen size, scroll bar exist only in the content div. The users can only scroll the content div but the sidebar keeps static

  2. The two columns should have the same height

    My layout is:

<---------------container------------------->

<-------------------header------------------>

<-----sidebar-------><---------content--->

<------------------footer------------------->

<---End of container------------------------->

Here is my css file:
http://137.189.145.40/c2dm/css/main.css

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

七秒鱼° 2024-12-16 03:31:45
#WorldContainer
{
     width: 1000px;
     margin: auto;
     overflow: hidden;
}

.ContentColumn
{
     float: left;
     width: 500px;
     overflow: auto;
}

<div id="WorldContainer">
   <div class="ContentColumn">
        Content goes here!
   </div>
   <div class="ContentColumn">
        Content goes here!
   </div>
</div>

这将为您提供一个页面,其中主 div 无法滚动,但两个 div 列可以滚动。他们将肩并肩。您的问题不太清楚,所以希望这就是您所追求的。

编辑:响应您显示示例站点。

你的问题其实很简单。

所有 div 的高度规则为 height: 100%;
当您使用百分比高度时,您将使其成为其所在容器(即其父容器)的百分比。 它不是整个窗口的百分比高度。

每个容器都指定一个百分比高度,因此结果是高度 0。
给你最外面的div一个固定的高度,问题就解决了。

附加编辑:

如果您担心确保最外面的 div 始终拉伸到窗口的底部,那么这是使用绝对定位的 css 解决方案:

#OutermostDiv
 {
    position: absolute;
    top: 0;
    bottom: 0;
 }

即使外部 div 没有硬性,使用此方法仍然会导致计算出的高度编码高度。这将允许您在内部 div 上使用百分比高度,并维护一个从可见窗口的顶部延伸到底部的外部 div。

#WorldContainer
{
     width: 1000px;
     margin: auto;
     overflow: hidden;
}

.ContentColumn
{
     float: left;
     width: 500px;
     overflow: auto;
}

<div id="WorldContainer">
   <div class="ContentColumn">
        Content goes here!
   </div>
   <div class="ContentColumn">
        Content goes here!
   </div>
</div>

That will give you a page where the main div cannot scroll but the two div columns can. They will be side by side. You question wasn't exactly clear so hopefully this is what you were after.

EDIT: In response to you showing the example site.

Your problem is really simple.

All of your divs have a height rule of height: 100%;
When you use percentage height, you are making it a percent of the container it is within, i.e Its parent container. It is NOT a percentage height of the entire window.

Every container is specifying a percentage height so the result is a height of 0.
Give your outermost div a fixed height and the problem will be resolved.

Additional Edit:

If you are concerned with making sure the outermost div always stretches to the bottom of the window then this is a css solution using absolute positioning:

#OutermostDiv
 {
    position: absolute;
    top: 0;
    bottom: 0;
 }

Using this approach still causes a calculated height even though the outer div doesn't have a hard coded height. This will allow you to use percentage heights on your inner divs and maintain a outer div that stretches from top to the bottom of the visible window.

心意如水 2024-12-16 03:31:45

您必须将容器元素设置为 overflow:hidden;,并将内容 div 设置为 overflow:scroll; (并且可能会执行 overflow-x:hidden ; 隐藏水平滚动条)。这样做的问题是,如果你的侧边栏和内容将具有相同的高度,那么您将必须有两个滚动条 - 一个用于内容,一个用于侧边栏。

您可能可以通过在侧边栏和侧边栏周围使用另一个容器元素来解决此问题。内容,并设置溢出:滚动条; overflox-x:hidden; 在上面而不是侧边栏/内容上。

You'd have to set your container element to overflow:hidden;, and your content div to overflow:scroll; (and possibly do overflow-x:hidden; to hide the horizontal scrollbar). The problem with this is that if your sidebar & content are going to be the same height, then you would have to have TWO scrollbars - one for content, and one for sidebar.

You could probably solve this by using another container element around just sidebar & content, and setting the overflow: scrollbar; overflox-x:hidden; on it instead of sidebar/content.

魂牵梦绕锁你心扉 2024-12-16 03:31:45

如果您在使用 float 时遇到困难,还可以使用 display:tabledisplay:table-cell 创建列。 CSS 如下:

#container
{
width:960px;
margin:0;
padding:0;
display:table;
}
#sidebar
{
width:300px;
display:table-cell;
}
#content
{
width:660px;
display:table-cell;
}

HTML 为:

<div id="container">

<div id="sidebar">
<!-- Sidebar Content Here -->
</div>

<div id="content">
<!-- Content Here -->
</div>

</div>

希望这能解决您的问题。但是 display:table 在某些旧浏览器中不起作用。

You can also use display:table and display:table-cell to create columns if you're facing difficulties with float. Here's the CSS:

#container
{
width:960px;
margin:0;
padding:0;
display:table;
}
#sidebar
{
width:300px;
display:table-cell;
}
#content
{
width:660px;
display:table-cell;
}

and the HTML is:

<div id="container">

<div id="sidebar">
<!-- Sidebar Content Here -->
</div>

<div id="content">
<!-- Content Here -->
</div>

</div>

Hope this solves your problem. But display:table doesn't work in some old browsers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文