Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Запретить скроллинг страницы (https://javascript.ru/forum/events/30312-zapretit-skrolling-stranicy.html)

ivan2006bip 31.07.2012 12:49

Запретить скроллинг страницы
 
Здравствуйте!

подскажите, как запретить скроллинг всей страницы? прокрутка будет реализована вот так http://tympanus.net/Tutorials/Websit..._vertical.html и нужно исключить другие способы прокрутки страницы - колесиком мыши, клавишами вврех-вниз...

Deff 31.07.2012 13:08

ivan2006bip,
Так - не пойдёт ?
<style>
html,body{
  overflow-y:hidden;
}
</style>

Dim@ 31.07.2012 13:25

Deff,
стрелками можно крутить ;)

melky 31.07.2012 13:40

Цитата:

Сообщение от ivan2006bip
подскажите, как запретить скроллинг всей страницы? прокрутка будет реализована вот таки нужно исключить другие способы прокрутки страницы - колесиком мыши, клавишами вврех-вниз...

и пальцами вверх\вниз на смартфонах.

немало кодотруда получится, и из-за такой мелочи. а потом ещё в IE надо посмотреть будет... зачем оно вам?

bes 31.07.2012 15:52

Если поместитить в <div style="width: 100%; height: 100%; overflow: hidden"></div>, то проблема вроде решается

Apollo_440 31.07.2012 16:01

Dim@,
а кто не позволяет считать keycode и вернуть браузеру false?

Окончательно вариант решения такой:

CSS:
html,body {overflow-y:hidden}


javascript:
document.body.onkeydown = function(e){
e = e || window.event;
var c = e.keyCode;
//Убирает эвент на стрелках, на pageDown, PageUp, Home, End
if(c>36 && c<41 || c>32 && c<37) return false;
}


Конечно же, если зажать клавишу, то все таки проскачет, это нормально.

Насчет телефонов я думаю не особо будет замудоны с эффектами, дабы у них еще не выросла такая поддержка как у браузеров на ПК.

melky 31.07.2012 16:05

Цитата:

Сообщение от Apollo_440
Окончательно вариант решения такой:

не окончательный, ещё можно скроллить автоскроллом (нажать на колёсико мыши и мотать вниз), и пальцем, на смартфонах.

Цитата:

Сообщение от Apollo_440
Насчет телефонов я думаю не особо будет замудоны с эффектами, дабы у них еще не выросла такая поддержка как у браузеров на ПК.

смищно, на андроиде браузер на вебките мало чем уступает десктопному.


PS вообще, нафиг оно сдалось? запрет скролла в данном случае - пятое колесо, вообще ненужная фича.

Apollo_440 31.07.2012 16:21

Дофига тогда кода нужно писать ради красоты.

Притом если запретить клик на колесико мыши можно лишиться открытия новых вкладок, что ну очень не кстати. Вообщем идея дурная.

bes 31.07.2012 16:32

Мой вариант, я так понимаю, проигнорировали (где там много кода?):)

melky 31.07.2012 16:33

Цитата:

Сообщение от bes (Сообщение 193279)
Мой вариант, я так понимаю, проигнорировали (где там много кода?):)

сделаете пример?

Цитата:

Сообщение от Apollo_440 (Сообщение 193275)
Вообщем идея дурная.

я бы назвал это дизайнерской находкой ;)

bes 31.07.2012 16:50

Цитата:

Сообщение от melky
сделаете пример?

<body style="overflow: hidden">
<div style="width: 100%; height: 100%;overflow: hidden; white-space: nowrap">
<button>click</button><button>click</button><button>click</button><button>click</button>
<button>click</button><button>click</button><button>click</button><button>click</button>
<button>click</button><button>click</button><button>click</button><button>click</button>
<button>click</button><button>click</button><button>click</button><button>click</button><button>click</button>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
</div>
</body>

cyber 31.07.2012 17:25

<!DOCTYPE HTML>
<html>
  <head> 
    <style>
    body{
    overflow:hidden;
    }
    </style>  
  </head>
  <body>

    <script>

      for(var i = 0;i<3000;i++){
      document.writeln(i);
      
      }


    </script>

  </body>
</html>

bes 31.07.2012 17:36

cyber, смотри посты 3 и 4 (например, в FF можно стрелками перемещать)

melky 31.07.2012 17:59

Цитата:

Сообщение от bes (Сообщение 193283)
<body style="overflow: hidden">
<div style="width: 100%; height: 100%;overflow: hidden; white-space: nowrap">
<button>click</button><button>click</button><button>click</button><button>click</button>
<button>click</button><button>click</button><button>click</button><button>click</button>
<button>click</button><button>click</button><button>click</button><button>click</button>
<button>click</button><button>click</button><button>click</button><button>click</button><button>click</button>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
<button>click</button><br><button>click</button><br><button>click</button><br>
</div>
</body>

http://jsbin.com/alalam/3

отлично, на смартфоне даже текст выделяется \ копируется.

bes 31.07.2012 18:06

melky, не понял, речь шла о запрещении скролла, а не о запрещении выделения.
PS: или всё ок имеется в виду:)

ivan2006bip 31.07.2012 18:12

спасибо! сейчас буду пробовать все советы)
запрет скрола, не лично моя прихоть, я бы оставил

cyber 31.07.2012 19:26

Цитата:

Сообщение от bes (Сообщение 193307)
cyber, смотри посты 3 и 4 (например, в FF можно стрелками перемещать)

<!DOCTYPE HTML>
<html>
  <head> 
    <style>
    body{
    overflow:hidden;
    }
    </style>  
  </head>
  <body>

    <script>

      for(var i = 0;i<3000;i++){
      document.writeln(i);
      
      }

      document.body.onkeydown = function (e){
      
      if(e.keyCode==40)return false;
      }
    </script>
 
  </body>
</html>

bes 31.07.2012 19:48

cyber, а если программно прокрутку сделать (как и делается в исходном примере), то можно будет вверх вернуться, а если white-space: nowrap, например, то и вправо можно будет переместиться и т.п. (в итоге приходим к посту 6 :)

cyber 31.07.2012 20:23

Цитата:

Сообщение от bes (Сообщение 193340)
cyber, а если программно прокрутку сделать (как и делается в исходном примере), то можно будет вверх вернуться, а если white-space: nowrap, например, то и вправо можно будет переместиться и т.п. (в итоге приходим к посту 6 :)

да при желание можно поправить и исходный код:)

WebRise 12.09.2013 18:36

тут не прокрутку надо отключать а реализовать по другому.
"overflow:hidden" на всю страницу "width:100%" и "height:100%",
и внутри него через margin-top или top двигать контент

formus 13.07.2016 11:30

Так перестает работать клик с первого раза, если мы показали div например с кнопкой поверх body.

рони 13.07.2016 11:39

formus,


Часовой пояс GMT +3, время: 09:40.