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

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

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


<script>

  var para = document.body.getElementsByTagName("p")[0];

  console.log("clientHeight:", para.clientHeight);

  console.log("offsetHeight:", para.offsetHeight);

</script>

Π‘Π°ΠΌΡ‹ΠΉ эффСктивный способ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ располоТСниС элСмСнта Π½Π° экранС – ΠΌΠ΅Ρ‚ΠΎΠ΄ getBoundingClientRect. Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ со свойствами top, bottom, left, ΠΈ right (свСрху, снизу, слСва ΠΈ справа), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ элСмСнта ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° экрана Π² пиксСлях. Если Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ всСго Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ, которая содСрТится Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… pageXOffset ΠΈ pageYOffset.

Π Π°Π·Π±ΠΎΡ€ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° – Π·Π°Π΄Π°Ρ‡Π° слоТная. Π’ цСлях быстродСйствия Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹Π΅ Π΄Π²ΠΈΠΆΠΊΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· послС Π΅Π³ΠΎ измСнСния, Π° ΠΆΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊ Π΄ΠΎΠ»Π³ΠΎ, ΠΊΠ°ΠΊ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° JavaScript, измСнившая Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ раскладку страницы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π½Π° экран. Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ, читая свойства Ρ‚ΠΈΠΏΠ° offsetHeight ΠΈΠ»ΠΈ вызывая getBoundingClientRect, для прСдоставлСния ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ раскладку.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая пСриодичСски считываСт раскладку DOM ΠΈ измСняСт DOM, заставляСт Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ раскладку, ΠΈ Π² связи с этим Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ строят линию ΠΈΠ· символов X ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ Π² 2000 пиксСлСй, ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹.

<span id="one"></span>

<span id="two"></span>


<script>

  function time(name, action) {

    var start = Date.now(); // Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя Π² миллисСкундах

    action();

    console.log(name, "заняло", Date.now() - start, "ms");

  }


  time("Ρ‚ΡƒΠΏΠΎ", function() {

    var target = document.getElementById("one");

    while (target.offsetWidth < 2000)

      target.appendChild(document.createTextNode("X"));

  });

  // β†’ Ρ‚ΡƒΠΏΠΎ заняло 32 ms


  time("ΡƒΠΌΠ½ΠΎ", function() {

    var target = document.getElementById("two");

    target.appendChild(document.createTextNode("XXXXX"));

    var total = Math.ceil(2000 / (target.offsetWidth / 5));

    for (var i = 5; i < total; i++)

      target.appendChild(document.createTextNode("X"));

  });

  // β†’ ΡƒΠΌΠ½ΠΎ заняло 1 ms

</script>

Π‘Ρ‚ΠΈΠ»ΠΈ

ΠœΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ элСмСнты HTML Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. НСкоторыС ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ Π±Π»ΠΎΠΊΠΎΠ², Π΄Ρ€ΡƒΠ³ΠΈΠ΅ встроСнныС. НСкоторыС Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, <strong> Π΄Π΅Π»Π°Π΅Ρ‚ ΠΆΠΈΡ€Π½Ρ‹ΠΌ тСкст ΠΈ <a> Π΄Π΅Π»Π°Π΅Ρ‚ тСкст ΠΏΠΎΠ΄Ρ‡Ρ‘Ρ€ΠΊΠ½ΡƒΡ‚Ρ‹ΠΌ ΠΈ синим.

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Ρ‚Π΅Π³Π΅ <img> ΠΈΠ»ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ссылка Π² Ρ‚Π΅Π³Π΅ <a> ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ страницу, связано с Ρ‚ΠΈΠΏΠΎΠΌ элСмСнта. Но основныС стили, связанныС с элСмСнтом, Π²Ρ€ΠΎΠ΄Π΅ Ρ†Π²Π΅Ρ‚Π° тСкста ΠΈΠ»ΠΈ подчёркивания, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования свойства style (ΡΡ‚ΠΈΠ»ΡŒ):

<a href=".">ΠžΠ±Ρ‹Ρ‡Π½Π°Ρ ссылка</a>

<a href="." style="color: green">ЗСлёная ссылка</a>

Атрибут style ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько объявлСний свойств (color), Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ случаС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… объявлСний ΠΎΠ½ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой: β€œcolor: red; border: none”.

Много всякого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ стилСй. НапримСр, свойство display ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚, показываСтся Π»ΠΈ элСмСнт Π² Π±Π»ΠΎΡ‡Π½ΠΎΠΌ ΠΈΠ»ΠΈ встроСнном Π²ΠΈΠ΄Π΅.

ВСкст ΠΏΠΎΠΊΠ°Π·Π°Π½ <strong>встроСнным</strong>,

<strong style="display: block">Π² Π²ΠΈΠ΄Π΅ Π±Π»ΠΎΠΊΠ°</strong>, ΠΈ

<strong style="display: none">Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π²ΠΈΠ΄Π΅Π½</strong>.

Π‘Π»ΠΎΡ‡Π½Ρ‹ΠΉ элСмСнт выводится ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ, Π° послСдний Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π²ΠΈΠ΄Π΅Π½ – display: none ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π· элСмСнтов. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ элСмСнты. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ ΠΈΡ… ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡ… Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΡ€ΠΈ нСобходимости снова ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ.

Код JavaScript ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΡΡ‚ΠΈΠ»ΡŒ элСмСнта Ρ‡Π΅Ρ€Π΅Π· свойство ΡƒΠ·Π»Π° style. Π’ Π½Ρ‘ΠΌ содСрТится ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ свойства для всСх свойств стилСй. Π˜Ρ… значСния – строки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ для смСны ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ аспСкта стиля элСмСнта.

<p id="para" style="color: purple">

  ΠšΡ€Π°ΡΠΎΡ‚Π΅Π½ΡŒ


<script>

  var para = document.getElementById("para");

  console.log(para.style.color);

  para.style.color = "magenta";

</script>

НСкоторыС ΠΈΠΌΠ΅Π½Π° свойств стилСй содСрТат дСфисы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ font-family. Π’Π°ΠΊ ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² JavaScript (ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ style[Β«font-familyΒ»]), названия свойств Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ стилСй ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π±Π΅Π· дСфиса, Π° вмСсто этого Π² Π½ΠΈΡ… ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ прописныС Π±ΡƒΠΊΠ²Ρ‹: style.fontFamily.

ΠšΠ°ΡΠΊΠ°Π΄Π½Ρ‹Π΅ стили

БистСма стилСй Π² HTML называСтся CSS (Cascading Style Sheets, каскадныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй). Π’Π°Π±Π»ΠΈΡ†Π° стилСй – Π½Π°Π±ΠΎΡ€ стилСй Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π³Π° <style>:

<style>

  strong {

    font-style: italic;

    color: gray;

  }

</style>

Π’Π΅ΠΏΠ΅Ρ€ΡŒ <strong>тСкст Ρ‚Π΅Π³Π° strong</strong> Π½Π°ΠΊΠ»ΠΎΠ½Π½Ρ‹ΠΉ ΠΈ сСрый.

Β«ΠšΠ°ΡΠΊΠ°Π΄Π½Ρ‹Π΅Β» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ нСсколько ΠΏΡ€Π°Π²ΠΈΠ» ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ для получСния ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ стиля Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π° ΡΡ‚ΠΈΠ»ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для <strong>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ тСкст ΠΆΠΈΡ€Π½Ρ‹ΠΌ, накладываСтся ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈΠ· Ρ‚Π΅Π³Π° <style>, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ добавляСтся font-style ΠΈ Ρ†Π²Π΅Ρ‚.

Когда Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства опрСдСляСтся нСсколькими ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ, ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ остаётся Ρƒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ…. Если Π±Ρ‹ ΡΡ‚ΠΈΠ»ΡŒ тСкста Π² <style> Π²ΠΊΠ»ΡŽΡ‡Π°Π» ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ font-weight: normal, ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰Π΅Π΅ со стилСм ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚ΠΎ тСкст Π±Ρ‹Π» Π±Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ, Π° Π½Π΅ ΠΆΠΈΡ€Π½Ρ‹ΠΉ. Π‘Ρ‚ΠΈΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ ΡƒΠ·Π»Ρƒ Ρ‡Π΅Ρ€Π΅Π· Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ style, ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚.

Π’ CSS Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π΅Π³ΠΎΠ². ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ для .abc примСняСтся ΠΊΠΎ всСм элСмСнтам, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Π½ класс β€œabc”. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ для \#xyz примСняСтся ΠΊ элСмСнту с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ id Ρ€Π°Π²Π½Ρ‹ΠΌ β€œxyz” (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ id Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°).

.subtle {

  color: gray;

  font-size: 80%;

}

#header {

  background: blue;

  color: white;

}

/* Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ p, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Π½Ρ‹ классы a ΠΈ b, Π° id Π·Π°Π΄Π°Π½ ΠΊΠ°ΠΊ main */

p.a.b#main {

  margin-bottom: 20px;

}

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ самых ΠΏΠΎΠ·Π΄Π½ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Ρƒ ΠΏΡ€Π°Π²ΠΈΠ» одинаковая дСтализация. Π­Ρ‚ΠΎ ΠΌΠ΅Ρ€Π° Ρ‚ΠΎΠ³ΠΎ, насколько Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠ½ΠΎ описываСт подходящиС элСмСнты, опрСдСляСмая числом ΠΈ Π²ΠΈΠ΄ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… аспСктов элСмСнтов. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ для p.a Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ, Ρ‡Π΅ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π° для p ΠΈΠ»ΠΈ просто .a, ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚.

Π—Π°ΠΏΠΈΡΡŒ p > a {...} ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊΠΎ всСм Ρ‚Π΅Π³Π°ΠΌ <a>, находящимся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π³Π°

ΠΈ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΌΡΡ Π΅Π³ΠΎ прямыми ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ. p a {...} ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎ всСм Ρ‚Π΅Π³Π°ΠΌ <a> Π²Π½ΡƒΡ‚Ρ€ΠΈ

, ΠΏΡ€ΠΈ этом Π½Π΅Π²Π°ΠΆΠ½ΠΎ, являСтся Π»ΠΈ <a> прямым ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ запросов

Π’ этой ΠΊΠ½ΠΈΠ³Π΅ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй. ПониманиС ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для программирования Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Π½ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΠ΅ всСх ΠΈΡ… свойств заняло Π±Ρ‹ 2-3 ΠΊΠ½ΠΈΠ³ΠΈ. Главная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° знакомства с Π½ΠΈΠΌΠΈ ΠΈ с синтаксисом сСлСкторов (записСй, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ…, ΠΊ ΠΊΠ°ΠΊΠΈΠΌ элСмСнтам относятся ΠΏΡ€Π°Π²ΠΈΠ»Π°) – ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ эффСктивный ΠΌΠΈΠ½ΠΈ-язык для поиска элСмСнтов DOM.

ΠœΠ΅Ρ‚ΠΎΠ΄ querySelectorAll, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° document, ΠΈ Ρƒ элСмСнтов-ΡƒΠ·Π»ΠΎΠ², ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ строку сСлСктора ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массивоподобный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий всС элСмСнты, подходящиС ΠΏΠΎΠ΄ Π½Π΅Π³ΠΎ.

Π›ΡŽΠ±Π»ΡŽ Π³Ρ€ΠΎΠ·Ρƒ Π² Π½Π°Ρ‡Π°Π»Π΅

  <span>мая</span>

Когда вСсСнний ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π³Ρ€ΠΎΠΌ

Как Π±Ρ‹ <span>рСзвяся

  <span>ΠΈ играя</span></span>

Π“Ρ€ΠΎΡ…ΠΎΡ‡Π΅Ρ‚ Π² Π½Π΅Π±Π΅ Π³ΠΎΠ»ΡƒΠ±ΠΎΠΌ.


<script>

  function count(selector) {

    return document.querySelectorAll(selector).length;

  }

  console.log(count("p"));           // ВсС элСмСнты

  // β†’ 4

  console.log(count(".animal"));     // Класс animal

  // β†’ 2

  console.log(count("p .animal"));   // Класс animal Π²Π½ΡƒΡ‚Ρ€ΠΈ

  // β†’ 2

  console.log(count("p > .animal")); // ΠŸΡ€ΡΠΌΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ

  // β†’ 1

</script>

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²Ρ€ΠΎΠ΄Π΅ getElementsByTagName, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ querySelectorAll ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ. Он Π½Π΅ измСнится, Ссли Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.

ΠœΠ΅Ρ‚ΠΎΠ΄ querySelector (Π±Π΅Π· All) Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сходным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Он Π½ΡƒΠΆΠ΅Π½, Ссли Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт. Он Π²Π΅Ρ€Π½Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ совпадСниС, ΠΈΠ»ΠΈ null, Ссли совпадСний Π½Π΅Ρ‚.

РасполоТСниС ΠΈ анимация