Как можно изменить код, чтобы предотвратить прокрутку страницы?

Как изменить код, чтобы ползунок позволял скроллить страницу, при этом сохраняя возможность менять цвет у body? Вот исходный код: 

```
const toggleSwitch = document.getElementById("toggleSwitch");

// Проверяем, есть ли сохраненное состояние в localStorage
const savedState = localStorage.getItem("toggleSwitchState");

// Устанавливаем начальное состояние на основе localStorage или значения по умолчанию
if (savedState === "checked") {
  toggleSwitch.checked = true;
  setTheme("light");
} else {
  toggleSwitch.checked = false;
  setTheme("dark");
}

// Добавляем обработчик событий для ползунка
toggleSwitch.addEventListener("change", function () {
  if (toggleSwitch.checked) {
    setTheme("light");
  } else {
    setTheme("dark");
  }
});

function setTheme(theme) {
  if (theme === "light") {
    document.body.style.backgroundColor = "white";
    document.body.style.color = "black";
    localStorage.setItem("toggleSwitchState", "checked");
  } else {
    document.body.style.backgroundColor = "#050505";
    document.body.style.color = "white";
    localStorage.setItem("toggleSwitchState", "unchecked");
  }
};

<label class="switch">
    <input type="checkbox" id="toggleSwitch">
    <span class="slider round"></span>
</label>
```
  • 23 октября 2023 г. 19:08
Ответы на вопрос 1
Чтобы предотвратить прокрутку страницы, можно добавить следующий код в функцию setTheme после изменения стилей body в соответствии с выбранным темным или светлым режимом:

```javascript
function setTheme(theme) {
  if (theme === "light") {
    document.body.style.backgroundColor = "white";
    document.body.style.color = "black";
    localStorage.setItem("toggleSwitchState", "checked");
  } else {
    document.body.style.backgroundColor = "#050505";
    document.body.style.color = "white";
    localStorage.setItem("toggleSwitchState", "unchecked");
  }

  // Проверяем, есть ли поддержка свойства CSS overscroll-behavior
  if ('scrollBehavior' in document.documentElement.style) {
    // Если поддерживается, устанавливаем значение 'unset' для свойства CSS overscroll-behavior у document.body
    document.body.style.overscrollBehavior = 'unset';
  } else {
    // Если не поддерживается, устанавливаем значение 'hidden' для свойства CSS overflow у document.documentElement
    document.documentElement.style.overflow = 'hidden';
  }
}
```

Чтобы сохранить возможность изменять цвет у body при скроллировании страницы, можно изменить код следующим образом:

```javascript
function setTheme(theme) {
  if (theme === "light") {
    document.body.style.backgroundColor = "white";
    document.body.style.color = "black";
    document.body.style.overflow = 'scroll';
    localStorage.setItem("toggleSwitchState", "checked");
  } else {
    document.body.style.backgroundColor = "#050505";
    document.body.style.color = "white";
    document.body.style.overflow = 'scroll';
    localStorage.setItem("toggleSwitchState", "unchecked");
  }
}
```

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