Skip to content

Commit 1c31bc3

Browse files
committed
Ревью
1 parent a4acdcf commit 1c31bc3

File tree

15 files changed

+29
-28
lines changed

15 files changed

+29
-28
lines changed

2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/solution.view/index.html

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!DOCTYPE HTML>
2-
<html lang="ru">
2+
<html>
33

44
<head>
55
<meta charset="utf-8">
@@ -67,7 +67,7 @@
6767

6868
document.onmouseover = function(event) {
6969
// важно: быстро движущийся курсор может прыгнуть сразу к дочернему элементу, пропустив родительский
70-
// то есть событие mouseover может произойти на дочернем элементе.
70+
// так что событие mouseover произойдёт сразу на дочернем элементе.
7171

7272
let anchorElem = event.target.closest('[data-tooltip]');
7373

@@ -78,12 +78,13 @@
7878
}
7979

8080
document.onmouseout = function() {
81-
// возможно, что из-за всплытия запустилось событие mouseout, но мы всё ещё внутри элемента
81+
// возможно такое, что произошло событие mouseout, но мы всё ещё внутри элемента
82+
// (оно было где-то внутри и всплыло)
8283
// но в этом случае сразу же последует событие mouseover,
8384
// то есть подсказка исчезнет и потом снова покажется
8485
//
85-
// это уже вне данной задачи, но тут подсказка невидима
86-
// может быть исправлено дополнительными проверками
86+
// к счастью, этого не будет видно,
87+
// так как оба события происходят почти одновременно
8788
if (tooltip) {
8889
tooltip.remove();
8990
tooltip = false;

2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/source.view/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!DOCTYPE HTML>
2-
<html lang="ru">
2+
<html>
33

44
<head>
55
<meta charset="utf-8">

2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/task.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ importance: 5
44

55
# Улучшенная подсказка
66

7-
Напишите JavaScript код, который показывает подсказку (tooltip) над элементом со значением, взятым в атрибуте `data-tooltip`.
7+
Напишите JavaScript код, который показывает подсказку над элементом со значением, взятым из атрибута `data-tooltip`.
88

99
Это похоже на задачу <info:task/behavior-tooltip>, но здесь элементы с подсказками могут быть вложены друг в друга. Показываться должна подсказка на самом глубоко вложенном элементе.
1010

2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!doctype html>
2-
<html lang="ru">
2+
<html>
33

44
<head>
55
<meta charset="UTF-8">

2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!doctype html>
2-
<html lang="ru">
2+
<html>
33

44
<head>
55
<meta charset="UTF-8">

2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/task.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ importance: 5
1313
Создайте для этого универсальный объект `new HoverIntent(options)` с `options`:
1414

1515
- `elem` -- отслеживаемый элемент.
16-
- `over` -- функция, вызываемая, если курсор двигается медленно.
16+
- `over` -- функция, вызываемая, если курсор медленно двигается над элементом.
1717
- `out` -- функция, вызываемая при уходе курсора с элемента (если было наведение).
1818

1919
Пример использования такого объекта для показа подсказки:

2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/article.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
# Мышь: движение mouseover/out, mouseenter/leave
1+
# Мышь: mouseover/out, mouseenter/leave
22

33
В этой главе мы более подробно рассмотрим события, возникающие при движении указателя (курсора) мыши над элементами страницы.
44

55
## Mouseover/mouseout, relatedTarget
66

7-
Событие `mouseover` происходит однократно в момент, когда курсор оказывается над элементом, а событие `mouseout` -- тоже однократно, но в момент, когда курсор уходит с элемента.
7+
Событие `mouseover` происходит в момент, когда курсор оказывается над элементом, а событие `mouseout` -- в момент, когда курсор уходит с элемента.
88

99
![](mouseover-mouseout.png)
1010

11-
Эти события являются особенными, потому что у них имеется свойство `relatedTarget`.
11+
Эти события являются особенными, потому что у них имеется свойство `relatedTarget`. Оно "дополняет" `target`. Когда мышь переходит с одного элемента на другой, то один из них будет `target`, а другой `relatedTarget`.
1212

1313
Для события `mouseover`:
1414

@@ -33,7 +33,7 @@
3333

3434
Это нормально и означает, что указатель мыши перешёл не с другого элемента, а из-за пределов окна браузера. Или же, наоборот, ушёл за пределы окна.
3535

36-
Разработчикам следует держать в голове такие варианты при использовании `event.relatedTarget` в своём коде. Если, например, написать `event.relatedTarget.tagName`, то при отсутствии `event.relatedTarget` будет ошибка.
36+
Следует держать в уме такую возможность при использовании `event.relatedTarget` в своём коде. Если, например, написать `event.relatedTarget.tagName`, то при отсутствии `event.relatedTarget` будет ошибка.
3737
```
3838
3939
## Частота запуска событий
@@ -57,7 +57,7 @@
5757
![](mouseover-mouseout-from-outside.png)
5858
5959
<div style="display:none">
60-
В случае быстрого прохождения курсором промежуточных элементов события вообще могут не генерироваться. Но если уж курсор перешёл на элемент (было сгенерировано `mouseover`), то гарантировано при выходе с того элемента будет запущено событие `mouseout`.
60+
В случае быстрого прохождения курсором промежуточных элементов события вообще могут не генерироваться. Но если уж курсор перешёл на элемент (было сгенерировано `mouseover`), то гарантированно при выходе с того элемента будет запущено событие `mouseout`.
6161
</div>
6262
6363
```online
@@ -78,13 +78,13 @@
7878

7979
Это выглядит странно, но легко объясняется.
8080

81-
**По логике браузера, курсор мыши может быть только над одним элементом в любой момент времени - над самым глубоко вложенным (и/или имеющим приоритетное значение z-index).**
81+
**По логике браузера, курсор мыши может быть только над одним элементом в любой момент времени - над самым глубоко вложенным (и верхним по z-index).**
8282

8383
Таким образом, если курсор переходит на другой элемент (пусть даже дочерний), то он покидает предыдущий. Достаточно просто.
8484

85-
В примере ниже можно увидеть эту забавную последовательность сгенерированных событий.
85+
Это ведёт к забавным последствиям, которые мы можем видеть на примере ниже.
8686

87-
Красный `<div>` находится внутри синего. На синем элементе `<div>` определены обработчики событий `mouseover/out`, которые отображают всю информацию о них в текстовое поле ниже.
87+
Красный `<div>` находится внутри синего. На синем элементе `<div>` определены обработчики событий `mouseover/out`, которые выводят всю информацию о них в текстовое поле ниже.
8888

8989
Попробуйте зайти курсором на синий элемент, а затем перейдите на красный -- и смотрите, какие события сгенерировались:
9090

@@ -179,7 +179,7 @@ table.onmouseout = function(event) {
179179

180180
Стоит отметить, что:
181181

182-
- Быстрое движение мыши может не запустить события `mouseover, mousemove, mouseout` на промежуточных элементах.
182+
- При быстром движении мыши события `mouseover, mousemove, mouseout` не будут возникать на промежуточных элементах.
183183
- События `mouseover/out` и `mouseenter/leave` имеют дополнительное свойство: `relatedTarget`. Оно дополняет свойство `target` и содержит ссылку на элемент, с/на который мы переходим.
184-
- События `mouseover/out` запускаются, даже когда происходит переход с родительского элемента на дочерний. В этом случае предполагается, что курсор мыши может быть только над одним элементом в любой момент времени - над самым глубоко вложенным.
184+
- События `mouseover/out` возникают, даже когда происходит переход с родительского элемента на дочерний. В этом случае предполагается, что курсор мыши может быть только над одним элементом в любой момент времени - над самым глубоко вложенным.
185185
- События `mouseenter/leave` не всплывают и не генерируются, когда курсор переходит на дочерний элемент. Они запускаются только при переходах с/на сам элемент, не принимая во внимание его дочерние элементы.

2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!DOCTYPE HTML>
2-
<html lang="ru">
2+
<html>
33

44
<head>
55
<meta charset="utf-8">

2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/script.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ table.onmouseover = function(event) {
1111
let target = event.target.closest('td');
1212
if (!target || !table.contains(target)) return;
1313

14-
// даа... мы внутри <td> сейчас
14+
// отлично, мы сейчас внутри <td>
1515
currentElem = target;
1616
target.style.background = 'pink';
1717
};

2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation.view/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!DOCTYPE HTML>
2-
<html lang="ru">
2+
<html>
33

44
<head>
55
<meta charset="utf-8">

0 commit comments

Comments
 (0)