Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π’Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ JavaScriptΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 50

Автор ΠœΠ°Ρ€Π΅ΠΉΠ½ Π₯Π°Π²Π΅Ρ€Π±Π΅ΠΊΠ΅

  console.log("Defused.");

  clearTimeout(bombTimer);

}

Ѐункция cancelAnimationFrame Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ clearTimeout – Π²Ρ‹Π·ΠΎΠ² Π΅Ρ‘ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½Π½Ρ‹ΠΌ requestAnimationFrame, ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ этот ΠΊΠ°Π΄Ρ€ (Ссли ΠΎΠ½ ΡƒΠΆΠ΅ Π½Π΅ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½).

ΠŸΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, setInterval ΠΈ clearInterval ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для установки Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ X миллисСкунд.

var ticks = 0;

var clock = setInterval(function() {

  console.log("tick", ticks++);

  if (ticks == 10) {

    clearInterval(clock);

    console.log("stop.");

  }

}, 200);

УстранСниС ΠΏΠΎΠΌΠ΅Ρ… (debouncing)

Π£ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… событий Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ быстро ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· подряд (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "mousemove" ΠΈ "scroll"). ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚Π°ΠΊΠΈΡ… событий Π½Π°Π΄ΠΎ Π±Ρ‹Ρ‚ΡŒ остороТным ΠΈ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ «тяТёлого», ΠΈΠ»ΠΈ ваш ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°ΠΉΠΌΡ‘Ρ‚ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ взаимодСйствиС с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈ прСрывистым.

Если Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ setTimeout, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ это Π½Π΅ слишком часто. Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «устранСниСм ΠΏΠΎΠΌΠ΅Ρ…Β» Π² событии. К этому сущСствуСт нСсколько слСгка Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ².

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚, Π½ΠΎ Π½Π΅ Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ это сразу послС запуска ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ события наТатия Π½Π° клавиши. Когда ΠΎΠ½ΠΈ быстро ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‚, Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΏΠ°ΡƒΠ·Π°. ВмСсто Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ выполнСния дСйствия Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅, ΠΌΡ‹ устанавливаСм Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚, Ссли ΠΎΠ½ Π±Ρ‹Π», Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли события Π±Π»ΠΈΠ·ΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ (Π±Π»ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°), ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ событиС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ΠΎ.

<textarea>ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ‚ΡƒΡ‚ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ...</textarea>

<script>

  var textarea = document.querySelector("textarea");

  var timeout;

  textarea.addEventListener("keydown", function() {

    clearTimeout(timeout);

    timeout = setTimeout(function() {

      console.log("Π’Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ.");

    }, 500);

  });

</script>

Если Π·Π°Π΄Π°Ρ‚ΡŒ undefined для clearTimeout, ΠΈΠ»ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ с Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΡ‘Π», Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π΅ Π½Π°Π΄ΠΎ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΈΡ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅, ΠΈ ΠΌΡ‹ просто поступаСм Ρ‚Π°ΠΊ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ события.

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ссли Π½Π°ΠΌ Π½Π°Π΄ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΏΡ€ΠΈ этом Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… Π² Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° происходят события, Π° Π½Π΅ послС. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π½Π°Π΄ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° события "mousemove", показывая Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΌΡ‹ΡˆΠΈ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 250 миллисСкунд.

<script>

  function displayCoords(event) {

    document.body.textContent =

      "ΠœΡ‹ΡˆΡŒ Π½Π° " + event.pageX + ", " + event.pageY;

  }


  var scheduled = false, lastEvent;

  addEventListener("mousemove", function(event) {

    lastEvent = event;

    if (!scheduled) {

      scheduled = true;

      setTimeout(function() {

        scheduled = false;

        displayCoords(lastEvent);

      }, 250);

    }

  });

</script>

Π˜Ρ‚ΠΎΠ³

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° события, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ Π½Π΅ властны. Для ΠΈΡ… рСгистрации ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ addEventListener.

Π£ событий Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡ… Ρ‚ΠΈΠΏ ("keydown", "focus", ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅). Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ событий Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ ΡƒΠ·Π»Π°ΠΌΠΈ DOM, ΠΈ Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π½Π° ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΊΠΎΠ², позволяя связанными с Π½ΠΈΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ….

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΅ΠΌΡƒ пСрСдаётся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ события с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ событии. Π£ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ дальнСйшСС распространСниС (stopPropagation) ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ события Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (preventDefault).

НаТатия Π½Π° клавиши Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ события "keydown", "keypress" ΠΈ "keyup". НаТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ события "mousedown", "mouseup" ΠΈ "click". ДвиТСния ΠΌΡ‹ΡˆΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ события "mousemove" ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, "mouseenter" ΠΈΠ»ΠΈ "mouseout".

ΠŸΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· событиС "scroll", Π° измСнСния фокуса Ρ‡Π΅Ρ€Π΅Π· события "focus" ΠΈ "blur". Когда заканчиваСтся Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° window запускаСтся событиС "load".

Π’ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ участок ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ скрипты Π±ΡƒΠ΄ΡƒΡ‚ ΠΆΠ΄Π°Ρ‚ΡŒ окончания Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ….

УпраТнСния

Π¦Π΅Π½Π·ΡƒΡ€Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

Π’ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ΅ с 1928 ΠΏΠΎ 2013 Π³ΠΎΠ΄ Ρ‚ΡƒΡ€Π΅Ρ†ΠΊΠΈΠ΅ Π·Π°ΠΊΠΎΠ½Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π»ΠΈ использованиС Π±ΡƒΠΊΠ² Q, W ΠΈ X Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…. Π­Ρ‚ΠΎ являлось Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Ρ‹ подавлСния курдской ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρ‹ – эти Π±ΡƒΠΊΠ²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² языкС ΠΊΡƒΡ€Π΄ΠΎΠ², Π½ΠΎ Π½Π΅ Ρƒ Ρ‚ΡƒΡ€ΠΊΠΎΠ².

Π’ качСствС упраТнСния Π½Π° Ρ‚Π΅ΠΌΡƒ странного использования Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, я ΠΏΡ€ΠΎΡˆΡƒ вас Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ для Π²Π²ΠΎΠ΄Π° тСкста (Ρ‚Π΅Π³ <input type="text">) Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эти Π±ΡƒΠΊΠ²Ρ‹ нСльзя Π±Ρ‹Π»ΠΎ Ρ‚ΡƒΠ΄Π° Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ. НасчСт копирования ΠΈ вставки ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΠ±Ρ…ΠΎΠ΄ΠΎΠ² ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ.

<input type="text">

<script>

  var field = document.querySelector("input");

  // Your code here.

</script>

Π‘Π»Π΅Π΄ ΠΌΡ‹ΡˆΠΈ

Π’ Ρ€Π°Π½Π½ΠΈΠ΅ Π΄Π½ΠΈ JavaScript, ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π»ΠΎ врСмя ΠΊΡ€ΠΈΡ‡Π°Ρ‰ΠΈΡ… Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… страниц с ΠΎΠ±ΠΈΠ»ΠΈΠ΅ΠΌ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ, люди использовали язык ΠΎΡ‡Π΅Π½ΡŒ Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ способами. Одним ΠΈΠ· Π½ΠΈΡ… Π±Ρ‹Π» «слСд ΠΌΡ‹ΡˆΠΈΒ» β€” сСрия ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдовали Π·Π° курсором ΠΏΡ€ΠΈ Π΅Π³ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎ страницС.

Π― Ρ…ΠΎΡ‡Ρƒ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π²Ρ‹ Π² ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΈ сдСлали Ρ‚Π°ΠΊΠΎΠΉ слСд. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ с Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, фиксированным Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ„ΠΎΠ½Π°. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΡƒΡ‡ΠΊΡƒ элСмСнтов ΠΈ ΠΏΡ€ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ‹ΡˆΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΈΡ… слСдом Π·Π° курсором.

К этому ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ способами. МоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ простоС ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ слоТноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ – Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ фиксированноС количСство элСмСнтов ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ Π½ΠΈΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅, двигая ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ мСсто курсора, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΊΠΎΠ³Π΄Π° случаСтся событиС "mousemove".

<style>

  .trail { /* className для элСмСнтов, лСтящих Π·Π° курсором */

    position: absolute;

    height: 6px; width: 6px;

    border-radius: 3px;

    background: teal;

  }

  body {

    height: 300px;

  }

</style>


<script>

  // Π’Π°Ρˆ ΠΊΠΎΠ΄.

</script>

Π—Π°ΠΊΠ»Π°Π΄ΠΊΠΈ

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π·Π°ΠΊΠ»Π°Π΄ΠΎΠΊ встрСчаСтся часто. Он позволяСт Π²Π°ΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ панСль интСрфСйса, выбирая ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚ΠΎΡ€Ρ‡Π°Ρ‰ΠΈΡ… Π·Π°ΠΊΠ»Π°Π΄ΠΎΠΊ Π½Π°Π΄ элСмСнтом.

Π’ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ простой интСрфСйс Π·Π°ΠΊΠ»Π°Π΄ΠΎΠΊ. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ asTabs, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡƒΠ·Π΅Π» DOM, ΠΈ создаёт Π·Π°ΠΊΠ»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ интСрфСйс, показывая Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты этого ΡƒΠ·Π»Π°. Π•ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ список элСмСнтов <button> Π²Π²Π΅Ρ€Ρ…Ρƒ ΡƒΠ·Π»Π°, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ элСмСнт, содСрТащих тСкст, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ· Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° data-tabname. ВсС, ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ спрятаны (ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ display style none), Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ ΡƒΠ·Π΅Π» ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Когда ΠΎΠ½ΠΎ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ€Π°ΡΡˆΠΈΡ€ΡŒΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±Ρ‹Π» свой ΡΡ‚ΠΈΠ»ΡŒ.

<div id="wrapper">

  <div data-tabname="one">Π—Π°ΠΊΠ»Π°Π΄ΠΊΠ° ΠΎΠ΄ΠΈΠ½</div>

  <div data-tabname="two">Π—Π°ΠΊΠ»Π°Π΄ΠΊΠ° Π΄Π²Π°</div>

  <div data-tabname="three">Π—Π°ΠΊΠ»Π°Π΄ΠΊΠ° Ρ‚Ρ€ΠΈ</div>

</div>

<script>

  function asTabs(node) {

    // Π’Π°Ρˆ ΠΊΠΎΠ΄.

  }

  asTabs(document.querySelector("#wrapper"));

</script>

15. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚: ΠΈΠ³Ρ€Π°-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Ρ€

Вся наша Тизнь – ΠΈΠ³Ρ€Π°.

ИйСн Бэнкс, Β«Π˜Π³Ρ€ΠΎΠΊΒ»

Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ я увлёкся ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π΄Π΅Ρ‚Π΅ΠΉ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹. МСня затянуло Π²ΠΎ Π²ΡΠ΅Π»Π΅Π½Π½ΡƒΡŽ симулированных ΠΌΠΈΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ, ΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ истории – ΠΌΠ½Π΅ каТСтся большС ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… Π±Ρ‹Π» Π΄Π°Π½ простор ΠΌΠΎΠ΅ΠΌΡƒ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ, Ρ‡Π΅ΠΌ ΠΈΠ·-Π·Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ прСдоставляли.

Никому Π±Ρ‹ Π½Π΅ ΠΏΠΎΠΆΠ΅Π»Π°Π» ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ программиста. Как ΠΈ Π² ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ индустрии, нСсоотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ количСством ΠΌΠΎΠ»ΠΎΠ΄Ρ‹Ρ… людСй, ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ спросом Π½Π° Π½ΠΈΡ…, создаёт Π½Π΅Π·Π΄ΠΎΡ€ΠΎΠ²ΡƒΡŽ срСду. Но написаниС ΠΈΠ³Ρ€ для развлСчСния – это ΠΎΡ‡Π΅Π½ΡŒ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ.

Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ простого ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Ρ€Π°. Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Ρ€Π°Ρ… (ΠΈΠ»ΠΈ Β«ΠΏΡ€Ρ‹Π³Π°ΠΉ ΠΈ Π±Π΅Π³ΠΈΒ») ΠΎΡ‚ ΠΈΠ³Ρ€ΠΎΠΊΠ° трСбуСтся Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΡƒ ΠΏΠΎ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ) Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ ΠΌΠΈΡ€Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ сбоку, ΠΈ часто ΠΏΠ΅Ρ€Π΅ΠΏΡ€Ρ‹Π³ΠΈΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°Π·Π½Ρ‹Π΅ ΡˆΡ‚ΡƒΠΊΠΈ.

Π˜Π³Ρ€Π°

Наша ΠΈΠ³Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΈΠ³Ρ€Π΅ Dark Blue ΠΎΡ‚ Вомаса ΠŸΠ°Π»Π΅Ρ„Π°. Π― Π²Ρ‹Π±Ρ€Π°Π» Π΅Ρ‘, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ, Ρ‚Π°ΠΊ ΠΈ минималистичная, ΠΈ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠΎΠΌ ΠΊΠΎΠ΄Π°. Выглядит ΠΎΠ½Π° Ρ‚Π°ΠΊ: