5

如果我有一个宽度为 75% 的容器,里面有两列,左右两列,左边宽度为 10em,我如何让正确的容器占用 100% 的剩余空间?

我试过这个没有运气:

html, body {
    margin:0;
    padding:0;
    width:100%;
    height:100%;
}
#container {
    position:relative;
    width:75%;
    margin:0 auto;
    background:blue;
}
#left-container {
    position:relative;
    float:left;
    height:100%;
    width:10em;
    background:red;
}
#right-container {
    position:relative;
    float:left;
    height:100%;
    width:100%;
    background:yellow;
}
<div id="container">
    <div id="left-container">Left</div>
    <div id="right-container">Right</div>
</div>

我可以用百分比轻松做到这一点,但我需要保持固定的 10em 宽度。

4

4 回答 4

8

float: left您可以通过删除、删除width和添加overflow:hidden右侧使框元素占据剩余空间 div

工作示例

#right-container {
    position:relative;
    overflow: hidden;
    height:100%;
    background:yellow;
}
于 2013-05-01T01:20:01.670 回答
1

目前(2016 年)使用 CSS3 解决此类问题至少有 2 个选项,比接受的答案简单得多,这是一种“黑客”使用overflow:hidden

  • 使用flexbox

html,
body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}
#container {
  width: 75%;
  margin: 0 auto;
  background: blue;
  display: flex
}
#left-container {
  height: 100%;
  width: 10em;
  background: red;
}
#right-container {
  height: 100%;
  flex:1;
  background: yellow;
}
<div id="container">
  <div id="left-container">Left</div>
  <div id="right-container">Right</div>
</div>


  • 使用calc()

html,
body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}
#container {
  width: 75%;
  margin: 0 auto;
  background: blue;
}
#left-container {
  float: left;
  height: 100%;
  width: 10em;
  background: red;
}
#right-container {
  float: left;
  height: 100%;
  width: calc(100% - 10em);
  background: yellow;
}
<div id="container">
  <div id="left-container">Left</div>
  <div id="right-container">Right</div>
</div>

于 2016-06-12T03:37:21.900 回答
0

#right-container另一种选择是在div上放置一个左边距:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">

<style media="all">
html, body {
    margin:0;
    padding:0;
    width:100%;
    height:100%;
}
#container {
    position:relative;
    width:75%;
    margin:0 auto;
    background:blue;
}
#left-container {
    position:relative;
    float:left;
    height:100%;
    width:10em;
    background:red;
}
#right-container {
    position:relative;
    margin-left: 11em;
    height:100%;
    background:yellow;
}
</style>

</head>
<body>

<div id="container">
    <div id="left-container">
        Left
    </div>
    <div id="right-container">
        Right
    </div>
</div>

</body>
</html>
于 2013-05-01T01:50:06.817 回答
0

我想添加另一个选项,如下所示:

#header-left-section {
    float: left;
    position: absolute;
    z-index: 1000;
}
#header-right-section {
    height: 90px;
    width:100%;
    position: relative;
    overflow: hidden;
}
#header-right-section ins,
#header-right-section div{float:right}

左侧 div 为其内部的东西占用了足够的空间。右侧部分占宽度的 100%,左侧部分仅在其上方(按 z-index)。如果右 div 浮动在右侧,最后的 css 行只是为了制作内部的东西。

于 2016-06-12T03:22:22.170 回答