|
| 1 | +# Работа со стилями элементов |
| 2 | + |
| 3 | +Чаще всего значения стилей элементов известны заранее. Даже если по ходу взаимодействия пользователя со страницей стили должны меняться, то обычно в JavaScript это можно реализовать путём [добавления или удаления классов элементов](./working_with_element_classes.md). Но если заранее описать все стили в CSS-файле всё же не представляется возможным, то JavaScript позволяет устанавливать стили конкретным элементам напрямую. |
| 4 | + |
| 5 | +У объекта каждого элемента в свойстве `style` хранится объект `CSS2Properties`. Через этот объект можно получить текущие значения стилей элемента и установить новые. |
| 6 | + |
| 7 | +```js |
| 8 | +const div = document.querySelector("div"); |
| 9 | +div.style; // Возвращает: объект CSS2Properties |
| 10 | +div.style.height; // Возвращает: "" |
| 11 | +div.style.height = "50px"; |
| 12 | +div.style.width = "100px"; |
| 13 | +``` |
| 14 | + |
| 15 | +Установка стилей через объект `CSS2Properties` равносильна указанию стилей в атрибуте `style` в HTML. Такие стили относятся только к одному элементу и имеют более высокий приоритет, чем стили из CSS-файлов. |
| 16 | + |
| 17 | +```html |
| 18 | +<div style="height: 50px; width: 100px"></div> |
| 19 | +``` |
| 20 | + |
| 21 | +Названия свойств в `CSS2Properties` пишутся так же, как принято писать названия переменных — слитно, с заглавной первой буквой в каждом слове кроме первого. Например, CSS-свойство `background-color` в объекте `CSS2Properties` называется `backgroundColor`. |
| 22 | + |
| 23 | +Значения свойств должны быть строками и указываются в том же формате, что и в CSS-файлах. Например, в качестве значения можно указать размер в пикселях или процентах, цвет в виде `#`-кода или функции `rgb()` и так далее. |
| 24 | + |
| 25 | +```js |
| 26 | +div.style.borderWidth = "2px"; |
| 27 | +div.style.borderStyle = "solid"; |
| 28 | +div.style.borderColor = "#5E6B24" |
| 29 | +div.style.backgroundColor = "rgb(222, 252, 95)"; |
| 30 | +``` |
| 31 | + |
| 32 | +## Упражнения |
| 33 | + |
| 34 | +1. Реализуй страницу с прямоугольной формой, высоту и ширину которой пользователь задаёт сам через поля ввода. |
| 35 | + |
| 36 | +1. На неком сайте бронирования отелей можно оставлять отзывы произвольной длины, но рекомендуемая длина — не менее 250 символов. Разработай поле ввода отзыва, которое при помощи цвета границы подсказывает, насколько длина отзыва близка к рекомендуемой. У пустого поля должна быть серая граница, у поля с 250 или более символами — зелёная, а по мере ввода текста цвет границы должен постепенно перетекать из серого в зелёный, проходя через множество оттенков. |
| 37 | + |
| 38 | +  |
0 commit comments