Skip to content

Commit 9b566ae

Browse files
committed
minor
1 parent 7ebcac7 commit 9b566ae

File tree

2 files changed

+35
-36
lines changed

2 files changed

+35
-36
lines changed

2-ui/1-document/08-styles-and-classes/article.md

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,27 @@
77
1. Создать класс в CSS и использовать его: `<div class="...">`
88
2. Писать стили непосредственно в атрибуте `style`: `<div style="...">`.
99

10-
Использование CSS -- это всегда предпочтительный вариант и не только для HTML, но и для JavaScript.
10+
JavaScript может менять и классы и свойство `style`.
1111

12-
Мы должны манипулировать свойством `style` только в том случае, если классы "не могут справиться".
12+
Классы - всегда предпочтительный вариант по сравнению со `style`. Мы должны манипулировать свойством `style` только в том случае, если классы "не могут справиться".
1313

14-
Например, использование `style` является приемлемым, если мы вычисляем координаты элемента динамически и хотим установить их из JavaScript, подобно этому:
14+
Например, использование `style` является приемлемым, если мы вычисляем координаты элемента динамически и хотим установить их из JavaScript:
1515

1616
```js
1717
let top = /* сложные расчёты */;
1818
let left = /* сложные расчёты */;
19-
elem.style.left = left; // например, '123px'
19+
20+
elem.style.left = left; // например, '123px', значение вычисляется во время работы скрипта
2021
elem.style.top = top; // например, '456px'
2122
```
2223

23-
В других случаях, например, чтобы сделать текст красным, добавить значок фона -- опишите это в CSS и примените класс. Это более гибкое и легкое в поддержке решение.
24+
В других случаях, например, чтобы сделать текст красным, добавить значок фона -- описываем это в CSS и добавляем класс (JavaScript может это сделать). Это более гибкое и легкое в поддержке решение.
2425

2526
## className и classList
2627

2728
Изменение класса является одним из наиболее часто используемых действий в скриптах.
2829

29-
Раньше в JavaScript существовало ограничение: зарезервированное слово типа `"class"` не могло быть свойством объекта. Это ограничение сейчас не существует, но в то время было невозможно иметь свойство `elem.class`.
30+
Когда-то давно в JavaScript существовало ограничение: зарезервированное слово типа `"class"` не могло быть свойством объекта. Это ограничение сейчас отсутствует, но в то время было невозможно иметь свойство `elem.class`.
3031

3132
Поэтому для классов было введено схожее свойство `"className"`: `elem.className` соответствует атрибуту `"class"`.
3233

@@ -44,7 +45,7 @@ elem.style.top = top; // например, '456px'
4445

4546
Для этого есть другое свойство: `elem.classList`.
4647

47-
`elem.classList` -- это специальный объект с методами для добавления/удаления классов.
48+
`elem.classList` -- это специальный объект с методами для добавления/удаления одного класса.
4849

4950
Например:
5051

@@ -65,9 +66,9 @@ elem.style.top = top; // например, '456px'
6566

6667
Методы `classList`:
6768

68-
- `elem.classList.add/remove("class")` -- добавление/удаление класса.
69+
- `elem.classList.add/remove("class")` -- добавить/удалить класса.
6970
- `elem.classList.toggle("class")` -- добавить класс, если его нет, иначе удалить.
70-
- `elem.classList.contains("class")` -- возвращает `true/false`, в зависимости от наличия данного класса.
71+
- `elem.classList.contains("class")` -- проверка наличия класса, возвращает `true/false`.
7172

7273
Кроме того, `classList` является перебираемым, поэтому можно перечислить все классы при помощи `for..of`:
7374

@@ -83,7 +84,7 @@ elem.style.top = top; // например, '456px'
8384

8485
## Element style
8586

86-
Свойство `elem.style` - это объект, который соответствует тому, что написано в атрибуте `"style"`. Установка стиля `elem.style.width="100px"` работает так же, как добавление в атрибут `style="width:100px"`.
87+
Свойство `elem.style` - это объект, который соответствует тому, что написано в атрибуте `"style"`. Установка стиля `elem.style.width="100px"` работает так же, как наличие в атрибуте `style` строки `width:100px`.
8788

8889
Для свойства из нескольких слов используется camelCase:
8990

@@ -99,15 +100,15 @@ border-left-width => elem.style.borderLeftWidth
99100
document.body.style.backgroundColor = prompt('background color?', 'green');
100101
```
101102

102-
````smart header="Prefixed properties"
103-
Стили с браузерным префиксом, например, `-moz-border-radius`, `-webkit-border-radius` также работают по тому же принципу:
103+
````smart header="Свойства с префиксом"
104+
Стили с браузерным префиксом, например, `-moz-border-radius`, `-webkit-border-radius` преобразуются по тому же принципу: дефис означает прописную букву.
105+
106+
Например:
104107
105108
```js
106109
button.style.MozBorderRadius = '5px';
107110
button.style.WebkitBorderRadius = '5px';
108111
```
109-
110-
То есть тире `"-"` становится прописной буквой.
111112
````
112113

113114
## Сброс стилей
@@ -119,13 +120,13 @@ button.style.WebkitBorderRadius = '5px';
119120
Затем мы можем удалить свойство `style.display`, чтобы вернуться к первоначальному состоянию. Вместо `delete elem.style.display` мы должны присвоить ему пустую строку: `elem.style.display = ""`.
120121

121122
```js run
122-
// если мы запустим этот код, <body> "будет мигать"
123+
// если мы запустим этот код, <body> "мигнёт"
123124
document.body.style.display = "none"; // скрыть
124125

125126
setTimeout(() => document.body.style.display = "", 1000); // возврат к нормальному состоянию
126127
```
127128

128-
Если мы установим в `display` пустую строку, то браузер применит CSS-классы и встроенные стили, как если бы такого свойства `display` вообще не было.
129+
Если мы установим в `style.display` пустую строку, то браузер применит CSS-классы и встроенные стили, как если бы такого свойства `style.display` вообще не было.
129130

130131
````smart header="Полная перезапись `style.cssText`"
131132
Обычно мы используем `style.*` для присвоения индивидуальных свойств стиля. Нельзя установить список стилей как, например, `div.style="color: red; width: 100px"`, потому что `div.style` -- это объект, и он доступен только для чтения.
@@ -136,7 +137,7 @@ setTimeout(() => document.body.style.display = "", 1000); // возврат к
136137
<div id="div">Button</div>
137138

138139
<script>
139-
// здесь мы даже можем устанавливать специальные флаги для стилей, например, "important"
140+
// можем даже устанавливать специальные флаги для стилей, например, "important"
140141
div.style.cssText=`color: red !important;
141142
background-color: yellow;
142143
width: 100px;
@@ -149,12 +150,12 @@ setTimeout(() => document.body.style.display = "", 1000); // возврат к
149150

150151
Это свойство редко используется, потому что такое присваивание удаляет все существующие стили: оно не добавляет, а заменяет их. Можно ненароком удалить что-то нужное. Но его можно использовать, к примеру, для новых элементов, когда мы точно знаем, что не удалим существующий стиль.
151152

152-
То же самое можно сделать, если установить атрибут: `div.setAttribute('style', 'color: red...')`.
153+
То же самое можно сделать установкой атрибута: `div.setAttribute('style', 'color: red...')`.
153154
````
154155
155156
## Следите за единицами измерения
156157
157-
Единицы измерения в CSS должны быть представлены в стилевых значениях.
158+
Не забудьте добавить к значениям единицы измерения.
158159
159160
Например, мы должны устанавливать `10px`, а не просто `10` в свойство `elem.style.top`. Иначе это не сработает:
160161
@@ -167,7 +168,7 @@ setTimeout(() => document.body.style.display = "", 1000); // возврат к
167168
alert(document.body.style.margin); // '' (пустая строка, присваивание игнорируется)
168169
*/!*
169170
170-
// сейчас добавим единицу измерения (px) - и это работает
171+
// сейчас добавим единицу измерения (px) - и заработает
171172
document.body.style.margin = '20px';
172173
alert(document.body.style.margin); // 20px
173174
@@ -177,11 +178,11 @@ setTimeout(() => document.body.style.display = "", 1000); // возврат к
177178
</body>
178179
```
179180
180-
Пожалуйста, обратите внимание, как браузер "распаковывает" свойство `style.margin` в последних строках и выводит `style.marginLeft` и `style.marginTop` (и другие части внешнего отступа) из него.
181+
Пожалуйста, обратите внимание, браузер "распаковывает" свойство `style.margin` в последних строках и выводит `style.marginLeft` и `style.marginTop` из него.
181182
182183
## Вычисленные стили: getComputedStyle
183184
184-
Изменить стиль очень просто. Но как его *прочитать*?
185+
Итак, изменить стиль очень просто. Но как его *прочитать*?
185186
186187
Например, мы хотим знать размер, отступы, цвет элемента. Как это сделать?
187188
@@ -207,23 +208,23 @@ setTimeout(() => document.body.style.display = "", 1000); // возврат к
207208
</body>
208209
```
209210
210-
...Но что, если нам нужно, скажем, увеличить отступ на 20px? Для начала нужно его текущее значение получить.
211+
...Но что, если нам нужно, скажем, увеличить отступ на `20px`? Для начала нужно его текущее значение получить.
211212
212213
Для этого есть метод: `getComputedStyle`.
213214
214215
Синтаксис:
215216
216217
```js
217-
getComputedStyle(element[, pseudo])
218+
getComputedStyle(element, [pseudo])
218219
```
219220
220221
element
221222
: Элемент, значения для которого нужно получить
222223
223224
pseudo
224-
: Указывается, если нужен стиль псевдоэлемента, например "::before". Пустая строка или отсутствие аргумента означают сам элемент.
225+
: Указывается, если нужен стиль псевдоэлемента, например `::before`. Пустая строка или отсутствие аргумента означают сам элемент.
225226
226-
Результат вызова - объект со свойствами стилей, похожий на `elem.style`, но с учётом всех CSS-классов.
227+
Результат вызова - объект со стилями, похожий на `elem.style`, но с учётом всех CSS-классов.
227228
228229
Например:
229230
@@ -253,7 +254,7 @@ pseudo
253254
254255
Давным-давно `getComputedStyle` был создан для получения вычисленных значений, но оказалось, что окончательные значения гораздо удобнее, и стандарт изменился.
255256
256-
Так что, в настоящее время `getComputedStyle` фактически возвращает окончательное значение свойства.
257+
Так что, в настоящее время `getComputedStyle` фактически возвращает окончательное значение свойства, для геометрии оно обычно в пискселях.
257258
```
258259
259260
````warn header="`getComputedStyle` требует полное свойство!"
@@ -276,28 +277,27 @@ pseudo
276277
```
277278
````
278279

279-
```smart header="\"Посещенные\" (visited) ссылки скрываются!"
280+
```smart header="Стили, примяемые к посещённым `:visited` ссылкам, скрываются!"
280281
Посещенные ссылки могут быть окрашены с помощью псевдокласса `:visited`.
281282

282283
Но `getComputedStyle` не дает доступ к этой информации, чтобы произвольная страница не могла определить, посещал ли пользователь ту или иную ссылку, проверив стили.
283284

284-
JavaScript не видит стили, применяемые с помощью `:visited`. Кроме того, в CSS есть ограничение, которое запрещает в целях безопасности применять к `:visited` CSS-стили, изменяющие геометрию элемента. Это гарантирует, что нет обходного пути для "плохой" страницы, чтобы проверить, была ли ссылка посещена и, следовательно, нарушить конфиденциальность.
285-
285+
JavaScript не видит стили, применяемые с помощью `:visited`. Кроме того, в CSS есть ограничение, которое запрещает в целях безопасности применять к `:visited` CSS-стили, изменяющие геометрию элемента. Это гарантирует, что нет обходного пути для "злой" страницы проверить, была ли ссылка посещена и, следовательно, нарушить конфиденциальность.
286286
```
287287
288288
## Итого
289289
290290
Для управления классами существуют два DOM-свойства:
291291
292-
- `className` -- строковое значение, удобно для управления всем набором классов
292+
- `className` -- строковое значение, удобно для управления всем набором классов.
293293
- `classList` - объект с методами `add/remove/toggle/contains`, удобно для управления отдельными классами.
294294
295295
Чтобы изменить стили:
296296
297-
- Свойство `style` является объектом со стилями в формате camelCase. Чтение и запись в него работают так же, как изменение соответствующих свойств в атрибуте `"style"`. Чтобы узнать, как добавить в него `important` и делать некоторые другие редкие вещи - смотрите [документацию](mdn:api/CSSStyleDeclaration].
297+
- Свойство `style` является объектом со стилями в формате camelCase. Чтение и запись в него работают так же, как изменение соответствующих свойств в атрибуте `"style"`. Чтобы узнать, как добавить в него `important` и делать некоторые другие редкие вещи - смотрите [документацию](mdn:api/CSSStyleDeclaration).
298298
299299
- Свойство `style.cssText` соответствует всему атрибуту `"style"`, полной строке стилей.
300300
301301
Для чтения окончательных стилей (с учётом всех классов, после применения CSS и вычисления окончательных значений) используется:
302302
303-
- Метод `getComputedStyle(elem[, pseudo])` возвращает объект, похожий по формату на `style`. Только для чтения.
303+
- Метод `getComputedStyle(elem, [pseudo])` возвращает объект, похожий по формату на `style`. Только для чтения.

2-ui/1-document/09-size-and-scroll/article.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
Существует множество JavaScript-свойcтв, которые позволяют считывать информацию об элементе: ширину, высоту и другие геометрические характеристики. В этой главе мы будем называть их "метрики".
44

5-
Они часто требуются, когда нам нужно передвигать или позиционировать элементы с помощью JavaScript для того, чтобы правильно вычислять координаты.
6-
5+
Они часто требуются, когда нам нужно передвигать или позиционировать элементы с помощью JavaScript.
76

87
## Простой пример
98

@@ -39,7 +38,7 @@
3938
```
4039

4140
```smart header="Область `padding-bottom` (нижний внутренний отступ) может быть заполнена текстом"
42-
Нижние внутренние отступы `padding-bottom` изображены пустыми на иллюстрациях, но если элемент содержит много текста, то браузеры отображают его перекрывающим `padding-bottom`.
41+
Нижние внутренние отступы `padding-bottom` изображены пустыми на иллюстрациях, но если элемент содержит много текста, то браузеры отображают его перекрывающим `padding-bottom`.
4342

4443
Это заметка, чтобы избежать недопониманий, так как во всех стилях дальнейших примеров `padding-bottom` есть (если не указано противное).
4544
```

0 commit comments

Comments
 (0)