Конспект «Динамические стили элементов»
Свойство style
С помощью свойства style можно управлять стилями элемента. После style через точку указывают то CSS-свойство, которое нужно изменить. Чтобы изменить стиль элемента, указанному свойству нужно присвоить новое значение
let element = document.querySelector('p');
// Зададим абзацу зелёный цвет текста
element.style.color = 'green';Стили, заданные с помощью свойства style, работают так же, как если бы их указали в разметке в атрибуте style самого элемента. Они имеют больший приоритет, чем CSS-правила из файла со стилями.
В JavaScript нельзя использовать дефисы в названиях свойств, вместо этого для разделения слов используется «верблюжий» стиль. Например:
| CSS | JаvaScript |
|---|---|
| font-size | fontSize |
| background-color | backgroundColor |
| border-left-width | borderLeftWidth |
Если мы получаем данные из поля ввода, то чтобы задать единицы измерения, используем конкатенацию:
longread.style.fontSize = sizeSetting.value + 'px';
// Допустим, пользователь ввёл число 16
longread.style.fontSize = 16 + 'px'; // Результат: '16px'Чтобы узнать, какие стили уже применяются к элементу, используйте метод window.getComputedStyle.
Обработчики onchange и oninput
Чтобы отслеживать изменения в поле ввода, можно использовать обработчики onchange и oninput. Разница между ними заключается в следующем:
onchangeсрабатывает, если значение поля ввода изменилось и пользователь закончил ввод. Например, если пользователь передвинул ползунок и отпустил его. Или ввёл что-то в текстовое поле и убрал из него курсор.oninputсрабатывает на каждое изменение значения, независимо от того, завершил пользователь ввод или нет. Например, он сработает на каждое изменение положения ползунка, даже если пользователь продолжает его двигать. И на каждый новый символ в текстовом поле, даже если пользователь продолжает вводить текст.
Когда мы меняем размер элементов, браузеру приходится перерисовывать страницу. Это трудоёмкая операция, и лучше выполнять её как можно реже. Используйте обработчик oninput с осторожностью.
Свойство type
Для ввода пароля используется специальное поле с типом password. Особенность этого поля в том, что введённый текст в нём маскируется. Обычно браузеры используют для этого звёздочки или кружочки. Подробнее о типах полей вы можете узнать из этой части.
Чтобы показать пароль, нужно превратить поле ввода пароля в текстовое поле ввода. Для этого надо изменить его тип на text. За тип в JavaScript отвечает свойство type. Чтобы изменить тип поля ввода, нужно записать в свойство type новое значение:
let input = document.querySelector('input');
// Сделаем input текстовым полем ввода
input.type = 'text';Чекбокс и свойство checked
Чекбокс — это поле ввода, у которого может быть одно из двух состояний: включён или выключен. Обычно в браузерах на состояние чекбокса указывает галочка: если галочка стоит — чекбокс включён, если галочки нет — выключен. Когда галочку ставят или убирают, состояние чекбокса меняется. Чтобы отследить это событие из скрипта, используем обработчик событий onchange.
Чтобы проверить состояние чекбокса, используем свойство checked. Это свойство имеет булево значение: true, если чекбокс включён, и false, если нет.
// Проверяем, включён ли чекбокс
if (showPassword.checked) {
// Инструкции выполнятся, если чекбокс включён
} else {
// Инструкции выполнятся, если чекбокс выключен
}Операторы сравнения и умножение
В JavaScript есть несколько операторов сравнения. Эти операторы работают так же, как в математике:
1 > 2; // Оператор «больше»
1 < 2; // Оператор «меньше»
1 >= 2; // Оператор «больше или равно»
1 <= 2; // Оператор «меньше или равно»Операторы «больше или равно» и «меньше или равно» обозначаются двумя символами: угловой скобкой и знаком равно.
Умножение в JavaScript обозначается звёздочкой:
console.log(3 * 10); // Выведет: 30Конструкция else if
Конструкция else if позволяет добавить в условную конструкцию альтернативную ветку с условием. После else if в круглых скобках указывают условие, а в фигурных — инструкции, которые должны выполниться, если это условие вернёт true.
if (условие-1) {
// Инструкции выполнятся, если истинно условие-1
} else if (условие-2) {
// Инструкции выполнятся, если условие-1 ложно, а условие-2 истинно
} else {
// Инструкции выполнятся, если оба условия ложны
}JavaScript выполняет инструкции сверху вниз. Сначала он проверит условие-1. Если оно истинно, выполнятся инструкции из первой ветки. Если условие-1 ложно, JavaScript проверит условие-2. Если оно истинно, выполнятся инструкции из второй ветки. Если оба условия ложны, то выполнятся инструкции из ветки else.
Веток else if в условной конструкции может быть сколько угодно. Но чем их больше, тем запутаннее получается код.