如何使div的百分比宽度相对于父div而不是视口

sea*_*ean 54 html css css-position width

这是我正在使用的HTML.

<div id="outer" style="min-width: 2000px; min-height: 1000px; background: #3e3e3e;">
  <div id="inner" style="left: 1%; top: 45px; width: 50%; height: auto; position: absolute; z-index: 1;">
    <div style="background: #efffef; position: absolute; height: 400px; right: 0px; left: 0px;"></div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想要发生的是内部div占用给予其父div(外部)50%的空间.相反,它正在获得视口可用空间的50%,这意味着随着浏览器/视口的大小缩小,它也会缩小.

鉴于外div有min-width2000px,我希望内部的div至少1000px宽.

Jua*_*des 60

指定非静态位置(例如,position: absolute/relative在节点上)意味着它将用作其中绝对定位元素的参考http://jsfiddle.net/E5eEk/1/

请参阅https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning#Positioning_contexts

我们可以更改定位上下文 - 绝对定位元素相对于哪个元素.这是通过在元素的一个祖先上设置定位来完成的.

#outer {
  min-width: 2000px; 
  min-height: 1000px; 
  background: #3e3e3e; 
  position:relative
}

#inner {
  left: 1%; 
  top: 45px; 
  width: 50%; 
  height: auto; 
  position: absolute; 
  z-index: 1;
}

#inner-inner {
  background: #efffef;
  position: absolute; 
  height: 400px; 
  right: 0px; 
  left: 0px;
}
Run Code Online (Sandbox Code Playgroud)
<div id="outer">
  <div id="inner">
    <div id="inner-inner"></div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢您的回答和解释! (2认同)
  • 我在这里是为了解释!谢谢! (2认同)

Wil*_*iam 12

在父元素上使用position:relative.

另请注意,如果您没有向任何div添加任何位置属性,您将不会看到此行为.胡安进一步解释.

  • 有时我觉得stackoverflow的答案就像价格合适.一个人给出了正确的答案.下一个人给出答案并给出解释.接下来给出答案,解释和演示.我打赌501,鲍勃! (14认同)
  • 我做了这个回答,只是没想到它提供了足够的解释.教他们钓鱼 (3认同)
  • 我不是专门拿你开玩笑。这只是一个幽默的观察。 (2认同)