2012-07-17 21 views
16

No funciona correctamente en Chrome o Firefox. ¿Hay alguna solución a esto?overflow-y: visible no funciona cuando overflow-x: hidden está presente

<!DOCTYPE html> 
    <html> 
    <head></head> 
    <body> 
    <h3>overflow-y:visible</h3> 

    with overflow-x:hidden 
    <div style="overflow-x:hidden;overflow-y:visible;width:100px;height:100px; position:relative;background:#666;"> 
     <div style="top:20px;left:20px; width:420px;height:420px;position:absolute;background:#420;"> 
     </div> 
    </div> 

    without overflow-x:hidden 
    <div style="overflow-y:visible;width:100px;height:100px;position:relative;background:#666;"> 
     <div style="top:20px;left:20px; width:420px;height:420px;position:absolute;background:#420;"> 
     </div> 
    </div> 

    </body> 
    </html> 

http://jsfiddle.net/sMNyK/

El escenario de la vida real implica componentes que es absolutamente necesario tener desbordamiento-x: oculto, pero que activará emergente-menús que tienen que ser capaces de liberarse del elemento en la dirección y . ¿Debo colocar esos menús fuera de sus componentes principales o hay una solución mejor?

+3

Vi esto, que parece que sigue siendo un problema en FF (v21) y Chrome (v27). Mi problema: 'overflow-x: visible; overflow-y: hidden; 'pero el recorte se produce en ambos ejes. – Sprintstar

+0

También encontré este problema hoy, tanto en FF como en Chrome. Ciertamente parece un error en lugar de un comportamiento esperado. – smohadjer

+1

consiguiendo problema porque posición: relativo; –

Respuesta

2

creo que se puede conseguir lo que quieres con un extra de envolver div que hace el escondite, pero no tiene la position: relative conjunto (see fiddle):

<div style="overflow-y:visible;width:100px;height:100px;position:relative;background:#666;"> 
    <div style="overflow-x:hidden"> 
    ooooooooooooooooooooooooooooooooooooooooooooooo 
     <div style="top:20px;left:20px; width:420px;height:420px;position:absolute;background:#420;"> 
     </div> 
    </div> 
</div> 
+1

Esto no funcionará, ya que los componentes que requieren overflow-y: visible están dentro de los que requieren overflow-x: hidden – Seppo420

+0

@ user1185421 - Primero, dijo en su pregunta que ponerlos "fuera de los componentes principales" era quizás el única opción. Mi solución debería funcionar siempre y cuando los componentes que requieren 'overflow-x: hidden' no tengan una 'posición' establecida en ellos. Esto permitirá que el elemento 'absolute' se relacione solo con el div que es' overflow-y: visible'. – ScottS

+0

@ user1185421 - [aquí hay un violín] (http://jsfiddle.net/sMNyK/4/) con un amplio 'div 'que contiene el div desprendido. – ScottS

15

Esto probablemente tiene que ver con la cuestión que se aborda aquí: CSS overflow-x: visible; and overflow-y: hidden; causing scrollbar issue

En resumen, cuando se utiliza, ya sea para visibleoverflow-x o overflow-y y algo distinto de visible para el otro, el valor visible se interpreta como auto.

+17

¿Es este un error que los proveedores de navegadores deben corregir o especificar por W3C? Porque es horrible ... – ProblemsOfSumit

+9

2.5 años después y este error todavía existe –

+1

FF 52 y esto todavía sucede. agrega un año más ... – Sebastianb

Cuestiones relacionadas