【问题标题】:Two columns layout with 100% height. One fixed column and one fluid column [duplicate]具有 100% 高度的两列布局。一个固定柱和一个流体柱[重复]
【发布时间】:2015-11-05 16:45:01
【问题描述】:

我需要创建一个两列布局 (Online Example):

<header>
  A<br/>
  B<br/>
</header>    
<main>      
  <div class="wrapper">
    Vis iriure laboramus at. Quis audire ei vis ...
  </div>      
</main>
  1. 标题宽度必须固定;
  2. 主宽度必须是可变的 (%) 宽度是最大宽度(以像素为单位);
  3. 页眉和主高度必须为 100%。

我尝试了以下 CSS:

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
} // *

html, body {
  height: 100%;
  margin: 0;    
  padding: 0;
  width: 100%;  
}

body {
  background-color: black;
  overflow: hidden;
}

header {
  background-color: red;
  height: 100%;
  width: 44px;
  float: left;
}

main {
  background-color: green;
  height: 100%;
  margin-right: -44px;
  max-width: 400px;  
  width: 100%;          
  float: left; 
}

.wrapper {
  height: 100%;
  margin-right: 88px;          
  padding: 24px;  
}

但是,header 和 main 不是 100% 的高度。

有谁知道如何解决这个问题?

更新 1
Another Question的代码不起作用!

检查相同的代码,但文本更多: http://plnkr.co/edit/xM0BnHbF5Dh08EvrGY2V?p=preview

看看,文本是如何脱离包装的......

更新 2
我在左侧添加了一个菜单。 将鼠标悬停在项目“A”、“B”等上,看看它应该如何工作。 菜单运行良好......我不想打破它。

【问题讨论】:

    标签: html css multiple-columns fluid-layout


    【解决方案1】:

    演示: http://codepen.io/awesomeaniruddh/pen/bdJBZy

    添加以下代码:

    html {
        height: 100%:
    }
    

    在 html 之前,body {..} 部分。

    【讨论】:

    • 这并没有解决它...检查更新示例:plnkr.co/edit/rDzbpDchYYshyk5sY1EF?p=preview。看看内容是如何脱离 main 的?
    • 用 min-height 替换 height 解决了这个问题,但是红色背景的标题停止显示。但蓝色背景的链接仍然显示。可以吗?
    • ...这并不完美,但更好。但是,您的最小高度解决方案存在一个问题。当 main 中的文本很小时,主要高度不会是 100%。在这里查看:codepen.io/anon/pen/VLNrwd?editors=110。这是我在使用 min-height 时一直试图解决的问题之一。
    • codepen.io/awesomeaniruddh/pen/KpYypd?editors=110 这也解决了这个问题。我将position: absolute 添加到了side 和main,并将left: 44px; 添加到了main。
    • 非常接近但不完全......当您将窗口大小调整为小于 400 像素时,主窗口应该调整大小,但事实并非如此。看看:codepen.io/anon/pen/eNoVem?editors=110
    【解决方案2】:

    在第 6 行,只需删除 // *,您的代码就可以正常工作了!

    【讨论】:

    • 该死,我没听懂!你有一双敏锐的眼睛!
    • @AniruddhAgarwal 谢谢:D
    • 这是一个错字,但删除评论并不能解决问题:plnkr.co/edit/rDzbpDchYYshyk5sY1EF?p=preview。在此链接中,您将看到文本很长时从主标签中出来。并且正文和 html 不会填满整个页面。解决方案是在正文中添加溢出:隐藏...但是我无法向下滚动页面。
    【解决方案3】:

    我需要创建一个两列布局... 1. 标题宽度必须固定;

    如果您想要柱状布局,为什么要使用header。如果您打算将此块用作侧边栏中的导航,为什么不使用navaside,这将更具语义。

    1. 主宽度必须是可变的 (%) 宽度是最大宽度,以 % 为单位

    但是在你的css中你指定width: 100%然后max-width以像素为单位,还有margin44px..为什么?

    只需删除widthmargin-right,只保留max-width 的百分比。

    1. 标题和主高度必须为 100%

    这在您的代码中很好。但是,那里有多余的规则。只需从htmlbody 中删除您的高度,并指定高度为100vh 的两列。

    看看,文本是如何脱离包装的......

    当然,您还没有指定当内容超出范围时该怎么做。您需要在 wrapper 上指定您需要的 overflow 属性。

    在您的代码中查看这些更改:http://plnkr.co/edit/x4eKxAiJiKgthhMJJ31t?p=preview

    另外,我不明白为什么你的main 中有一个wrapper。这似乎是多余的,没有用。

    【讨论】:

    • 还是不行... 1.我同意必须放在一边而不是标题; 2 - max-width 是百分比......这是一个错字。 (2 & 4):有 44px 的边距和一个包装器是有原因的。如果您在减小浏览器宽度时将其删除,则主屏幕将变为下方而不是并排。最后,我不想在 main 上有滚动条……我想在页面上有滚动条。
    • 什么不起作用? (1) 不存在 main 在 resize 时被搁置的问题。 (2) 在此布局中,您不能在 main 上有滚动条。否则你的旁边也会滚动。 (3) 我已经更新了没有边距的 plunker - plnkr.co/edit/x4eKxAiJiKgthhMJJ31t?p=preview
    • 我不介意一边滚动...我只需要它有 44px 的宽度。我需要主高度为 100%,即使没有必要,也可以将高度为 100%。主宽度应该是流动的,并且不大于,比如说,400px。没有被 main 或 side 覆盖的空间应该有不同的背景颜色。
    • 基本上,如果您检查plnkr.co/edit/rDzbpDchYYshyk5sY1EF?p=preview,我只需要让 main 填充整个高度,如果可能,没有必要,旁边也一样。我希望将滚动应用于页面。这有意义吗?
    猜你喜欢
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2023-03-18
    • 2013-01-27
    • 1970-01-01
    相关资源
    最近更新 更多