` одинаков.
А вот аналогичный пример с `em` вместо `px`:
@@ -66,7 +66,7 @@
```
-Так как значение в `em` высчитывается относительно *текущего шрифта*, то вложенная строка в `1.5` раза больше, чем первая.
+Так как значение в `em` высчитывается относительно *текущего шрифта*, то текст во вложенном `
` в `1.5` раза крупнее, чем в родительском.
Выходит, размеры, заданные в `em`, будут уменьшаться или увеличиваться вместе со шрифтом. С учётом того, что размер шрифта обычно определяется в родителе, и может быть изменён ровно в одном месте, это бывает очень удобно.
@@ -160,7 +160,7 @@
@@ -196,7 +196,7 @@
@@ -245,7 +245,7 @@
@@ -262,7 +262,7 @@
let html = document.documentElement;
up.onclick = function() {
// при помощи JS увеличить размер шрифта html на 2px
- html.style.fontSize = parseInt(getComputedStyle(html, '').fontSize) + 2 + 'px';
+ html.style.fontSize = parseInt(getComputedStyle(html).fontSize) + 2 + 'px';
};
```
@@ -273,7 +273,7 @@ up.onclick = function() {
Единица `rem` не поддерживается в IE8-.
-## Относительно экрана: vw, vh, vmin, vmax
+## Относительно окна браузера: vw, vh, vmin, vmax
Во всех современных браузерах, исключая IE8-, поддерживаются новые единицы из черновика стандарта [CSS Values and Units 3](https://drafts.csswg.org/css-values-3/):
@@ -297,8 +297,8 @@ up.onclick = function() {
Мы рассмотрели единицы измерения:
- `px` -- абсолютные пиксели, к которым привязаны и потому не нужны `mm`, `cm`, `pt` и `pc`. Используется для максимально конкретного и точного задания размеров.
-- `em` -- задаёт размер относительно шрифта родителя, можно относительно конкретных символов: `"x"`(`ex`) и `"0"`(`ch`), используется там, где нужно упростить масштабирование компоненты.
+- `em` -- задаёт размер относительно шрифта родителя, можно относительно конкретных символов: `"x"`(`ex`) и `"0"`(`ch`), используется там, где нужно упростить масштабирование компонента.
- `rem` -- задаёт размер относительно шрифта ``, используется для удобства глобального масштабирования: элементы которые планируется масштабировать, задаются в `rem`, а JS меняет шрифт у ``.
- `%` -- относительно такого же свойства родителя (как правило, но не всегда), используется для ширин, высот и так далее, без него никуда, но надо знать, относительно чего он считает проценты.
-- `vw`, `vh`, `vmin`, `vmax` -- относительно размера экрана.
+- `vw`, `vh`, `vmin`, `vmax` -- относительно размеров окна браузера.
diff --git a/3-frames-and-windows/06-clickjacking/article.md b/3-frames-and-windows/06-clickjacking/article.md
index 9eeb9a9323..1fcfd7117e 100644
--- a/3-frames-and-windows/06-clickjacking/article.md
+++ b/3-frames-and-windows/06-clickjacking/article.md
@@ -62,7 +62,7 @@ iframe { /* ифрейм с сайта-жертвы */
```smart header="Clickjacking-атака для кликов мыши, а не для клавиатуры"
Эта атака срабатывает только на действия мыши (или аналогичные, вроде нажатия пальцем на мобильном устройстве).
-Клавиатурный ввод гораздо сложнее перенаправить. Технически, если у нас есть текстовое поле для взлома, мы можем расположить ифрейм таким образом, чтобы текстовые поля перекрывали друг друга. Тогда посетитель при попытке сфокусироваться на текстовом поле, которое он видит на странице, фактически будет фокусироваться на текстовом поле внутри ифрейм.
+Клавиатурный ввод гораздо сложнее перенаправить. Технически, если у нас есть текстовое поле для взлома, мы можем расположить ифрейм таким образом, чтобы текстовые поля перекрывали друг друга. Тогда посетитель при попытке сфокусироваться на текстовом поле, которое он видит на странице, фактически будет фокусироваться на текстовом поле внутри ифрейма.
Но есть одна проблема. Всё, что посетитель печатает, будет скрыто, потому что ифрейм не виден.
@@ -87,9 +87,9 @@ if (top != window) {
### Блокировка top-навигации
-Мы можем заблокировать переход, вызванный сменой `top.location` в обработчике события beforeunload.
+Мы можем заблокировать переход, вызванный изменением `top.location`, в обработчике события beforeunload.
-Внешняя страница (принадлежащая хакеру) устанавливает обработчик на это событие, отменяющий его, например, такой:
+Внешняя страница (принадлежащая хакеру) устанавливает на это событие обработчик, отменяющий действие браузера по умолчанию, например:
```js
window.onbeforeunload = function() {
@@ -97,7 +97,7 @@ window.onbeforeunload = function() {
};
```
-Когда iframe пытается изменить `top.location`, посетитель увидит сообщение с вопросом действительно ли он хочет покинуть эту страницу. В большинстве случаев посетитель ответит отрицательно, поскольку он не знает об ифрейме: всё, что он видит - это верхнюю страницу, которую нет причин покидать. Поэтому `top.location` не изменится!
+Тогда при попытке ифрейма изменить `top.location` посетитель увидит сообщение с вопросом, действительно ли он хочет покинуть эту страницу. В большинстве случаев посетитель ответит отрицательно, поскольку он не знает об ифрейме: всё, что он видит - это верхнюю страницу, которую нет причин покидать. Поэтому `top.location` не изменится!
В действии:
diff --git a/4-binary/03-blob/article.md b/4-binary/03-blob/article.md
index eaf65164cf..b806c80ff3 100644
--- a/4-binary/03-blob/article.md
+++ b/4-binary/03-blob/article.md
@@ -203,7 +203,7 @@ canvas.toBlob(function(blob) {
let blob = await new Promise(resolve => canvasElem.toBlob(resolve, 'image/png'));
```
-Для создания скриншота страницы мы можем использовать такую библиотеку, как
. Всё, что она делает, это просто проходит страницу и отрисовывает её в `