2013-05-09 34 views
12

Natknąłem się ostatnio na dziwną rzecz z overflow: hidden;. Ustawiam go na element, a następnie chcę przekształcić w nim elementy za pomocą translate(), gdy tłumaczy się w kierunku ujemnym, będzie ukryty, ale jeśli przetłumaczy się w kierunku dodatnim, nie będzie ukryty. W przeglądarkach na komputery tak naprawdę nie wyświetla się, ale można do niego dotrzeć przy odrobinie pracy z myszą. A na urządzeniach mobilnych to tylko zwoje, więc to jest najgorsze.przepełnienie: ukryty nie działa z tłumaczeniem w dodatnim kierunku

Oto przykład pokazujący go: http://cssizer.com/KLHlPShW

+0

Na co powinniśmy patrzeć na tej stronie? –

+0

Wygląda na to, że na Androidzie działa dobrze, ale na iOS mogę przewijać całą drogę do przycisku, który ma '-webkit-transform: translateX (3212px);' – gerhard

Odpowiedz

14

Więc pracuję z czymś podobnym cały dzień i uświadomiłem sobie, że podczas gdy miałem

html, body {overflow:hidden; }

... jeśli dodać position:absolute lub position:relative do html i body, rozwiązuje problem.

+4

Interesujący Spróbuję, dzięki. Zapomniałem pisać tutaj, ale naprawiłem problem z dodaniem do przetłumaczonego elementu 'position: fixed'. – gerhard

+0

@gerhard to 2016, a ja mam ten sam problem ... Pozycja: naprawiona - problem został rozwiązany. Dziękuję Ci! – Edgar

1

Zawijam wszystko w pojemniku div następującym kodem. Jawnie ustawić przepełnienie odpowiednio w obu kierunkach. Dzięki temu oś X nie będzie przewijana w Safari na iOS, nawet jeśli elementy są przetłumaczone z prawej strony głównego obszaru zawartości.

Jednak przewijanie jest znacznie pogorszone, chyba że dodasz -webkit-overflow-scrolling: touch;. Zajęło mi to dużo czasu! Mam nadzieję, że pomaga komuś innemu.

.scrollContainer { 
    position: absolute; 
    width: 100%; 
    height: 100%; 
    overflow-y: scroll; 
    overflow-x: hidden; 
    -webkit-overflow-scrolling: touch; 
} 
+1

Wielkie dzięki, koleś! Działa jak czar –

+0

@DemvenWeir Nie ma za co!^_ ^ –

0

miałem dokładnie ten sam problem, a oto jak naprawiłem go:

HTML

<div id="container">  <!-- defines "boundaries" of content --> 
    <div id="content">  <!-- part of it must be hidden --> 
    </div> 
</div> 

CSS

#container { 
    overflow-x:hidden; 
    overflow-y:hidden; 
    z-index:2; 
} 

#content { 
    /* Translation code ...*/ 
    z-index:1; 
} 

Oto JSFiddle .