2012-02-13 25 views
15

Jak mogę pozwolić obiektowi DOM, np. Div, móc przewijać za pomocą kółka myszy lub klawiszy strzałek (np. overflow:scroll), ale nie pokazywać paska przewijania (jak overflow:hidden)?Przewijany, ale bez paska przewijania

+0

Dlaczego ta downvoted? – sawa

+1

Nie mam pojęcia - zamierzam to zrekompensować;) –

Odpowiedz

5

Można ustawić powiązanie detektora zdarzeń ze scrolldown/scrollup (poprzez zdarzenie koła myszy, patrząc na event.wheelDelta na rozmiar calc i directino z przewijaniem) i ręcznie ustawić div absolut pozycji bezwzględnej w innej stałej wysokości absolutnie/względnie pozycjonowany div . Tak więc, przewijając w dół, zmniejsz pozycję y wewnętrznego div, a podczas przewijania w górę zwiększasz pozycję y.

W przypadku klawiszy strzałek należy po prostu powiązać podobną funkcję z funkcją sprawdzania zdarzeń klawiszy strzałek w dół/w górę, stosownie do potrzeb.

Zrobiłem jsfiddle exampling tę technikę tutaj: http://jsfiddle.net/wsmithrill/U7ju8/32/

+0

Cudownie. Dzięki. – sawa

2

Jeśli chcesz pominąć JavaScript w ogóle, można spróbować co zasugerowałem here.

Zasadniczo, masz div pojemnika, który jest nieco węższy niż div zawartości. Ustaw kontener ustawiony na przepełnienie: ukryty, ale element div ustawiony na przepełnienie: przewiń. Jeśli kontener jest węższy, ukryje pasek przewijania.

+0

Przebiegły. Lubię to. – SpaceBeers

+0

Cieszę się, że Ci się podoba! Niestety, jest to straszne z punktu widzenia użyteczności - w jaki sposób użytkownik powinien wiedzieć, że jest więcej treści poza witryną? – chipcullen

+1

To prawda, ale mam zdrowy szacunek dla takich sztuczek ... – SpaceBeers

0

jeśli może to potrzebne, aby zatrzymać przewijanie w dół po osiągnięciu top:

var top_val = $("#inner").css("top"); 
if (top_val.indexOf("-") > -1) 
{ 
    $("#inner").css("top", parseInt($("#inner").css("top"), 10) + 5 + "px"); 
} 
Powiązane problemy