overflow:hidden不会剪切绝对定位的内容

时间:2013-02-12 16:49:32

标签: html css overflow

我正在尝试制作一个带有滚动文字的框。问题是,当文本位于框的一半时,它会在我希望被裁剪的时候显示在它之外。

HTML / CSS非常简单,我不知道可能出现的问题:

#vbox {
  width: 100px;
  height: 500px;
  overflow: hidden;
  background: #afa;
}
#vtext {
  position: absolute;
  width: 100px;
  top: 250px;
}
<div id="vbox">
  <div id="vtext">
    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.</p>
    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
    <p>Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim.</p>
    <p>Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.</p>
    <p>Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.</p>
    <p>Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a,</p>
  </div>
</div>

不是“溢出:隐藏;”是否隐藏了溢出的内容?

修改:

在框中添加“postion:relative”解决了这个问题,但我仍然感到困惑......有人可以解释一下这种行为吗?

2 个答案:

答案 0 :(得分:19)

如果具有该设置的元素不包含(或不包含)其包含的块(通常,这意味着它未定位),则绝对定位的元素不受任何overflow设置的影响。

在您的情况下,框未定位,因此文本将锚定到视口而不是框。该框不知道文本,视口大到足以包含文本,因此根本不会发生剪切。您可以在规范的section 11.1中找到血腥的详细信息。

给你的方框position: relative将使文本相对于方框定位,并因此被裁剪。

#vbox {
  position: relative;
  width: 100px;
  height: 500px;
  overflow: hidden;
  background: #afa;
}
#vtext {
  position: absolute;
  width: 100px;
  top: 250px;
}
<div id="vbox">
  <div id="vtext">
    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.</p>
    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
    <p>Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim.</p>
    <p>Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.</p>
    <p>Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.</p>
    <p>Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a,</p>
  </div>
</div>

答案 1 :(得分:-1)

请勿在框position:absolute内创建元素。

<强> CSS

#vbox{
    width:100px;
    height:500px;
    overflow:auto;
    background:#afa;
}
.vtext{
    font-size: 12px;
} 

查看更新的http://jsfiddle.net/V98bg/4/