2011-08-03 13 views
6

Mam stronę, na której nie chcę, aby użytkownik mógł przewijać. Aby temu zapobiec, po prostu ustawiam ciało tak, by miał ukryty styl przepełnienia. Jest to wystarczające do momentu, w którym użytkownik spróbuje wybrać tekst, a następnie przeciągnie go na dół. Następnie okno przewija się, a użytkownicy przeciągają. Jak mogę temu zapobiec?Zatrzymaj przewijanie strony podczas wybierania/przeciągania tekstu.

+2

Dostaniesz lepsze odpowiedzi, jeśli post aktualny kod, którego używasz. Jeśli możesz stworzyć przykład na żywo za pomocą czegoś takiego jak http://jsfiddle.net, który jest jeszcze lepszy. – tw16

+0

Myślę, że twoja metoda jest trochę wadliwa, jeśli nie chcesz, aby użytkownik zobaczył, że coś jej nie pokazuje, lub jeśli jej dane są potrzebne dla jakiegoś dziwnego ekranu użycia hack: brak css lub ukryte pola wejściowe. Próba uniemożliwienia podstawowej podstawowej funkcjonalności przeglądarki to przepis na awarię użyteczności. – Louis

+0

Przepraszam za moją wadliwą metodę. W niektórych momentach podczas animacji elementy div są skalowane za pomocą transformacji CSS, a zatem obejmują obszar poza widocznym obszarem. W takich momentach przeciąganie użytkownika powoduje usunięcie ich z pożądanego obszaru widoku. Miałem tylko nadzieję, że zdarzyło się jakieś zdarzenie, które zostało wystrzelone podczas tego procesu wybierania/przeciągania, który mogłem przechwycić. – rewolf

Odpowiedz

17

użyć position: fixed;. Jeśli chcesz, aby całe ciało, aby nie być przewijane:

body 
{ 
    position: fixed; 
} 

EDIT: po otrzymaniu komentarza od użytkownika Sam zdecydowałem się wrócić i przetestować tę metodę po raz kolejny. Teraz, gdy rozważyć ją i troskę Sama że będzie bałagan ze stylami, doszedłem do wniosku, że następnym będzie lepszym rozwiązaniem:

html 
{ 
    position: fixed; 
    width: 100%; 
    height: 100%; 
} 

zapobiega niektórych witryn (stackoverflow zestawie) z kończącym się w lewo wyrównane. Używa również najwyższego dostępnego węzła, który powinien był być zrobiony w pierwszej kolejności.

+10

Chcę cię pocałować. no homo – rewolf

+2

O_o ​​Wezmę to w pewien sposób "w uścisk dłoni". –

+0

Niezbyt użyteczne dla urządzeń mobilnych, ponieważ dodaje pasek adresu Safari. –

2

Próbowałem odpowiedzi Josepha, ale może to zepsuć wiele stylu na stronie.

Innym sposobem byłoby ustawienie przelewu na stronie internetowej do ukrytego, jest to również dalekie od ideału, ale nie zepsuło to żadnej stylizacji dla mnie, mam nadzieję, że jest to pomocne dla kogoś.

body { 
    overflow-y: hidden;  
} 
+0

Jest to moim zdaniem bardziej poprawne rozwiązanie. 'overflow' dotyczy bezpośrednio przewijania strony. Chociaż nie koryguje to problemu z poruszaniem się oryginalnego plakatu podczas podświetlania tekstu, powinno to pomóc w wielu przypadkach, w których zapobiegają przewijaniu. –

+2

Tak, już wspomniałem (w moim pytaniu) o czymś, z czego korzystałem, dopóki nie spróbowałem wybrać tekstu. – rewolf

+0

o mój, całkowicie błędnie przeczytałem pytanie, byłem tak zajęty szukaniem odpowiedzi. Przepraszam, mój zły – Samuel

2

To może być pomocne

html 
{ 
    overflow: hidden; 

} 
+1

To jest naprawdę niebezpieczne, ponieważ ukryje pasek przewijania i da fałszywe wrażenie, że ciało nie jest przewijane. Nie zapobiegnie to przewijaniu strony, gdy użytkownik przeciągnie dowolny zaznaczony tekst. –

Powiązane problemy