假设你有一些样式和标记:

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规范或什么东西告诉这发生了,但对于我的生活,我不明白为什么。

JSFiddle

更新:-我找到了一种方法,通过添加另一个元素包裹在ul实现相同的结果。来看看。


当前回答

如果你只想让第一行可见(但仍然需要溢出),一个小“hack”非常有效:

将间隙设置得很高,这样你就可以确定第二行被推出屏幕-例如:

gap: 10000rem;

它真的很俗气,但对于需要溢出菜单的桌面导航之类的东西非常有用。

其他回答

如果你只想让第一行可见(但仍然需要溢出),一个小“hack”非常有效:

将间隙设置得很高,这样你就可以确定第二行被推出屏幕-例如:

gap: 10000rem;

它真的很俗气,但对于需要溢出菜单的桌面导航之类的东西非常有用。

我最初发现了一个CSS方式绕过这个时,使用循环jQuery插件。Cycle使用JavaScript将我的幻灯片设置为overflow: hidden,所以当我将图片设置为width: 100%时,图片看起来会垂直切割,所以我强迫它们可见!important,为了避免显示幻灯片动画,我设置了overflow: hidden到幻灯片的容器div。希望这对你有用。

更新-新的解决方案:

原来的问题-> http://jsfiddle.net/xMddf/1/ (即使我使用overflow-y: visible,它也变成了“auto”和“scroll”。)

#content {
    height: 100px;
    width: 200px;
    overflow-x: hidden;
    overflow-y: visible;
}

新的解决方案-> http://jsfiddle.net/xMddf/2/ (我发现了一种变通方法,使用包装器div对不同的DOM元素应用overflow-x和overflow-y,就像James Khoury在将可见和隐藏结合到单个DOM元素的问题上所建议的那样。)

#wrapper {
    height: 100px;
    overflow-y: visible;
}
#content {
    width: 200px;
    overflow-x: hidden;
}

经过一番认真的搜索,我似乎找到了我问题的答案:

来自:http://www.brunildo.org/test/Overflowxy2.html

在Gecko, Safari, Opera中,“可见” 与连用时也变成auto ' hidden '(换句话说就是' visible ') 和组合时变成auto 还有什么不同的吗 “可见的”)。Gecko 1.8, Safari 3, Opera 9.5是相当一致的。

W3C规范还说:

' overflow-x '的计算值 ' overflow-y '和their是一样的 指定的值,除了一些 与“visible”的组合则不是 可能:如果指定为 ' visible '另一个是' scroll '或者 auto,然后visible设为 “汽车”。的计算值 ' overflow '等于computed 如果' overflow-y '则' overflow-x '的值 是一样的;否则就是对 ' overflow-x '的计算值 “overflow-y”。

短版:

如果你对overflow-x或overflow-y使用了visible,而对另一个使用了非visible,则可见值将被解释为auto。

对于我的用例,添加overflow-x:visible;溢出- Y:剪辑到有溢出的div似乎给了我想要的效果,隐藏溢出在Y轴上,而不是给我一个滚动条在X轴上(我有一个旋转滑块,在加载图像全尺寸之前缩放它们再次下降,这些图像在加载时占据了页面高度的75%,因此不想溢出- Y)。

不需要父包装器div,只需要在溢出元素上设置一个固定的高度。我知道这个方法可能并不适用于所有人,但肯定能帮助到一些人。

现在有一种新的方法来解决这个问题——如果你从需要overflow-y可见的容器中删除position: relative,你可以让overflow-y可见而overflow-x隐藏,反之亦然(有overflow-x可见和overflow-y隐藏,只是确保具有可见属性的容器不是相对定位的)。

查看这篇文章的CSS技巧更多的细节-它为我工作:https://css-tricks.com/popping-hidden-overflow/