2014-10-15 9 views
9

Mam stronę ze stałymi nagłówkami i wysuwanymi paskami bocznymi. Z iOS7 w orientacji pionowej, stały nagłówek pozostaje stały, gdy pasek boczny jest widoczny, ale na iOS8 nagłówek przesuwa się lekko w górę w zależności od tego, jak daleko w dół przewijasz. Potrzebuję go, aby pozostać niezmienionym.Nowy błąd pozycji stałej na iOS8

Zobacz ten jsbin: http://jsbin.com/xuyevi/2/

Główne elementy są nagłówek, pasek boczny, a głównej zawartości. Nagłówek jest przymocowany do górnej części ekranu za pomocą ustalonej pozycji i ma indeks Z, który utrzymuje go nad treścią podczas przewijania.

Pasek boczny jest przymocowany do lewej strony ekranu i jest początkowo ukryty po przesunięciu w lewo o jego własną szerokość.

Aby otworzyć pasek boczny, każdy z nagłówków, treści i pasków bocznych jest tłumaczony z prawej strony na szerokość paska bocznego.

Znowu działa to idealnie na iOS7 i wszystkich innych przeglądarkach obsługujących translate3d, a nawet działa poprawnie w iOS8 w orientacji poziomej. Ale w systemie iOS8 w trybie pionowym stały nagłówek zostanie zsunięty z ekranu w zależności od tego, jak daleko użytkownik przewija.

Ponadto za pomocą inspektora Safari widać, że pozycje menu na ekranie są przesunięte względem oczekiwanych pozycji. To znaczy. Wybranie elementu w inspektorze powoduje wyróżnienie obszaru na ekranie, który jest przesunięty względem rzeczywistej lokalizacji, w której jest renderowany.

Czy ktoś inny w tym uczestniczy? Ktoś zna poprawkę?

EDYCJA: Inspektor uważa, że ​​nagłówek pozycji stałej jest dokładnie tam, gdzie powinien być, nawet jeśli faktycznie jest odepchnięty z ekranu.

+0

Też się z tym spotykam. Zauważyłem, że przy użyciu 'position: fixed' szerokość kontenera była o około 4/3 większa niż jego rodzica. Używanie ['position: -webkit-sticky'] (http://updates.html5rocks.com/2012/08/Stick-your-landings-position-sticky-lands-in-WebKit) nie miało tego problemu, ale nie działa w moim przypadku (miał problemy z kryciem/obrazem tła). Jeśli/Kiedy to rozwiążę, zamieściłem tutaj odpowiedź. – iX3

+0

Rozwiązałem to dla naszej witryny, przechodząc od efektu "push" do "slajdu". Główna zawartość pozostaje teraz umieszczona, a pasek boczny i nagłówek przesuwają się nad nią. Wolałbym wrócić do działania, jeśli mogę, ale teraz nie mam czasu, aby spędzać czas na robakach, które wydają się być błędem w iOS8. –

Odpowiedz

0

Próbowałem zrobić coś podobnego (patrz here i here), a następnie stwierdziłem, że Apple opublikowało numer technical note zalecając unikanie ustalonego pozycjonowania. Przysięgam, że działało dobrze w iOS 7, ale teraz z iOS8 już nie "trzyma się".

Problem ten wydaje się ściśle związane z ustawieniem tej meta tag:

<meta name="viewport" content="width=device-width"> 

Zobacz także: Fix div to bottom without using css position

+0

Wygląda na to, że w końcu jest obsługiwany w iOS8.1. http://caniuse.com/#feat=css-fixed – juminoz

1

miałem podobny problem na iOS z wykorzystaniem wielu elementów stałej pozycji i CSS animowane poza płótnie nav . Na długiej stronie "dryf" w górę był blokerem, ponieważ ostatecznie wzrósł do punktu, w którym ukrył spust nav, uniemożliwiając zamknięcie menu. Próbowałem dużo, aby znaleźć poprawkę i ustaliłem obejście: przewiń do góry przed animacją. (#ocnTrigger jest mój off-płótno menu wyzwalania.)

$('#ocnTrigger').click(function(){ 
    $('body').animate({ 
     scrollTop: 0 
    }, 0); 
}); 
4

Trochę późno do partii, ale dodanie

html, body { 
    overflow-x: hidden; 
    overflow-y: scroll; 
} 

ustali offset przewijania na stałe elementy, które są przesunięte (np. Lewy : 20px) w iOS 8.

+0

To działało dla mnie, ale spowodowało to dla mnie pewne problemy z wydajnością - bardzo powolne przewijanie na niektórych stronach. – Kaganar

+2

@Kaganar spróbuj wykonać następujące czynności: 'overflow-y: auto; -webkit-overflow-scrolling: touch; // rozpędu przewijanie na iOS ' – mwld

+0

@mwld, Dzięki za cynk - produkt FYI już wysłane z innym rozwiązaniem, ale na pewno będę dać, że następnym razem będę potrzebować. – Kaganar

Powiązane problemy