Вчера узнал кое-что прикольное. Да, вы уже догадались… Я научился обновлять переменные CSS с помощью Javascript. как нам это сделать? Сначала нам нужно определить переменные внутри наших тегов ‹style›. Мы хотим поместить его в самую верхнюю точку кода, поэтому продолжим и поместим его в корневой каталог.

:корень {

— база: #ffc688;

— интервал: 10px;

— размытие: 10 пикселей;

}

Какие — ? Вот как мы определяем переменную в CSS. Теперь, когда у нас есть переменные. Мы можем начать использовать их в наших тегах изображений. Чтобы использовать наши переменные, вы просто заходите в элемент в CSS и добавляете var(-prop) к свойствам. Вот код, который я использовал:

картинка {

padding: var( — интервал);

background: var( — base);

фильтр: размытие(вар(-размытие))

}

Теперь, когда мы все подключены, мы будем использовать Javascript, чтобы позволить пользователю переключать свойства через интерфейс. Мы начнем с определения переменной, которая нацелена на все входные данные в разделе controls, а затем создадим функцию с именем handleUpdate и зарегистрируем значение в консоли. чтобы увидеть, работает ли код. Для этого нам нужно добавить прослушиватель событий, когда в наши входные данные вносятся изменения, и каждый раз запускать handleUpdate.

const ввод = document.querySelectorAll(‘.controls input’)

функция handleUpdate(){

console.log(это.значение)

}

input.forEach(input => input.addEvenetListener('change', handleUpdate))

Теперь мы можем видеть вносимые изменения, но по-прежнему не можем переключать свойства изображения. Стоит отметить, что у нас есть атрибуты данных во входных данных. Это просто дополнительная информация для разработчиков. В этом упражнении используется атрибут данных data-sizing, который соответствует "px". Поскольку только 2 из 3 входных данных имеют атрибуты данных, мы создадим переменную для хранения суффиксов, ИЛИ оставим ее пустой.

const ввод = document.querySelectorAll(‘.controls input’)

функция handleUpdate(){

константный суффикс = this.dataset.sizing || “ “

}

input.forEach(input => input.addEvenetListener('change', handleUpdate))

Мы добавим еще один слушатель событий к перемещению мыши на входах, а также определим логику обновления свойств внутри handleUpdate. Мы можем сделать это с помощью document.documentElement.style.setProperty. Используя ES6, мы можем внедрить свойство (this.name) и необходимые изменения (this.value).

const input = document.querySelectorAll(‘.controls input’)

функция handleUpdate () {

const суффикс = this.dataset.sizing || “ “

document.documentElement.style.setProperty(` — ${this.name}`, this.value + суффикс)

}

input.forEach(input => input.addEvenetListener('change', handleUpdate))

input.forEach(input =› input.addEvenetListener(‘mousemove’, handleUpdate))