Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   scrollIntoView() и scrollIntoView(false) (https://javascript.ru/forum/dom-window/83075-scrollintoview-i-scrollintoview-false.html)

Vahan60 07.09.2021 15:08

scrollIntoView() и scrollIntoView(false)
 
Доброго времени суток.

Дано: имеется страница из двух блоков, расположенных один над другим.
Надо: написать код JS, который:
первое - при клике на верхний блок прокрутит страницу вниз, закрыв верхний блок и открыв нижний, а по клику на нижний блок прокрутит страницу вверх, закрыв нижний блок и открыв верхний;
второе - запретить посетителю страницы поднимать и опускать страницу скроллом ролика мыши или Drag’n’Drop. Вверх-вниз только через клик.

И если с первай частью задания я справился, то со второй проблемы. Попытка запретить скролл приводит к тому, что не срабатывают и клики.

Посоветуйте, пожалуйста, как решить проблему.

<!DOCTYPE html>
 
<html>

  <head>
    <meta charset="UTF-8" />
	<meta name="viewport" content="width=device-width" />
    <title>TEST</title>
	<style>
	   body{ display: flex; align-items: flex-start; justify-content: flex-start; margin: 0px; }
       body::-webkit-scrollbar{ width: 0; }
      .field { display: flex; flex-direction: column; align-items: center; justify-content: flex-start;
               width: 100vw; height: 202vh; padding: 0px; }
       #menu { width: 80%; height: 70%; background: blue; margin-top: 0%; }
       #dial { width: 80%; height: 70%; background: red; margin-top: 1%; }
	</style>
	
  </head>

  <body>
	
	<div class = "field">	    
		<div id = "menu"></div>		
        <div id = "dial"></div> 				
	</div>
	
	<script>
	   let menu = document.getElementById("menu");
         menu.addEventListener("click", function({dial.scrollIntoView(false)});
 
          let dial = document.getElementById("dial");	   
         dial.addEventListener("click", function( ){menu.scrollIntoView()}); 
	</script>
	  
  </body>
  
</html>

Vahan60 08.09.2021 07:43

Задача решена.
В <body> добавляем overflow:hidden;
В <script>:
заменяем {dial.scrollIntoView(false)} на {location.href="#dial"} (строка 29)
заменяем {menu.scrollIntoView()} на {location.href="#menu"} (строка 32).


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