"overflow-y:scroll;" 隐藏在水平线上的溢出元素

Ali*_*sam 11 html css position overflow css3

我有一个parent包含绝对定位childdiv的div.

所述child格被定位的初始边界之外parent的div.它正常渲染没有任何问题.

overflow-y: scroll;parentdiv中添加了一个,现在child尽管添加了元素,但仍然隐藏了元素overflow-x: visible;.

CSS

#parent{
     position: relative;
     overflow-y: scroll;
     overflow-x: visible;
}
#child{
     position: absolute;
     left: -50px;
}
Run Code Online (Sandbox Code Playgroud)

也是一个Fidle

Joh*_*ohn 7

在stackoverflow上找到了这个,但你不会高兴.

CSS overflow-x:visible; 溢出-y:隐藏; 导致滚动条问题

简而言之,答案就是这样说的

如果您正在使用其他visible任何一种overflow-xoverflow-y其他东西visible.该visible值被解释为auto.

他的答案更深入地讨论了解释这种情况的W3规范.

几乎你overflow-x不可见,因为它会转向auto.(这种风格的哪一部分隐藏了它的内容.)如果你overflow-y的不同之处.

编辑:

您可以尝试这个,但作为该规范的解决方法.

HTML

<div id=parent>
    <div id=absolute-child>
        This is the child
    </div>
    <div id=child>
        This is the child
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

body {
    text-align: center;
}
#parent{
    display:inline-block;
    position: relative;
    text-align: left;
}
#absolute-child {
    background-color: red;
    color: white;
    position: absolute;
    left: -50px;
}
#child{
    border: solid 1px black;
    width: 200px;
    height: 200px;
    overflow-x: visible;
    overflow-y: scroll;
    margin-left: auto;
    margin-right: auto;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/BFLQr/

给我一点时间来解释我做了什么.

编辑

所以首先我基本上必须将你的父div移动到现在存在的父div的子div.这有点奇怪,但这是我唯一能想到的.现在的父div有一个" 缩小到适合 "的样式,通过display: inline-block它包裹它的子div.

由于位置absolute被推出文档流程,这意味着您的absolute位置子项不会影响它的新"缩小到适合"父级的宽度或高度."缩小到适合"父母也显示relative这个让你的absolute位置div根据它定位.此外,由于现在显示父inline-block级以使其居中,因此必须center对其包含的元素使用text-align .这意味着您还需要left在#parent或#child元素上放置文本对齐方式.

希望这有帮助.:)

PS我编辑了它在#child元素上有一个不必要的位置的小提琴.我还将text-align left添加到新父级