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

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实现相同的结果。来看看。


当前回答

我也面临着同样的问题,下面的解决方案工作(样式应用于父块)

overflow-y: visible;
overflow-x: clip;

其他回答

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

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

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

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

gap: 10000rem;

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

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

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

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

来自: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-y: visible;
overflow-x: clip;