Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.01.2021, 06:24
Аспирант
Отправить личное сообщение для maxim1978 Посмотреть профиль Найти все сообщения от maxim1978
 
Регистрация: 07.05.2019
Сообщений: 38

Как сделать задержку скрола ?
Я нарисовал SVG и повесил событие wheel на него

Теперь не могу добиться того что бы при попадании этого SVG в центр экрана временно пропала прокрутка по оси Y ...

Этот вопрос задал на stackoverflow: https://ru.stackoverflow.com/q/1226349/308951

Как это делается правильно ?

Моя попытка это решить (провальная): https://codepen.io/topicstarter/pen/wvzmvwK

Последний раз редактировалось maxim1978, 02.01.2021 в 06:26. Причина: дополнил
Ответить с цитированием
  #2 (permalink)  
Старый 02.01.2021, 11:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

svg rotate center
maxim1978,
вариант ...
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  html,
body,
#scroll,
section {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}

#scroll {
  display: flex;
  align-items: center;
  justify-content: center;
}

#circle {
  stroke: #000;
  stroke-width: 2;
  fill: none;
}

#res {
  position: fixed;
  top: 20px;
  right: 20px;
}

#crs {
  transition: 1.2s linear;
}

#crs.rotate{
   transform: rotate(360deg);
}

</style>
</head>

<body>
<section></section>
<div id="scroll">
  <svg id="svg" viewBox="-250 -250 500 500" xmlns="http://www.w3.org/2000/svg" width="400">
  <circle r="200" id="circle" />
  <g id="crs">
    <circle r="50" cx="-200" fill="red" />
    <circle r="50" cx="200" fill="green" />
    <circle r="50" cy="-200" fill="blue" />
    <circle r="50" cy="200" fill="yellow" />
  </g>
</svg>
</div>
<section></section>
<script>
let div = document.querySelector("#scroll");
let body = document.querySelector("body");
document.addEventListener("scroll", function(e) {
   let {top} = div.getBoundingClientRect(),
       center = top < 10;
       if(center) {
       div.scrollIntoView();
       body.style.overflow = "hidden";
       crs.classList.add("rotate");
       }
})
</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 02.01.2021, 13:21
Аспирант
Отправить личное сообщение для maxim1978 Посмотреть профиль Найти все сообщения от maxim1978
 
Регистрация: 07.05.2019
Сообщений: 38

спасибо огромное
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать вертикальное меню с анимацией? Wimko jQuery 3 28.06.2020 19:31
Как сделать короткую функцию для forEach? nastya97core Общие вопросы Javascript 11 14.05.2020 07:12
Как сделать задержку при закрытии модального окна нажатием на кнопку? Alex_White Общие вопросы Javascript 1 06.02.2020 00:34
Как сделать задержку отправки формы на javascript? Akimserg Общие вопросы Javascript 12 19.10.2015 13:15
Как сделать калькулятор и с чего начать? A.P. Yellowman Общие вопросы Javascript 3 15.11.2013 21:32