Supongamos que tiene algo de estilo y el marcado:
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>
Cuando ves esto. El <ul>
tiene una barra de desplazamiento en la parte inferior, aunque he especificado los valores visibles y ocultas para el desbordamiento x / y.
(observado en Chrome 11 y opera (?))
Supongo que debe haber alguna especificación de w3c o algo que indique que esto suceda, pero por mi vida no puedo entender por qué.
ACTUALIZACIÓN: - Encontré una manera de lograr el mismo resultado agregando otro elemento envuelto alrededor del ul
. Echale un vistazo.
overflow-x hidden;
, elimina el desplazamiento, pero como necesito los elementos li para ocultar el borde en la parte inferior, da el efecto discontinuo deseado. No entiendo por quéoverflow-x: visible
crea una barra de desplazamiento. No debería afaik.overflow: hidden;
y el niño insertado alrededor del<ul>
seroverflow: visible
.Respuestas:
Después de algunas búsquedas serias, parece que encontré la respuesta a mi pregunta:
de: http://www.brunildo.org/test/Overflowxy2.html
También la especificación W3C dice:
Version corta:
Si está utilizando
visible
unooverflow-x
u otrooverflow-y
y algo distintovisible
al otro, elvisible
valor se interpreta comoauto
.fuente
overflow-x:visible
duranteoverflow-y:hidden
sin un corte del padre / hijo? Bastante litera, en mi opinión.overflow-y: visible
. Boo CSS!otro truco barato, que parece hacer el truco:
style="padding-bottom: 250px; margin-bottom: -250px;"
en el elemento donde el desbordamiento vertical se está cortando, con la250
representación de tantos píxeles como sea necesario para su menú desplegable, etc.fuente
position: relative
no era posible quitar o usar envoltorios, esta era la única solución que funcionaba, aunque también requería agregar muchos márgenes feos a los elementos secundarios dentro del elemento que quería configuraroverflow-x: hidden
para compensar el hacky relleno. Sin embargo, esto me salvó, ¡así que gracias!Originalmente encontré una forma de CSS para evitar esto cuando uso el complemento Cycle jQuery. Cycle usa JavaScript para configurar mi diapositiva
overflow: hidden
, por lo que cuando configuro mis imágenes para quewidth: 100%
las imágenes se vean cortadas verticalmente, las obligué a que sean visibles!important
y eviten mostrar la animación de diapositivas fuera de la caja que configuréoverflow: hidden
en el contenedor div del diapositiva. Espero que funcione para ti.ACTUALIZACIÓN - Nueva solución:
Problema original -> http://jsfiddle.net/xMddf/1/ (Incluso si lo uso
overflow-y: visible
se convierte en "auto" y en realidad "scroll").La nueva solución -> http://jsfiddle.net/xMddf/2/ (Encontré una solución usando un contenedor wrap para aplicar
overflow-x
yoverflow-y
para diferentes elementos DOM como James Khoury aconsejó sobre el problema de combinarvisible
yhidden
para un solo elemento DOM).fuente
overflow-x:visible;
yoverflow-y:hidden
. No de la otra manera.overflow-x
e-y
: violín actualizada .Me he encontrado con este problema al intentar crear una barra lateral de posición fija con contenido desplazable verticalmente y elementos secundarios anidados en posición absoluta que se mostrarán fuera de los límites de la barra lateral .
Mi enfoque consistía en aplicar por separado:
overflow: visible
propiedad para el elemento de la barra lateraloverflow-y: auto
propiedad del envoltorio interno de la barra lateralPor favor, consulte el ejemplo a continuación o un código en línea .
fuente
auto
lugar dehidden
.position
Utilicé el
content+wrapper
enfoque ... pero hice algo diferente a lo mencionado hasta ahora: me aseguré de que los límites de mi envoltorio NO se alinearan con los límites del contenido en la dirección en la que quería ser visible .Nota importante: Fue bastante fácil de conseguir el
content+wrapper, same-bounds
enfoque de trabajo en un navegador u otro dependiendo de varias combinaciones de CSSposition
,overflow-*
etc ... pero nunca podría utilizar este enfoque para conseguir que todo correcto (Edge, Chrome, Safari. ..).Pero cuando tuve algo como:
... todos los navegadores estaban contentos.
fuente
Ahora hay una nueva forma de abordar este problema : si elimina la posición: relativa del contenedor que necesita tener el desbordamiento-y visible, puede tener desbordamiento-y visible y desbordamiento-x oculto, y viceversa (tener desbordamiento- x visible y overflow-y oculto, solo asegúrese de que el contenedor con la propiedad visible no esté relativamente posicionado).
Vea esta publicación de CSS Tricks para más detalles: funcionó para mí: https://css-tricks.com/popping-hidden-overflow/
fuente