Skip to content

Commit ddd9106

Browse files
committed
New chapter: Working with Element Styles
1 parent 11ea3c5 commit ddd9106

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

src/SUMMARY.md

+1
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,4 @@
5454
- [Добавление и удаление элементов в DOM](web_apis/adding_and_removing_elements_in_dom.md)
5555
- [Навигация по DOM](web_apis/navigating_dom.md)
5656
- [Работа с классами элементов](web_apis/working_with_element_classes.md)
57+
- [Работа со стилями элементов](web_apis/working_with_element_styles.md)
133 KB
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
![Пример результата выполнения упражнения](../static/working-with-element-styles.gif)

0 commit comments

Comments
 (0)