Skip to content

Commit 5c58f1a

Browse files
committed
renovations
1 parent dce5659 commit 5c58f1a

1 file changed

Lines changed: 21 additions & 17 deletions

File tree

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

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
Объект `element.style` дает доступ к стилю элемента на чтение и запись.
1212

13-
С его помощью можно изменять большинство CSS-свойств, например `element.style.width='100px'` работает так, как будто у элемента в атрибуте прописано `style="width:100px"`.
13+
С его помощью можно изменять большинство CSS-свойств, например `element.style.width="100px"` работает так, как будто у элемента в атрибуте прописано `style="width:100px"`.
1414

1515
[warn header="Единицы измерения обязательны в `style`"]
1616
Об этом иногда забывают, но в `style` так же, как и в CSS, нужно указывать единицы измерения, например `px`.
@@ -34,7 +34,7 @@ document.body.style.backgroundColor = prompt('background color?', 'green');
3434
```
3535

3636
[warn header="`style.cssFloat` вместо `style.float`"]
37-
Исключением является свойство `float`. В старом стандарте JavaScript слово `"float"` было зарезервировано и недоступно для использования в качестве свойства объекта. Поэтому используется `element.style.cssFloat`.
37+
Исключением является свойство `float`. В старом стандарте JavaScript слово `"float"` было зарезервировано и недоступно для использования в качестве свойства объекта. Поэтому используется не `elem.style.float`, а `elem.style.cssFloat`.
3838
[/warn]
3939

4040
[smart header="Свойства с префиксами"]
@@ -45,7 +45,7 @@ button.style.MozBorderRadius = '5px';
4545
button.style.WebkitBorderRadius = '5px';
4646
```
4747

48-
То есть, каждый дефис дает большую букву. В этом смысле преобразование -- такое же, как для обычных свойств.
48+
То есть, каждый дефис даёт большую букву.
4949
[/smart]
5050

5151
**Чтобы сбросить поставленный стиль, присваивают в `style` пустую строку: `elem.style.width=""`.**
@@ -54,7 +54,7 @@ button.style.WebkitBorderRadius = '5px';
5454

5555
Например, для того, чтобы спрятать элемент, можно присвоить: `elem.style.display = "none"`.
5656

57-
А вот чтобы показать его обратно -- не обязательно явно указывать другой `elem.style.display = "block"`! Можно просто снять поставленный стиль: `elem.style.display = ""`.
57+
А вот чтобы показать его обратно -- не обязательно явно указывать другой `display`, наподобие `elem.style.display = "block"`. Можно просто снять поставленный стиль: `elem.style.display = ""`.
5858

5959
```js
6060
//+ run
@@ -93,7 +93,7 @@ setTimeout(function() {
9393
[warn header="Свойство `style` мы используем лишь там, где не работают классы"]
9494
В большинстве случаев внешний вид элементов задаётся классами. А JavaScript добавляет или удаляет их. Такой код красив и гибок, дизайн можно легко изменять.
9595

96-
Свойство `style` нужно использовать лишь там, где классы не подходят, например если точное значение цвета/отступа/высоты... Вычисляется в JavaScript.
96+
Свойство `style` нужно использовать лишь там, где классы не подходят, например если точное значение цвета/отступа/высоты вычисляется в JavaScript.
9797
[/warn]
9898

9999

@@ -127,11 +127,13 @@ setTimeout(function() {
127127
</script>
128128
```
129129

130-
Браузер разбирает строку `style.cssText` и применяет известные ему свойства. Нет никаких ограничений на запись несуществующих свойств, но если указать свойство `blabla` -- большинство браузеров его просто проигнорируют.
130+
Браузер разбирает строку `style.cssText` и применяет известные ему свойства. Неизвестные, наподобие `blabla`, большинство браузеров его просто проигнорируют.
131131

132-
**При установке `style.cssText` все существующие свойства `style` перезаписываются.**
132+
**При установке `style.cssText` все предыдущие свойства `style` удаляются.**
133133

134-
Поэтому, по возможности, во избежание конфликта, присваивают более конкретные подсвойства `style`: `style.color`, `style.width` и т.п, а `style.cssText` используют для более короткой записи, когда это заведомо безопасно.
134+
Итак, `style.cssText` осуществляет полную перезапись `style`. Если же нужно заменить какое-то конкретно свойство стиля, то обращаются именно к нему: `style.color`, `style.width` и т.п, чтобы не затереть что-то важное по ошибке.
135+
136+
Свойство `style.cssText` используют, например, для новосозданных элементов, когда старых стилей точно нет.
135137

136138
## Чтение стиля из style
137139

@@ -173,17 +175,17 @@ setTimeout(function() {
173175
Его синтаксис таков:
174176

175177
```js
176-
getComputedStyle(element, pseudo)
178+
getComputedStyle(element[, pseudo])
177179
```
178180

179181
<dl>
180182
<dt>element</dt>
181183
<dd>Элемент, значения для которого нужно получить</dd>
182184
<dt>pseudo</dt>
183-
<dd>Указывается, если нужен стиль псевдо-элемента, например `"::before"`. Пустая строка означает сам элемент.</dd>
185+
<dd>Указывается, если нужен стиль псевдо-элемента, например `"::before"`. Пустая строка или отсутствие аргумента означают сам элемент.</dd>
184186
</dl>
185187

186-
Поддерживается всеми браузерами, кроме IE<9. Следующий код будет работать во всех не-IE браузерах и в IE9+:
188+
Поддерживается всеми браузерами, кроме IE8-. Следующий код будет работать во всех не-IE браузерах и в IE9+:
187189

188190
```html
189191
<!--+ run height=100 -->
@@ -193,7 +195,7 @@ getComputedStyle(element, pseudo)
193195
<body>
194196

195197
<script>
196-
var computedStyle = getComputedStyle(document.body, '');
198+
var computedStyle = getComputedStyle(document.body);
197199
alert(computedStyle.marginTop); // выведет отступ в пикселях
198200
alert(computedStyle.color); // выведет цвет
199201
</script>
@@ -207,7 +209,9 @@ getComputedStyle(element, pseudo)
207209
<li>*Вычисленное* (computed) значение -- это то, которое получено после применения всех правил CSS и CSS-наследования. Например, `width: auto` или `font-size: 125%`.</li>
208210
<li>*Окончательное* ([resolved](http://dev.w3.org/csswg/cssom/#resolved-values)) значение -- непосредственно применяемое к элементу. При этом все размеры приводятся к пикселям, например `width: 212px` или `font-size: 16px`. В некоторых браузерах пиксели могут быть дробными.</li>
209211
</ol>
210-
Когда-то `getComputedStyle` задумывалось для возврата вычисленного значения, но со временем оказалось, что окончательное гораздо удобнее. Поэтому сейчас в целом все значения возвращаются именно такие, кроме некоторых небольших глюков в браузерах, которые постепенно вычищаются.
212+
Когда-то `getComputedStyle` задумывалось для возврата вычисленного значения, но со временем оказалось, что окончательное гораздо удобнее.
213+
214+
Поэтому сейчас в целом все значения возвращаются именно окончательные, кроме некоторых небольших глюков в браузерах, которые постепенно вычищаются.
211215
[/smart]
212216

213217
[warn header="`getComputedStyle` требует полное свойство!"]
@@ -227,7 +231,7 @@ getComputedStyle(element, pseudo)
227231
}
228232
</style>
229233
<script>
230-
var style = getComputedStyle(document.body, '');
234+
var style = getComputedStyle(document.body);
231235
alert( style.margin ); // в Firefox пустая строка
232236
</script>
233237
```
@@ -305,7 +309,7 @@ function getStyle(elem) {
305309
if (!elem.getComputedStyle) // старые IE
306310
document.write(getIEComputedStyle(elem, 'marginTop'));
307311
else
308-
document.write('Пример работает только в IE<9');
312+
document.write('Пример работает только в IE8-');
309313
</script>
310314
```
311315

@@ -318,11 +322,11 @@ function getStyle(elem) {
318322
if (!window.getComputedStyle) // старые IE
319323
document.write(getIEComputedStyle(elem, 'marginTop'));
320324
else
321-
document.write('Пример работает только в IE<9');
325+
document.write('Пример работает только в IE8-');
322326
</script>
323327
</i>
324328
[/pre]
325-
Современные Javascript-фреймворки используют этот прием для эмуляции `getComputedStyle` в старых IE.
329+
Современные Javascript-фреймворки и полифиллы используют этот прием для эмуляции `getComputedStyle` в старых IE.
326330
[/smart]
327331

328332

0 commit comments

Comments
 (0)