Ответ:
Было несколько вещей, которые нужно было изменить, чтобы перевести это в рабочее состояние.
Вы объявили slider
с .value
.Это указывает не на элемент, а на его значение.
Вам необходимо объявить переменную myCanvas
для указания на элемент.
Вам необходимо добавить юнит для вашего CSS
обновления.Это может быть px
(чаще всего), em
, rem
, vw
, vh
и т. Д. Простое целое число (как указано в slider.value
) его не обрежет.
padding
визуально не может быть представлено как негатив, поскольку он не рассчитан на inset
ниже значения 0
.Это означает, что ваш слайдер на -50
не имеет особого смысла.В приведенном ниже фрагменте я обновил его до диапазона 0-100
.
Код:
var slider = document.getElementById("horizontal-padding"),
myCanvas = document.getElementById("myCanvas");
slider.addEventListener('change', function() {
myCanvas.style.padding = slider.value + "px";
});
Пример:
var slider = document.getElementById("horizontal-padding"),
myCanvas = document.getElementById("myCanvas");
slider.addEventListener('change', function() {
myCanvas.style.padding = slider.value + "px";
});
canvas {
border: 1px solid black;
}
<form class="range-field mt-2">
<input type="range" min="0" max="100" value="0" id="horizontal-padding"
step="2" />
</form>
<canvas id="myCanvas">Your browser does not support HTML5 Canvas</canvas>
Примечание: Я добавил границу к myCanvas
в CSS, чтобы изменения заполнениябыть видимым.
В сторону: создание плавного перехода
change
- это обработчик событий, который вы используете в настоящее время.Это может сделать обновление стиля прерывистым , потому что обновление представляет собой повторный рендеринг после освобождения дескриптора ползунка.
Если вы хотите получить более плавное представление об изменении заполнения, вы можете использовать событие input
.Это событие постоянно отображается на основе изменений, внесенных в элемент slider
, а не только в результате окончательного выбора, и доступно во всех современных браузерах, включая IE9 и Edge. Для получения дополнительной информации см. MDN
Пример:
var slider = document.getElementById("horizontal-padding"),
myCanvas = document.getElementById("myCanvas");
slider.addEventListener('input', function() {
myCanvas.style.padding = slider.value + "px";
});
canvas {
border: 1px solid black;
}
<form class="range-field mt-2">
<input type="range" min="0" max="100" value="0" id="horizontal-padding"
step="2" />
</form>
<canvas id="myCanvas">Your browser does not support HTML5 Canvas</canvas>