小编典典

CSS溢出-x:可见;和溢出-y:隐藏;导致滚动条问题

all

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

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. 看看这个。


阅读 143

收藏
2022-03-08

共1个答案

小编典典

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

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

在 Gecko、Safari、Opera
中,“isible”与“idden”结合时也变为“uto”(换句话说:“isible”与其他任何不同的东西结合时变为“uto” “可以”)。Gecko
1.8、Safari 3、Opera 9.5 非常一致。

W3C 规范也说:

“干verflow-x”和“干verflow-y”的计算值与它们的指定值相同,除了某些与“榲isible”的组合是不可能的:如果指定为“isible”
……另一个是“荣croll”或“榓uto”,则“榲isible”设置为“榓uto”。如果“干verflow-y”相同,则“干verflow”的计算值等于“干verflow-x”的计算值;否则为“干verflow-x”和“干verflow-y”的计算值对。

简洁版本:

如果您使用visiblefor one
overflow-xoroverflow-y和其他东西visible,则该visible值被解释为auto.

2022-03-08