假设你有一些风格和标记:
ul
{
white-space: nowrap;
overflow-x: visible;
overflow-y: hidden;
/* added width so it would work in the snippet */
width: 100px;
}
li
{
display: inline-block;
}
<div>
<ul>
<li>1</li> <li>2</li> <li>3</li>
<li>4</li> <li>5</li> <li>6</li>
<li>7</li> <li>8</li> <li>9</li>
<li>1</li> <li>2</li> <li>3</li>
<li>4</li> <li>5</li> <li>6</li>
<li>7</li> <li>8</li> <li>9</li>
<li>1</li> <li>2</li> <li>3</li>
<li>4</li> <li>5</li> <li>6</li>
<li>7</li> <li>8</li> <li>9</li>
</ul>
</div>
当你看到这个 . <ul>
在底部有一个滚动条,即使我为溢出x / y指定了可见和隐藏值 .
(在Chrome 11和opera(?)上观察到)
我猜测必须有一些w3c规范或者某些东西告诉这件事发生但是对于我的生活我无法理解为什么 .
UPDATE:- 我找到了一种通过在 ul
周围添加另一个元素来实现相同结果的方法 . Check it out.
6 回答
经过一番认真的搜索后,我似乎找到了问题的答案:
来自:http://www.brunildo.org/test/Overflowxy2.html
W3C spec也说:
Short Version:
如果您对
overflow-x
或overflow-y
使用visible
而对于另一个使用visible
以外的其他内容,则visible
值将被解释为auto
.另一个廉价的黑客,似乎可以做到这一点:
style="padding-bottom: 250px; margin-bottom: -250px;"
在垂直溢出被截止的元素上,250
表示您下拉列表所需的像素数等 .在使用Cycle jQuery插件时,我最初发现了一种绕过它的CSS方法 . 循环使用JavaScript将我的幻灯片设置为
overflow: hidden
,因此当我将图片设置为width: 100%
时,图片看起来会垂直切割,因此我强制它们在!important
处可见,并且为了避免显示幻灯片动画,我将overflow: hidden
设置为幻灯片的容器div . 希望对你有效 .UPDATE - New Solution:
Original problem - > http://jsfiddle.net/xMddf/1/(即使我使用
overflow-y: visible
它变成了"auto",实际上是"scroll" . )The new solution - > http://jsfiddle.net/xMddf/2/(我找到了一个解决方法,使用包装器div将
overflow-x
和overflow-y
应用于不同的DOM元素,因为James Khoury建议将visible
和hidden
组合到单个DOM元素的问题 . )我尝试构建一个 fixed positioned sidebar 时,遇到垂直 scrollable content 和嵌套 absolute positioned children 为 displayed outside sidebar boundaries ,我遇到了这个问题 .
我的方法包括单独申请:
侧栏元素的
overflow: visible
属性一个
overflow-y: auto
属性到侧边栏内包装请查看以下示例或online codepen .
我使用了
content+wrapper
方法... but 我做了与目前为止提到的不同的事情:我确保我的包装器边界没有与我希望可见的方向上的内容边界对齐 .重要说明:根据
position
,overflow-*
等各种css组合,很容易让content+wrapper, same-bounds
方法在一个浏览器或另一个浏览器上工作......但我从来没有用这种方法让它们全部正确(Edge,Chrome,苹果浏览器, ...) .但当我有类似的东西:
......所有的浏览器都很开心 .
There is now a new way of addressing this issue - 如果从需要溢出y的容器中移除position:relative,你可以看到overflow-y visible和overflow-x hidden,反之亦然(有overflow-x visible和overflow-y hidden,只是确保具有visible属性的容器不是相对定位的) .
有关详细信息,请参阅CSS Tricks的这篇文章 - 它对我有用:https://css-tricks.com/popping-hidden-overflow/