2012-05-23 8 views
10

Tworzę witrynę zoptymalizowaną pod kątem urządzeń mobilnych za pomocą wpisywanego tekstu, który filtruje listę podczas pisania. Jest podobny do następującego: http://jquerymobile.com/test/docs/lists/lists-search.htmlPrzewiń stronę w ustawieniach ostrości tekstu dla urządzeń mobilnych?

W przypadku telefonów korzystanie z usługi byłoby korzystne, jeśli po wybraniu wejścia strona przewinęła się w dół, więc dane wejściowe znajdowały się u góry strony. W ten sposób wiele z poniższej listy będzie widocznych podczas pisania. Czy jest to możliwe i czy ktoś ma takie doświadczenie? Dzięki

Odpowiedz

15

Uzgodnione - byłoby miło dla użyteczności.

Jeśli używasz jQuery, to powinno załatwić sprawę:

$('#id-of-text-input').on('focus', function() { 
    document.body.scrollTop = $(this).offset().top; 
}); 
+0

jesteś panem, dziękuję! – Petrogad

+0

Dziękujemy! Czy istnieje opcja przewijania w środku strony? – brunodd

+0

document.body.scrollTop = $ (this) .offset() + (window.innerHeight/2); może? Ale chcesz się upewnić, że klawiatura ekranowa nie nakłada się na wejście (i nie masz pojęcia, co szalona osoba na klawiaturze X może użyć na urządzeniu Y), więc szczyt jest prawdopodobnie bezpieczniejszy. –

6

Lepszym rozwiązaniem byłoby:

$('#id-of-text-input').on('focus', function() { document.body.scrollTop += this.getBoundingClientRect().top - 10 });

Ponieważ offsetTop (lub .offset().top jeśli jQuery) zwracają odległość od pierwszego ustawionego rodzica, gdzie potrzebna jest odległość od wierzchołka document.

getBoundingClientRect().top zwraca odległość między bieżącą pozycją rzutni dla elementu, np. jeśli przewiniesz 300px poniżej elementu, zwróci on -300. Dodanie odległości za pomocą += spowoduje przewinięcie do elementu. -10 jest opcjonalne - aby zwolnić trochę miejsca na górze.

+0

Czy można to zrobić również w Angular? – Siyah

+0

you missing); pod koniec – Equiman

+0

Dodano brakujące ');' –

Powiązane problemy