我正在尝试制作一个带有滚动文字的框。问题是,当文本位于框的一半时,它会在我希望被裁剪的时候显示在它之外。
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”解决了这个问题,但我仍然感到困惑......有人可以解释一下这种行为吗?
答案 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;
}