Jquery

Jquery ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠΊ ΠΏΠΎ элСмСнту: Как ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠΊ Π½Π° jQuery/JS? β€” Π₯Π°Π±Ρ€ Q&A

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π˜ΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠΊ Π½Π° DIV — javascript β€” QA-HELP

Π― Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Delphi XE4 с использованиСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TChromium для отобраТСния Π²Π΅Π±-страницы Google Voice.

МнС Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ, ΠΈ я Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ способ запуска ΠΊΠΎΠ΄Π° javascript Π·Π° ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ (это DIV) «CONNECT»:

TChromium позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ javascript-ΠΊΠΎΠ΄, ΠΈ ΠΌΠ½Π΅ ΡƒΠΆΠ΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ «CALL», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ΄ javascript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ событиС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ символ «c», ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ панСль. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Google Voice Π΅ΡΡ‚ΡŒ ярлыки, Π° «c» — это ярлык для запуска Π²Ρ‹Π·ΠΎΠ²Π°. Π’Π°ΠΊΠΆΠ΅ с javascript я ΠΌΠΎΠ³Ρƒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ число Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°. Моя основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ я Π½Π΅ знаю, ΠΊΠ°ΠΊ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° «CONNECT»:

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π½Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, Π½Π΅Ρ‚ onClick ΠΈ Π½Π΅Ρ‚ ярлыка для запуска ΠΊΠ½ΠΎΠΏΠΊΠΈ Connect.

Π― ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° этот DIV, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

document.getElementById(":87.mi").children[0].children[0].children[5].children[1].children[0].children[0].children[0].children[1];

Но Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ .click(). Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ click() Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ onClick, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½. Π•ΡΡ‚ΡŒ Π»ΠΈ способ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ javascript выполняСтся, ΠΊΠΎΠ³Π΄Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ Π½Π° этот div?

Если фокус находится Π² Π²Ρ…ΠΎΠ΄Π΅ «Π§ΠΈΡΠ»ΠΎ для Π·Π²ΠΎΠ½ΠΊΠΎΠ²», я ΠΌΠΎΠ³Ρƒ Π½Π°ΠΆΠ°Ρ‚ΡŒ «TAB», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ «Π’Π΅Π»Π΅Ρ„ΠΎΠ½ для Π·Π²ΠΎΠ½ΠΊΠ° с», Π·Π°Ρ‚Π΅ΠΌ «Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€» ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, «ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ», Π³Π΄Π΅ я ΠΌΠΎΠ³Ρƒ Π½Π°ΠΆΠ°Ρ‚ΡŒ Enter Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π― попытался ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ ΠΈ Π² Π½Π°Ρ‡Π°Π»Π΅, для ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ CALL, Π½ΠΎ Π½Π° этот Ρ€Π°Π· с TAB (ΠΊΠΎΠ΄ 9 вмСсто 67), ΠΈ ΠΎΠ½ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ фокус Π½Π΅ пСрСмСщаСтся.

Π― попытался ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ delphi, Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ mouse_event, keybd_event, PostKeyExHWND, PostKeyEx32 ΠΈ PostMessage Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ фокус Π½Π΅ ΠΎΡ‚Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚ «ΠΠΎΠΌΠ΅Ρ€ ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρƒ»

ЕдинствСнная опция, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊ настоящСму ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ, — это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΌΡ‹ΡˆΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ delphi с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SetCursorPos ΠΈ β€‹β€‹ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° этой ΠΊΠ½ΠΎΠΏΠΊΠ΅, вычисляя ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, Π½ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΎΠΉ послСдний Π²Ρ‹Π±ΠΎΡ€, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ я Π±Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ javascript для этого.

Π›ΡŽΠ±Ρ‹Π΅ прСдлоТСния ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ!

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с инструмСнтами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π² Chrome

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«My Favorite Chrome Dev Tools Tips and TricksΒ».

Chrome Developer Tools (инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°
Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Chrome) это ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€
инструмСнтов для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Они способны Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠ΅, ΠΎΡ‚ самых Π±Π°Π·ΠΎΠ²Ρ‹Ρ…
ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Ρ€ΠΎΠ΄Π΅ травСрсирования DOM Π΄ΠΎ
ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сСтСвых запросов ΠΈ Π΄Π°ΠΆΠ΅
профилирования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
вашСго прилоТСния.

Помимо общСизвСстных основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ,
Π² инструмСнтах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Ссли Ρ…ΠΎΡ€ΠΎΡˆΠΎ
ΠΏΡ€ΠΈΠ³Π»ΡΠ΄Π΅Ρ‚ΡŒΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ скрытых
ΠΆΠ΅ΠΌΡ‡ΡƒΠΆΠΈΠ½. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, способныС
ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ Π²Π°ΠΌ ΠΎΠ΄ΠΈΠ½-Π΄Π²Π° ΠΊΠ»ΠΈΠΊΠ°, Π° Ρ€Π°Π·Π²Π΅
Π½Π΅ ΠΊ этому ΠΌΡ‹ всС стрСмимся?

DOM-запросы Π² стилС jQuery Π²
консоли

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° JQuery прСкрасна. Она ΠΏΡ€Π°Π²ΠΈΠ»Π°
Π²Π΅Π±ΠΎΠΌ большС дСсятилСтия, Π° ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅
статистичСскиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ
ΠΈ сСйчас большС
70% самых популярных Π²Π΅Π±-страниц Π² ΠΌΠΈΡ€Π΅
Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ jQuery. Π­Ρ‚ΠΎ
просто ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π΅, с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ
Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π²Ρ‹ΡˆΠ»Π° Π΅Ρ‰Π΅ Π² 2006 Π³ΠΎΠ΄Ρƒ.

Π‘Π°ΠΌΡ‹ΠΉ популярный API jQuery прСдоставляСт
$, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для Π²Ρ‹Π±ΠΎΡ€Π° элСмСнтов
DOM. Консоль Π² инструмСнтах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°
позволяСт Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСлСктор $
ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Под ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ $ являСтся
псСвдонимом document.querySelector().

НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΡ‹ΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
ΠΊΠ»ΠΈΠΊ ΠΏΠΎ элСмСнту, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это
ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ИспользованиС сСлСктора $ для ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ ΠΊΠ»ΠΈΠΊΠ° ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅

Аналогично, $$ это псСвдоним для
document.querySelectorAll():

ИспользованиС сСлСктора $$ для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ класса

Π’ Ρ€ΡƒΠΊΠ°Π²Π΅ Ρƒ $ припрятаны ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠ·Ρ‹Ρ€ΠΈ.
Иногда сСлСктор ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слишком
слоТным, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ памяти, ΠΈΠ»ΠΈ
ΠΆΠ΅ Π²Ρ‹ просто ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ Π·Π½Π°Ρ‚ΡŒ достаточно
спСцифичный сСлСктор. Если Π²Ρ‹ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅
элСмСнт Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Elements, Π²Ρ‹ смоТСтС
ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² консоли ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ
ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $0:

ИспользованиС сСлСктора $0

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Ρ‚ΠΎΠ³ΠΎ, консоль позволяСт Π½Π°ΠΌ
ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ послСднСму
Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ элСмСнту, Π½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΊ
пяти, ΠΏΠΎ порядку. Π­Ρ‚ΠΈ элСмСнты доступны
благодаря ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ $0 β€” $4.

ИспользованиС сСлСкторов $0 β€” $4

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ свойств элСмСнта

Π’ΠΊΠ»Π°Π΄ΠΊΠ° с элСмСнтами ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π°.
Π’Π°ΠΌ хранится DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ нашСго сайта, Ρ‡Ρ‚ΠΎ
позволяСт Π½Π°ΠΌ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ CSS ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ
элСмСнту. Π’Π°ΠΌ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния
Π² элСмСнты прямо Π½Π° Π»Π΅Ρ‚Ρƒ.

Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ я нашСл ΠΎΠ΄ΠΈΠ½ ΠΎΡ‡Π΅Π½ΡŒ
классный ΠΏΡ€ΠΈΠ΅ΠΌ β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
свойства элСмСнта (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свойства)
ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ контСкстного мСню.

НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСлСктор
элСмСнта:

Π­Ρ‚ΠΎΡ‚ сСлСктор ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСдостаточно
ΠΈΠ»ΠΈ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ спСцифичным для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π°,
Π½ΠΎ ΠΎΠ½ способСн сущСствСнно ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ
Π²Π°ΡˆΡƒ Тизнь ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅.

Как Π²ΠΈΠ΄Π½ΠΎ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³ΠΈΡ„ΠΊΠ΅, Π²
контСкстном мСню позиция Β«ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ»
скрываСт нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… элСгантных
возмоТностСй для копирования. МоТно
ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ стили элСмСнта, JS-ΠΏΡƒΡ‚ΡŒ
(document.querySelector(SELECTOR)) ΠΈΠ»ΠΈ Xpath.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ сСтСвых запросов

Иногда случаСтся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со страницСй,
ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ ΠΌΠ½ΠΎΠ³ΠΎ запросов. Π’ΠΎ Π΅ΡΡ‚ΡŒ,
Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠœΠΠžΠ“Πž.

И ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅,
ΠΏΡ€ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС эти запросы ΠΌΠΎΠΆΠ΅Ρ‚
Π±Ρ‹Ρ‚ΡŒ слоТно. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‡Ρ‚ΠΎ
Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΈΡ… ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ.

ПанСль инструмСнтов Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° (Π²ΠΊΠ»Π°Π΄ΠΊΠ°
Β«NetworkΒ») содСрТит быстрыС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ
для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² запросов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ
XHR/Fetch, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй, скрипты JS,
изобраТСния ΠΈ Π΄Ρ€.:

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅
ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ просто Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ
ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° filter
сразу Π½Π°Π΄ панСлью инструмСнтов. Π’Π°ΠΊ
ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ поиск ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ
запросов:

Π˜ΠΌΠΈΡ‚Π°Ρ†ΠΈΡ Ρ€Π°Π·Π½Ρ‹Ρ… скоростСй
сСти

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΊΠ»Π°Π΄Ρƒ
Β«NetworkΒ». Π‘ Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
наш сайт Π² условиях Ρ€Π°Π·Π½ΠΎΠΉ скорости
ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ установлСно
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ online β€” Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ»Π°Π΄ΠΈΡ‚ΡŒΡΡ
всСй ΡˆΠΈΡ€ΠΎΡ‚ΠΎΠΉ пропускной способности
вашСго соСдинСния.

Но ΠΊΡ€ΠΎΠΌΠ΅ online Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ: Fast
3G, Slow 3G ΠΈ offline, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ
ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ скачивания, Π° Ρ‚Π°ΠΊΠΆΠ΅
ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ оТидания. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ
ΡΡ‹ΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ, Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π΄ΠΊΡƒΡŽ
ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ собствСнный
ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Add…:

ИспользованиС Live Expressions в
консоли

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Live Expressions?

Live Expressions это выраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅
Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части
вашСй консоли. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

Благодаря Live Expressions Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅
ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° вашСм ΠΊΠΎΠ΄Π΅ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ
Chrome Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ:

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ
ΠΊΠ°ΠΊ Π² консоли, Ρ‚Π°ΠΊ ΠΈ Π² скриптС.

Π˜ΠΌΠΈΡ‚Π°Ρ†ΠΈΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… устройств

Π’Π΅ ΠΈΠ· нас, ΠΊΠΎΠΌΡƒ приходится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с
ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹ΠΌΠΈ прилоТСниями, Π·Π½Π°ΡŽΡ‚, ΠΊΠ°ΠΊΠΎΠ²ΠΎ
это. ΠšΠΎΡ€ΠΏΠΈΡˆΡŒ Π½Π°Π΄ созданиСм красивого
ΠΌΠ°ΠΊΠ΅Ρ‚Π°, Π° ΠΎΠ½ ΠΏΠΎΡ‚ΠΎΠΌ Π½Π΅Π²Π΅Ρ€Π½ΠΎ Π²Π΅Π΄Π΅Ρ‚ сСбя
Π½Π° дСвайсах с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ.

Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ мСдиазапросах,
Π»ΡƒΡ‡ΡˆΠ΅ расскаТу ΠΎΠ± ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ способС
ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π»ΠΈ ΠΎΠ½ΠΈ.

Если ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Π°
ΠΈ смартфона, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ
просмотра Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° мСняСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹
ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·Π½Ρ‹Ρ… устройств.

НуТноС устройство ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ·
ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠ³ΠΎ списка Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных
(iPhone X, iPad Pro, Pixel 2, Pixel 2 XL ΠΈ ΠΏΡ€.). Π—Π°ΠΌΠ΅Ρ‚Π½ΠΎ,
Ρ‡Ρ‚ΠΎ список Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ устарСл, Π½ΠΎ я Π΄ΡƒΠΌΠ°ΡŽ,
Ρ‡Ρ‚ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° случаСв ΠΎΠ½ всС Ρ€Π°Π²Π½ΠΎ
ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚.

Если Π²Ρ‹ Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π² спискС Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ
устройства, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ
ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅
Π½ΠΈΠΆΠ΅ я сымитировал OnePlus 6:

ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
состояния элСмСнта

Π’Π°ΠΌ ΡΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ΡŒ Π² ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ,
ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ с :hover-стилями
элСмСнта, Π½ΠΎ всякий Ρ€Π°Π·, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅
ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ ΠΊ Ρ€Π°Π·Π΄Π΅Π»Ρƒ стилСй Π²
инструмСнтах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, элСмСнт
пСрСстаСт Π±Ρ‹Ρ‚ΡŒ hovered?

Π§Ρ‚ΠΎ ΠΆ, инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π²
Chrome ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ
Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояниС элСмСнта, Ρ‡Ρ‚ΠΎΠ±Ρ‹
Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΌΠΈΡ€Π½ΠΎ ΠΏΠΎΠ²ΠΎΠ·ΠΈΡ‚ΡŒΡΡ с Π΅Π³ΠΎ свойствами.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ быстро ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ
состояниС элСмСнта Π½Π° полоТСния :active,
:hover, :focus, :focus-within ΠΈ :visited.

Π’ΠΎΡ‚ ΠΈ всС ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с инструмСнтами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ я Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅! Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!

Π˜ΠΌΠΈΡ‚Π°Ρ†ΠΈΡ select с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Alpine.js

<select>
	<option>First</option>
	<option>Second</option>
	<option>Third</option>
<select>
 
<select>
	<option>First</option>
	<option>Second</option>
	<option>Third</option>
<select>

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт β€” Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ с классом form-input, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ мСняСт ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ основного Π±Π»ΠΎΠΊΠ°.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ html Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, Π½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΅Π³ΠΎ ΡΡ‹ΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ своСму повСдСнию SELECT ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌΡƒ dropdown, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π». ВмСсто ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ DIV, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ элСмСнт. Рядом с Π½ΠΈΠΌ ΠΈΠΊΠΎΠ½ΠΊΠ° (ΠΈΠ»ΠΈ юникод-символ β–Ό), которая ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ элСмСнт. Клик Π½Π° этом Π±Π»ΠΎΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ содСрТимоС — список Π²Ρ‹Π±ΠΎΡ€Π°.

Бписок Π²Ρ‹Π±ΠΎΡ€Π° β€” это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π±Π»ΠΎΡ‡Π½Ρ‹Π΅ элСмСнты. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ элСмСнтов курсором, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° click, Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π° упрощаСтся β€” достаточно ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ это событиС Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ элСмСнтС ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ value всСго ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

Π•Ρ‰Ρ‘ нюанс. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ SELECT ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ β€” Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² Π½Π΅Ρ‘ Β«Π²ΠΊΠ»ΠΈΠ½ΠΈΡ‚ΡŒΡΡΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ оказалось Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΠΎΠ»Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹.

Π‘Π°ΠΌΡ‹ΠΉ простой способ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скрытоС ΠΏΠΎΠ»Π΅ INPUT, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ сразу ΠΆΠ΅ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, благодаря рСактивности Alpine.

Π’ΠΎΡ‚ Ρ‚Π°ΠΊ это Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π² ΠΈΡ‚ΠΎΠ³Π΅:

Π’Π½Π°Ρ‡Π°Π»Π΅ рассмотрим ΠΊΠΎΠ΄ «каркаса».

<div x-data="{
		val: 'Second', 
		items: ['First', 'Second', 'Third'],
		show: false
		}" 
		class="w200px pos-relative b-inline">
		
	<input x-model="val" type="hidden" name="mySelect">
	
	<div 
		@click="show = true" 
		@keydown.enter="show = !show" 
		tabindex="3" 
		class="hover-t-blue700 pos-relative bordered rounded5 transition-var">
		
	    <div x-text="val"></div>
	    <div :class="{'t-blue bg-blue100': show}">β–Ό</div>
    </div>
    
    <div x-show="show" x-cloak>
    	. .. элСмСнты списка...
    </div>
</div>

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ списка ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ массива Π² items. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ valΡ…Ρ€Π°Π½ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€. Π§Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ showΠΌΡ‹ управляСм Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ элСмСнтов списка.

Π‘Ρ€Π°Π·Ρƒ связываСм INPUT с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ valΡ‡Π΅Ρ€Π΅Π· x-modelΠΈ сразу Π΅Ρ‘ скрываСм для отобраТСния. Когда ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Ρ„ΠΎΡ€ΠΌΡ‹ (submit) это ΠΏΠΎΠ»Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠΌ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ Π² Ρ„ΠΎΡ€ΠΌΡƒ.

Π‘Π»ΠΎΠΊ Π²Ρ‹Π±ΠΎΡ€Π° состоит ΠΈΠ· Π΄Π²ΡƒΡ… элСмСнтов. Они Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ рядом ΠΈ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‚ стандартноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ css-классов.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС valс ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ x-text. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ элСмСнтС просто добавляСтся для красоты подсвСтка Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° (это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой символ) ΠΊΠΎΠ³Π΄Π° список элСмСнтов Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚.

Бписок открываСтся Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ click. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Π»ΠΎΠ²ΠΈΠΌ события ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Enter, Π½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ фокус Π²Π²ΠΎΠ΄Π°. ДСлаСтся это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартного html-Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° tabindex, Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ/страницу. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ этот Ρ‚Ρ€ΡŽΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ ΠΊ элСмСнту с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клавиши табуляции.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим ΠΊΠ°ΠΊ устроСн Π±Π»ΠΎΠΊ Π²Ρ‹Π±ΠΎΡ€Π° элСмСнтов.

<div x-show="show" x-cloak>
    	<div 
    		@click.away="show = false" 
    		:class="{'bor-blue': show}" 
    		class="mar5-t bordered pos-absolute w200px z-index1 bg-white cursor-pointer">
    	
    		<template x-for="item in items">
    			<div 
    				@click="val = item; show = false" 
    				:class="{'t-white bg-blue600': val == item}" 
    				x-text="item" 
    				class="hover-bg-blue700 hover-t-white pad10-rl lh300">
    			</div>
    		</template>
    		
    	</div>
    </div>

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ click.awayΠ·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊ, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ»ΠΈΠΊ Π²Π½Π΅ Π΅Π³ΠΎ области. Когда Π±Π»ΠΎΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚, Ρ‚ΠΎ подсвСчиваСм Π΅Π³ΠΎ синим Π±ΠΎΡ€Π΄ΡŽΡ€ΠΎΠΌ. РасполоТСниС Π±Π»ΠΎΠΊΠ° опрСдСляСтся Ρ‡Π΅Ρ€Π΅Π· css-классы.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π²Ρ‹Π±ΠΎΡ€Π° формируСтся Ρ‡Π΅Ρ€Π΅Π· x-for, Π³Π΄Π΅ ΠΌΡ‹ просто ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ элСмСнты items. По ΠΊΠ»ΠΈΠΊΡƒ Π½Π° элСмСнтС присваиваСм Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ val, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π² скрытый INPUT ΠΈ отобразится Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅. Ну ΠΈ сразу скрываСм Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список. Π’ΠΎΡ‚ собствСнно ΠΈ вся Π»ΠΎΠ³ΠΈΠΊΠ°.

Ѐокус

Ѐокус Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаётся автоматичСски Π·Π° счёт tabindex. Если Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ (Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΡ‹ΡˆΠΊΠΎΠΉ, Π° Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅ это Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ), Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ tabindex, Π° Ρ„ΠΎΠΊΡƒΡΠ½ΡƒΡŽ Ρ€Π°ΠΌΠΊΡƒ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ css-классов с привязкой ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ show.

ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°

НСтрудно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€ элСмСнтов клавишами курсора. ВСорСтичСски Π½Π΅Ρ‚ слоТностСй ΠΏΠΎΠ²Π΅ΡΠΈΡ‚ΡŒ Π½Π° элСмСнты ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ keydown, Π½ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° услоТнится. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° смСны фокуса для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта. Π›ΠΈΡ‡Π½ΠΎ ΠΌΠ½Π΅ каТСтся, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π΄ΠΈ «спортивного» интСрСса β€” Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Ссли Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ соотвСтствия повСдСнию SELECT, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠΆ ΠΈ Π²Π·ΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ. Π­Ρ‚ΠΎ хотя Π±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ. πŸ™‚

Π˜Ρ‚ΠΎΠ³ΠΎ

  • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ достаточно ΠΎΠ±ΡŠΡ‘ΠΌΠ½Ρ‹ΠΉ. Π•Π³ΠΎ HTML-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ x-speadΠΈ вынСсти Π»ΠΎΠ³ΠΈΠΊΡƒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ js-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.
  • Π’ этом ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ любоС ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ дизайнСрскиС ΠΏΡ€ΠΈΡ‡ΡƒΠ΄Ρ‹.
  • Если Π²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠΉΠΌΡ‘Ρ‚Π΅ Π΅Π³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Ρ‚ΠΎ смоТСтС ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹.
  • ΠœΠΈΠ½ΡƒΡ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ для ОБ ΠΈ Π½Π΅ подстроится ΠΏΠΎΠ΄ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½, ΠΊΠ°ΠΊ стандартный SELECT.
  • Π•ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с фокусом ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ.
Π”Ρ€ΡƒΠ³ΠΈΠ΅ записи сайта

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³Π°Π»Π΅Ρ€Π΅ΡŽ Π² CSS: ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° β€” ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ CSS

Π“ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΠΎΡƒΠΏΡ€Π°ΠΆΠ½ΡΡ‚ΡŒΡΡ Π² использовании Π½ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ ΠΎ CSS? Π’ этом практичСском ΡƒΡ€ΠΎΠΊΠ΅ Π²Π°ΠΌ прСдстоит ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΡƒΡŽ Π³Π°Π»Π΅Ρ€Π΅ΡŽ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΏΠ»ΠΈΡ‚ΠΎΠΊ, примСняя ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ. ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΏΠ»Π°Π½ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ°, послС Ρ‡Π΅Π³ΠΎ приступим ΠΊ Π΄Π΅Π»Ρƒ.

План практичСского ΡƒΡ€ΠΎΠΊΠ°

Π˜Ρ‚Π°ΠΊ, Π²Π°ΠΌ навСрняка интСрСсно, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Π°ΡˆΠΈΡ… Ρ‚Ρ€ΡƒΠ΄ΠΎΠ² ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ. ΠœΡ‹ сразу продСмонстрируСм Π²Π°ΠΌ ΠΌΠ°ΠΊΠ΅Ρ‚ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ Ρ„ΠΎΡ‚ΠΎΠ³Π°Π»Π΅Ρ€Π΅ΠΈ:

ΠŸΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ ΠΏΠ»Π°Π½ создания этой Π³Π°Π»Π΅Ρ€Π΅ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:
  1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠΉ сСтки.
  2. ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€.
  3. Бтилизация подписСй.
  4. Π€ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΡˆΡ‚Ρ€ΠΈΡ…ΠΈ.
  5. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π° для Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΎΠΊΠΎΠ½.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²

Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ Π°Ρ€Ρ…ΠΈΠ² с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ для вас Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π° Ρ„Π°ΠΉΠ»Ρ‹ gallery.html ΠΈ style.css (ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ css). Как ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Π² Ρ‚Π΅Π³Π΅ <head> ΠΌΡ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» сброса стилСй (Π½Π° этот Ρ€Π°Π· Reset.css вмСсто Normalize) ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ стилСй (ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ ΠΏΡƒΡΡ‚ΡƒΡŽ), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡˆΡ€ΠΈΡ„Ρ‚ Google Fonts. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ стилСй lightbox.min.css, Π° Π² ΠΊΠΎΠ½Ρ†Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° β€” скрипт lightbox-plus-jquery.min.js. Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ эти Π΄Π²Π° Ρ„Π°ΠΉΠ»Π°, ΠΌΡ‹ скаТСм ΠΏΠΎΠ·ΠΆΠ΅.

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ² RAR

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„ΠΎΡ‚ΠΎΠ³Π°Π»Π΅Ρ€Π΅ΠΈ

Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ структуру HTML-страницы. Π’ Ρ‚Π΅Π»Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° располоТСн Π±Π»ΠΎΠΊ-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ <h2> ΠΈ основной Π±Π»ΠΎΠΊ <div> с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ #gallery. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° Π³Π°Π»Π΅Ρ€Π΅ΠΈ находится Π΄Π΅Π²ΡΡ‚ΡŒ HTML5-Ρ‚Π΅Π³ΠΎΠ² <figure> с классом .photo, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит Ρ‚Π΅Π³ <img> с ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€ΠΎΠΉ изобраТСния ΠΈ Ρ‚Π΅Π³ <figcaption> с подписью ΠΊ Ρ„ΠΎΡ‚ΠΎ. ΠšΡ€ΠΎΠΌΠ΅ этого, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΠΎ Π² Ρ‚Π΅Π³ <a>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ссылку Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»Π½ΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ графичСский Ρ„Π°ΠΉΠ».

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ сразу ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Ρ…:
  • Π’ создаваСмой Π½Π°ΠΌΠΈ тСстовой Π³Π°Π»Π΅Ρ€Π΅Π΅ всС ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅: ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ (ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚) ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ (300Γ—300 пиксСлСй). ΠŸΡ€ΠΈ этом ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΎΡ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΈ. ΠšΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π³Π°Π½Ρ‚Π½ΡƒΡŽ Ρ€ΠΎΠ²Π½ΡƒΡŽ сСтку, Π±Π΅Π· нСобходимости ΠΏΠΎΠ΄Π³ΠΎΠ½ΡΡ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΡƒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°, Ρ‚Π΅ΠΌ самым искаТая Π΅Π΅ Π²ΠΈΠ΄. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ созданиСм ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€ Ρ‡Π°Ρ‰Π΅ всСго занимаСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ скрипт, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Π½Π° сайтС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ.
  • Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, каТдая ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π° слуТит ссылкой Π½Π° ΠΏΠΎΠ»Π½ΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ Ρ„ΠΎΡ‚ΠΎ. На Π΄Π°Π½Π½ΠΎΠΌ этапС, Ссли Π²Ρ‹ ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ Π½Π΅ΠΉ, Ρ„ΠΎΡ‚ΠΎ откроСтся Π½Π° Π½ΠΎΠ²ΠΎΠΉ страницС. На соврСмСнных сайтах Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΆΠ΅ встрСчаСтся нСчасто: скорСС всСго, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‡Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ просмотр ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ рСализовываСтся Π²ΠΎ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ остаСтся Π½Π° Ρ‚ΠΎΠΉ ΠΆΠ΅ страницС, Ρ‡Ρ‚ΠΎ вСсьма ΡƒΠ΄ΠΎΠ±Π½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ наш ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ Π½Π΅ посвящСн языку JavaScript, всё ΠΆΠ΅ Π² ΠΊΠΎΠ½Ρ†Π΅ ΡƒΡ€ΠΎΠΊΠ° ΠΌΡ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌ вас со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ красивоС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ снимка. ΠžΠ±Π΅Ρ‰Π°Π΅ΠΌ, слоТно Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, ΠΈ Π²Π°ΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ понравится!

А ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ просмотритС Π²Π΅Π±-страницу gallery.html Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π’ΠΎΡ‚ эту Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ, ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ вСсьма Π½Π΅Π²Π·Ρ€Π°Ρ‡Π½ΡƒΡŽ ΠΈ ΡΠΊΡƒΡ‡Π½ΡƒΡŽ, Π½Π°ΠΌ сСгодня ΠΈ прСдстоит ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΊΡ€Π°ΡΠΈΠ²ΡƒΡŽ Ρ„ΠΎΡ‚ΠΎΠ³Π°Π»Π΅Ρ€Π΅ΡŽ. ΠŸΠΎΠ΅Ρ…Π°Π»ΠΈ!

1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠΉ сСтки

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

ΠžΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° словах Π²Ρ‹ΡˆΠ΅, запишСм ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ Π² Ρ„Π°ΠΉΠ» style.css:


.container {
    width: 100%; /* ΡˆΠΈΡ€ΠΈΠ½Π° Π±Π»ΠΎΠΊΠ°-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° */
    max-width: 960px; /* максимальная ΡˆΠΈΡ€ΠΈΠ½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° */
    margin: 0 auto; /* этот ΡΡ‚ΠΈΠ»ΡŒ Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ */
}
. photo {
    float: left; /* Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ элСмСнтам Π²Ρ‹ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ */
    width: 33.333333%; /* устанавливаСм ΡˆΠΈΡ€ΠΈΠ½Ρƒ элСмСнта */
    padding: 10px; /* добавляСм отступы с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ стороны */
    box-sizing: border-box; /* мСняСм способ вычислСния ΡˆΠΈΡ€ΠΈΠ½Ρ‹ */
}

Обновив страницу Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ измСнСния. ΠœΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹ ΡƒΠΆΠ΅ Π²Ρ‹ΡΡ‚Ρ€ΠΎΠΈΠ»ΠΈΡΡŒ ΠΏΠ»ΠΈΡ‚ΠΊΠΎΠΉ ΠΏΠΎ Ρ‚Ρ€ΠΈ Π² ряд. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ странноС ΠΈ Π΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ число для ΡˆΠΈΡ€ΠΈΠ½Ρ‹ элСмСнта? Всё вСсьма просто: Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² строкС ΠΏΠΎΠΌΠ΅Ρ‰Π°Π»ΠΎΡΡŒ Ρ‚Ρ€ΠΈ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈ Π±Ρ‹ ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ мСсто ΠΏΠΎ максимуму (всС 100% ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°). ΠœΡ‹ Π΄Π΅Π»ΠΈΠΌ 100Β Π½Π°Β 3 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ число 33Β ΠΈΒ 3Β Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π΅. ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ числа Π΄ΠΎ 33.333333 Π² нашСй ситуации ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΡˆΠΈΡ€ΠΈΠ½Π° ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹ становится 319.98 пиксСлСй. 319.98Β Γ—Β 3Β =Β 959.94, Ρ‡Ρ‚ΠΎ практичСски совпадаСт с ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (ΠΊ соТалСнию, совсСм Π±Π΅Π· ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ нСльзя, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… числах Π² CSS).

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ нашСй сСтки. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΎΠΊΠ½Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° нСсколько Ρ€Π°Π· ΠΈ ΠΏΠΎΠ½Π°Π±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅ Π·Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ элСмСнтов. ΠŸΡ€ΠΈ ΡˆΠΈΡ€ΠΈΠ½Π΅ ΠΌΠ΅Π½Π΅Π΅ 977 пиксСлСй элСмСнты Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ сСбя вСсти. Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ изобраТСния ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€ Π½Π΅ ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡΡ‚ΠΈΠ»ΡŒ для обСспСчСния адаптивности ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ:


.photo img {
    display: block;
    max-width: 100%;
    height: auto;
}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ, ΠΈ Π΄Π°ΠΆΠ΅ Π½Π° Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Ρ… с ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ экрана 320 пиксСлСй наша галСрСя вСсьма ΡƒΠ΄ΠΎΠ±Π½Π° Π² использовании ΠΈ красиво выглядит.

2. ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€

Богласно ΠΌΠ°ΠΊΠ΅Ρ‚Ρƒ, каТдая ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°ΠΌΠ»Π΅Π½Π° Π² Ρ€Π°ΠΌΠΊΡƒ свСтло-сСрого Ρ†Π²Π΅Ρ‚Π°. Π¨ΠΈΡ€ΠΈΠ½Π° Ρ€Π°ΠΌΠΊΠΈ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ стороны составляСт 10 пиксСлСй. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ€Π°ΠΌΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ двумя способами, ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ½ΠΈ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. ΠœΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΠ±Π° способа.

Бпособ I: свойство border

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π°ΠΌΠΊΡƒ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π΅Π³Π° <img>.
Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ этот ΠΊΠΎΠ΄ ΠΊ сСлСктору .photoΒ img:


border: 10px solid #eee;
box-sizing: border-box;

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

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ страницу Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.
Β 

Бпособ II: свойства background-color ΠΈ padding

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ Ρ€Π°ΠΌΠΊΠΈ посрСдством создания 10-ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… отступов ΠΈ Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π½ΠΈΡ Ρ„ΠΎΠ½Π° Π² свСтло-сСрый Ρ†Π²Π΅Ρ‚. Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ способа Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:


padding: 10px;
background-color: #eee;
box-sizing: border-box;

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ измСнСния ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π²Π΅Π±-страницу. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π»ΠΈ Π²Ρ‹ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния? Оба способа приводят ΠΊ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΌΡƒ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ, Π½ΠΎ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ отличия Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° ΠΎΠ΄Π½Ρƒ строку мСньшС (Ссли, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΊΡ€Π°Ρ‰Π΅Π½Π½ΡƒΡŽ запись border). Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΉ, Π½ΠΎ ΠΎΠ½ позволяСт ΠΈΠ³Ρ€Π°Ρ‚ΡŒΡΡ с Ρ„ΠΎΠ½ΠΎΠΌ, замСняя Π΅Π³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ рисунок Π»ΠΈΠ±ΠΎ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚, добиваясь Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… интСрСсных эффСктов. Однако свойство border Ρ‚ΠΎΠΆΠ΅ позволяСт ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ рисунки ΠΈ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρ‹, поэтому Ρ€Π°Π·Π½ΠΈΡ†Π° здСсь Π½Π΅Π²Π΅Π»ΠΈΠΊΠ°.

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ способа ΠΌΠΎΠΆΠ½ΠΎ, Ссли Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„ΠΎΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отобраТаСтся Π² Β«Ρ€Π°ΠΌΠΊΠ΅Β», Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» ΠΈ ΠΏΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠ΅ΠΉ. Π—Π°Ρ‡Π΅ΠΌ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ? НапримСр, Π² случаС, ΠΊΠΎΠ³Π΄Π° Π² Π³Π°Π»Π΅Ρ€Π΅Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ изобраТСния с ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌΠΈ областями, ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·-ΠΏΠΎΠ΄ этой ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ области проглядывал Ρ„ΠΎΠ½.

Π‘Ρ‚ΠΈΠ»ΡŒ ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ

ΠŸΠΎΡ€Π° Π½Π°ΠΌ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ псСвдоклассах ΠΈ псСвдоэлСмСнтах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ Π΅Ρ‰Π΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ°. БСгодня Π½Π°ΠΌ понадобится псСвдокласс :hover, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹, ΠΊΠΎΠ³Π΄Π° Π½Π° Π½Π΅Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ курсор, Π° Ρ‚Π°ΠΊΠΆΠ΅ псСвдоэлСмСнт :after для добавлСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹.

Для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΡŽΠ·Π°Π±ΠΈΠ»ΠΈΡ‚ΠΈ (удобства использования) сайта принято Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ эффСкты ΠΊ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ элСмСнтам Π²Π΅Π±-страницы. НапримСр, всС ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ курсора Π½Π° ссылку стандартная стрСлка мСняСтся Π½Π° pointer β€” курсор Π² Π²ΠΈΠ΄Π΅ Ρ€ΡƒΠΊΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ элСмСнт ΠΊΠ»ΠΈΠΊΠ°Π±Π΅Π»Π΅Π½ ΠΈ ΠΊΠ»ΠΈΠΊ ΠΏΠΎ Π½Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ.

Однако ΠΎΠ΄Π½ΠΎΠΉ смСны курсора часто Π±Ρ‹Π²Π°Π΅Ρ‚ нСдостаточно β€” хочСтся Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹ Π΄Π°Π²Π°Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ дСйствиС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ послС ΠΊΠ»ΠΈΠΊΠ° ΠΏΠΎ элСмСнту. ИмСнно этим ΠΌΡ‹ ΠΈ займСмся Π΄Π°Π»Π΅Π΅.

На ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π΅ Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π² состоянии навСдСния Π½Π° Π½Π΅Π΅ курсора. Ѐотография становится ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ, Π° Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ элСмСнта появляСтся ΠΈΠΊΠΎΠ½ΠΊΠ° Π³Π»Π°Π·Π°, Π½Π°ΠΌΠ΅ΠΊΠ°ΡŽΡ‰Π°Ρ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠΊ ΠΏΠΎ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ просмотр ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ изобраТСния.

Π—Π°ΠΏΠΈΡˆΠ΅ΠΌ ΡΡ‚ΠΈΠ»ΡŒ для псСвдокласса .photoΒ a:hover:


.photo a:hover {
    opacity: 0.5;
}

А Ρ‚Π°ΠΊΠΆΠ΅ заставим Ρ‚Π΅Π³ <a> вСсти сСбя ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊ, ΠΈΠ½Π°Ρ‡Π΅ ΠΌΡ‹ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ срабатываСт Π½Π° ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π΅:


.photo a {
    display: block;
}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ сохранитС Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ стилСй, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ страницу Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΈ Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅ курсор Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° стала ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ. Π—Π° это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ свойство opacity, Ρ‡ΡŒΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Β 0 (полная ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ) Π΄ΠΎΒ 1 (полная Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ), Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ числа, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ. Π£Π±Π΅Ρ€ΠΈΡ‚Π΅ курсор, ΠΈ Ρ„ΠΎΡ‚ΠΎ вСрнСтся ΠΊ своСму ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ (Ρ‚.Β Π΅. ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ opacity:Β 1).

ЗаймСмся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΊΠΎΠ½ΠΊΠΈ Π³Π»Π°Π·Π°. Для этого Π½Π°ΠΌ понадобится Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ псСвдоэлСмСнт :after. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ стили Π² Π²Π°ΡˆΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, послС Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ объясним, Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ…:


. photo a:after {
    content: '';
    background: transparent url(../img/icons/eye-icon.png) no-repeat center;
    width: 52px;
    height: 35px;
    position: absolute;
    margin: auto;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    visibility: hidden;
}

Помимо этого Π΄ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ свойство position:Β relative; ΠΊ сСлСктору .photoΒ a.

Π˜Ρ‚Π°ΠΊ, разбСрСмся с Π²Ρ‹ΡˆΠ΅Π½Π°ΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ псСвдоэлСмСнт :after добавляСтся ΠΊ элСмСнту для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти Π½ΡƒΠΆΠ½Ρ‹ΠΉ тСкст послС Π΅Π³ΠΎ содСрТимого. Π­Ρ‚ΠΎΡ‚ тСкст добавляСтся Ρ‡Π΅Ρ€Π΅Π· свойство content. Π’Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ возмоТности :after для Π²Ρ‹Π²ΠΎΠ΄Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… графичСских элСмСнтов. Π’ этом случаС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства content остаСтся пустым, Π° Π½ΡƒΠΆΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ добавляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойства background. ИмСнно это ΠΌΡ‹ ΠΈ сдСлали ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ псСвдоэлСмСнту .photoΒ a:after, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΈΠΊΠΎΠ½ΠΊΡƒ Π³Π»Π°Π·Π° ΠΊΠ°ΠΊ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ рисунок.

Но послС продСлывания этих шагов Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ изобраТСния. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ показалось, ΠΌΡ‹ добавляСм ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту элСмСнта, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π³ΠΎ (ΠΏΠΎΠ·ΠΆΠ΅ эта Ρ‚Π΅ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ). ΠœΡ‹ установили Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌ самой ΠΈΠΊΠΎΠ½ΠΊΠΈ (52Γ—35 пиксСлСй) ΠΈ Π·Π°Π΄Π°Π»ΠΈ свойство position:Β absolute.

Иконка ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π½Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½Π° располоТСна Π½Π΅ ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΊΠΎΠ½ΠΊΡƒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ элСмСнта .photoΒ a, ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ этому элСмСнту свойство position:Β relative. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌΡΡ, Ρ‡Ρ‚ΠΎ со свойством position ΠΌΡ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π±Π΅Π³Π°Π΅ΠΌ Π²ΠΏΠ΅Ρ€Π΅Π΄, поэтому ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠΎΠ΄ ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ получаСтся.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ со стилСм position:Β absolute ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΡƒΠΊΠ°Π·Π°Π² для свойств top, bottom, left ΠΈ right Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, Π° для свойства margin β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ auto.

ПослСднСС, Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ β€” это свойство visibility:Β hidden. Оно ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ/Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ элСмСнта. Π•Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ hidden ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с ΠΏΠ»Π°Ρ‰ΠΎΠΌ-Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΊΠΎΠΉ β€” элСмСнт становится Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ, Π½ΠΎ ΠΏΡ€ΠΈ этом находится Π½Π° страницС ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ мСсто.

Π—Π°Ρ‡Π΅ΠΌ ΠΌΡ‹ скрыли псСвдоэлСмСнт с ΠΈΠΊΠΎΠ½ΠΊΠΎΠΉ? Π§Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ курсора Π½Π° ссылку-ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρƒ. И для этого ΠΌΡ‹ снова обратимся ΠΊ псСвдоклассу :hover. Π—Π°ΠΏΠΈΡˆΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


.photo:hover > a:after {
    visibility: visible;
}

Π­Ρ‚ΠΎΡ‚ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд странный сСлСктор сообщаСт Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ курсора Π½Π° элСмСнт .photo Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ ΠΊ псСвдоэлСмСнту :after Ρ‚Π΅Π³Π° <a>, ΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ для .photo. Π‘Π°ΠΌ ΡΡ‚ΠΈΠ»ΡŒ visibility:Β visible ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠΊΠΎΠ½ΠΊΠ° Π³Π»Π°Π·Π° становится Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ.

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ страницу ΠΈ посмотритС, ΠΊΠ°ΠΊ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ элСмСнты Π½Π° Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠ΅ курсора. Π’Π°ΠΊ выглядит Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Π½Π΅ ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ? Нам ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΡΡ‚ΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ подписи ΠΊ фотографиям, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΡˆΡ‚Ρ€ΠΈΡ…ΠΈ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„ΠΎΡ‚ΠΎ Π²ΠΎ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅.

3. Бтилизация подписСй

Π’ ΠΈΠ΄Π΅Π°Π»Π΅, подпись ΠΊ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎ ΠΈ Π½Π΅ слишком Π±Ρ€ΠΎΡΠ°Ρ‚ΡŒΡΡ Π² Π³Π»Π°Π·Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ наш ΡΡ‚ΠΈΠ»ΡŒ для Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ простым:


.photo figcaption {
    font-family: 'Open Sans', sans-serif;
    color: #999999;
    text-align: center;
    margin-top: 20px;
}

4. Π€ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΡˆΡ‚Ρ€ΠΈΡ…ΠΈ

ΠœΡ‹ Π΅Ρ‰Π΅ Π½Π΅ стилизовали Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π½Π°Π΄ Π³Π°Π»Π΅Ρ€Π΅Π΅ΠΉ. Π”Π°Π²Π°ΠΉΡ‚Π΅ сдСлаСм это:


h2 {
    font-size: 36px;
    text-transform: uppercase;
    color: #cccccc;
    text-align: center;
    margin: 30px 0;
}

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ свойство font-family ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ Π·Π°Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ для всСго Ρ‚Π΅Π³Π° <body>, послС Ρ‡Π΅Π³ΠΎ ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ эту строку ΠΈΠ· стиля для . photoΒ figcaption β€” ΠΎΠ½Π° Ρ‚Π°ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ лишняя:


body {
    font-family: 'Open Sans', sans-serif;
}

А Ρ‡Ρ‚ΠΎΠ±Ρ‹ сам Π±Π»ΠΎΠΊ Π³Π°Π»Π΅Ρ€Π΅ΠΈ Π½Π΅ упирался Π² Π½ΠΈΠ· Π²Π΅Π±-страницы, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅ΠΌΡƒ нСбольшой отступ снизу:


#gallery {
    margin-bottom: 50px;
}

Обновим страницу ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Но Ρ‡Ρ‚ΠΎ это? ΠžΡ‚ΡΡ‚ΡƒΠΏ снизу Π½Π΅ появился. И Ссли ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ высоту Π±Π»ΠΎΠΊΠ° #gallery, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Ρ€Π°Π²Π½Π° Π½ΡƒΠ»ΡŽ. Как Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Ссли этот Π±Π»ΠΎΠΊ Π½Π΅ пустой, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ находятся ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹? ΠžΡ‚Π²Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ: свойство float ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ элСмСнт ΠΈΠ· Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ элСмСнтам Π·Π°Π΄Π°Π½ΠΎ ΠΎΠ±Ρ‚Π΅ΠΊΠ°Π½ΠΈΠ΅ float, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ элСмСнт сТимаСтся ΠΏΠΎ высотС, словно игнорируя присутствиС float-элСмСнтов. Высота родитСля становится Ρ€Π°Π²Π½ΠΎΠΉ Π½ΡƒΠ»ΡŽ, Π»ΠΈΠ±ΠΎ, Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ находятся Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты Π±Π΅Π· обтСкания, высота родитСля приравниваСтся ΠΊ высотС этих элСмСнтов. ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ float-элСмСнтов Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ стиля:


#gallery:after { 
   content: '';
   display: block; 
   height: 0; 
   clear: both;
}

Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… CSS-Β«Ρ…Π°ΠΊΠΎΠ²Β», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈΡΡ‡Π΅Π·Π½ΡƒΠ²ΡˆΠ΅ΠΉ высоты ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. НСмного ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ‹ Π΅Ρ‰Π΅ вСрнСмся ΠΊ ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Π΅Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ. А ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ сохранитС измСнСния Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ стилСй ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π²Π΅Π±-страницу. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π°ΠΌΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ отступ Π² 60 пиксСлСй Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ находится Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ.

5. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π° для Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΎΠΊΠΎΠ½

Настало врСмя Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Lightbox, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчит красивоС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½Ρ‹Ρ… Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Π²ΠΎ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅, Π±Π΅Π· покидания страницы, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π»ΠΈΡΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ прямо Π½Π° мСстС.

Плагин Lightbox, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ JavaScript-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ jQuery, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для налоТСния ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ²Π΅Ρ€Ρ… Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ страницы. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² любом соврСмСнном Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

Π’ Π½Π°Ρ‡Π°Π»Π΅ ΡƒΡ€ΠΎΠΊΠ° ΠΌΡ‹ ΡƒΠΆΠ΅ сказали, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ скрипт ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ стилСй ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ. Π’Π°ΠΌ останСтся лишь ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ data-lightbox="roadtrip" ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ‚Π΅Π³Ρƒ <a>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½Ρƒ, Ρ‡Ρ‚ΠΎ ссылку Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²ΠΎ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ фотографиями, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±ΠΎΠΊΠΎΠ²Ρ‹Π΅ стрСлки.

Π˜Ρ‚Π°ΠΊ, ΠΏΡ€ΠΎΠ΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· дСвяти ссылок нашСй Π³Π°Π»Π΅Ρ€Π΅ΠΈ:


<a href="img/originals/img-01.jpg" data-lightbox="roadtrip">
    <img src="img/img-01-min.jpg" alt="Eagle" />
</a>

Π—Π°Ρ‚Π΅ΠΌ сохранитС измСнСния Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΈ просмотритС Π΅Π³ΠΎ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ просмотра Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΈ соврСмСнСн! ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ стрСлками, Π½Π΅ закрывая Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ. ΠŸΠΎΠ½Π°Π±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅ Π·Π° Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠΊΠ½ΠΎ автоматичСски измСняСт свои Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡΡΡŒ ΠΏΠΎΠ΄ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ изобраТСния.

ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π» Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΈ подпись ΠΊ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ. Для этого Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊ ссылкС Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ β€” data-title="", Π° Π²Π½ΡƒΡ‚Ρ€ΡŒ Π΅Π³ΠΎ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ помСститС тСкст подписи, скопировав ΠΈΠ· Ρ‚Π΅Π³Π° <figcaption>:


<a href="img/originals/img-01.jpg" data-lightbox="roadtrip" data-title="Eagle">
    <img src="img/img-01-min.jpg" alt="Eagle" />
</a>

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ эти дСйствия для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ссылок ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

Если ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Ρƒ вас Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΎΠ±Ρ‰ΠΈΠΉ Π°Ρ€Ρ…ΠΈΠ² с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΌ доступно Π΄Π΅ΠΌΠΎ Π³Π°Π»Π΅Ρ€Π΅ΠΈ:

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π΅ΠΌΠΎ

Β 


ΠœΡ‹ надССмся, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½ΠΎΠ΅ практичСскоС занятиС принСсло Π²Π°ΠΌ ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ CSS. А Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ нас ΠΆΠ΄Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠΊ β€” Π½Π° этот Ρ€Π°Π· Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π° Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π·Π½Π°Π½ΠΈΠΉ ΠΎ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… изобраТСниях.

Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ | ДокумСнтация Cypress

Запуск события Π² элСмСнтС DOM.

  .trigger (имя_события)
.trigger (имя_события, позиция)
.trigger (имя_события, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹)
.trigger (имя_события, x, y)
.trigger (имя события, позиция, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹)
.trigger (имя_события, x, y, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹)
  

ИспользованиС

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС

  cy.get ('a'). Trigger ('mousedown')
  

ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС

  Π».Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ ('touchstart')
cy.location (). trigger ('mouseleave')
  

АргумСнты

eventName (String)

Имя события , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ Π² элСмСнтС DOM.

позиция (строка)

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ событиС. ПолоТСниС ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ являСтся ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ДопустимыС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ: Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ , Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ , Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ , Π»Π΅Π²Ρ‹ΠΉ , Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ , ΠΏΡ€Π°Π²Ρ‹ΠΉ , Π½ΠΈΠΆΠ½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ , Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ .

x (ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ)

РасстояниС Π² пиксСлях ΠΎΡ‚ Π»Π΅Π²ΠΎΠ³ΠΎ края элСмСнта Π΄ΠΎ срабатывания события.

y (ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ)

РасстояниС Π² пиксСлях ΠΎΡ‚ Π²Π΅Ρ€Ρ…Π° элСмСнта Π΄ΠΎ запуска события.

Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ (ΠžΠ±ΡŠΠ΅ΠΊΡ‚)

ΠŸΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для . trigger () .

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ свойства события (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,Π³Ρ€Π°ΠΌΠΌ. clientX , shiftKey ), ΠΈ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Ρ‹ ΠΊ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ( clientX , pageX ΠΈ Ρ‚. Π”.) ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ полоТСния.

Π’Ρ‹Ρ…ΠΎΠ΄

Бобытия ΠΌΡ‹ΡˆΠΈ

Запуск навСдСния курсора ΠΌΡ‹ΡˆΠΈ

Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ DOM Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Β«ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌΒ» состоянии Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ запускаСмоС событиС (ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ ΠΈ Π½Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ).

  cy.get (Β«ΠΊΠ½ΠΎΠΏΠΊΠ°Β»).Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ ('Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠ΅ курсора')
  

Π˜ΠΌΠΈΡ‚Π°Ρ†ΠΈΡ события Β«Π΄ΠΎΠ»Π³ΠΎΠ΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅Β»

  cy.get ('. Target'). Trigger ('mousedown')
cy.wait (1000)
cy.get ('. target'). trigger ('mouseup')
  

Запуск

mousedown с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ

 
cy.get ('. target'). trigger ('mousedown', {button: 0})

cy.get ('. target'). trigger ('mousedown', {button: 1})

cy.get ('. target'). trigger ('mousedown', {button: 2})
  

jQuery UI Sortable

Для ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ пСрСтаскивания с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ jQuery UI sortable трСбуСтся свойств pageX ΠΈ pageY вмСстС с , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅: 1 .

  cy.get ('[data-cy = draggable]')
  .trigger ('mousedown', {ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ: 1, pageX: 600, pageY: 100})
  .trigger ('mousemove', {which: 1, pageX: 600, pageY: 600})
  .trigger ('mouseup').
  

ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅

ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с нашим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π°, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ события ΠΌΡ‹ΡˆΠΈ ΠΈ пСрСтаскивания, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ пСрСтаскиваниС

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ измСнСния

ВзаимодСйствиС с Π²Ρ…ΠΎΠ΄ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° (ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ)

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π²Ρ…ΠΎΠ΄ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° (ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ), Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ
Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ событиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ.

НиТС ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ jQuery val () для установки значСния, Π° Π·Π°Ρ‚Π΅ΠΌ запускаСм событиС change .

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ вмСсто этого ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° событиС input , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ запускаСтся, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ, Π½ΠΎ Π½Π΅ поддСрТиваСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ.

  cy.get ('input [type = range]'). As ('range')
  .invoke ('Π²Π°Π»', 25)
  .trigger ('ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ')

cy.get ('@ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½'). Π±Ρ€Π°Ρ‚ΡŒΡ ΠΈ сСстры ('p'). should ('have.text', '25')
  

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ

ΠΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

mousedown Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠΈ

  cy.get ('ΠΊΠ½ΠΎΠΏΠΊΠ°'). trigger ('mousedown', 'topRight')
  

ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π°

  cy.get ('button'). Trigger ('mouseup', 15, 40)
  

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ событиС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠ»Ρ‹Π²Π°Ρ‚ΡŒ.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ событиС всплываСт Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ DOM. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ всплытиС события.

  cy.get ('ΠΊΠ½ΠΎΠΏΠΊΠ°'). Trigger ('mouseover', {ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΈ: false})
  

Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ

clientX ΠΈ clientY событиС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ

Π­Ρ‚ΠΎ отмСняСт автоматичСскоС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° основС самого элСмСнта.ПолСзно для Ρ‚Π°ΠΊΠΈΡ… событий, ΠΊΠ°ΠΊ mousemove , ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ позиция Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π²Π½Π΅ самого элСмСнта.

  cy.get ('ΠΊΠ½ΠΎΠΏΠΊΠ°'). Trigger ('mousemove', {clientX: 200, clientY: 300})
  

Запуск Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² событий.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ cy.trigger () запускаСт событиС . Но Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ события, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ MouseEvent ΠΈΠ»ΠΈ KeyboardEvent .

Π’ этом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ eventConstructor .

  cy.get ('ΠΊΠ½ΠΎΠΏΠΊΠ°'). Trigger ('mouseover', {eventConstructor: 'MouseEvent'})
  

ΠΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ сначала Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ возмоТности дСйствия

.trigger () — это Β«ΠΊΠΎΠΌΠ°Π½Π΄Π° дСйствия», которая слСдуСт всСм ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ здСсь.

Бобытия

КакоС событиС я Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ?

cy.trigger () — это ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, которая ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ запуск событий, Ρ‡Π΅ΠΌ ΠΈΡ… созданиС ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ любоС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ событиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Cypress стараСтся Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π² стороннСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅) ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ… событиС, ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ свойства.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ я Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ события?

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ MouseEvent , Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ свойств экзСмпляров классов событий доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Из-Π·Π° этого ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ значСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… свойств, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ pageX , pageY .Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈ тСстировании Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях.

Различия

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ запуском ΠΈ событиСм ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cypress?

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ:

  cy.get ('ΠΊΠ½ΠΎΠΏΠΊΠ°'). Trigger ('фокус')
cy.get ('ΠΊΠ½ΠΎΠΏΠΊΠ°'). focus ()



cy.get ('ΠΊΠ½ΠΎΠΏΠΊΠ°'). trigger ('Ρ‰Π΅Π»Ρ‡ΠΎΠΊ')
cy.get ('ΠΊΠ½ΠΎΠΏΠΊΠ°'). click ()
  

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±ΠΎΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² сначала ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ элСмСнта, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ «истинныС» ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ дСйствия Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всС дСйствия Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ дСйствия Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня для выполнСния Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² спСцификации.

.trigger () Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ событиС ΠΈ большС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ вашСго ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»Ρ событий Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ, Π½ΠΎ Π½Π΅ слСдуСт ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π° самом Π΄Π΅Π»Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ «сдСлаСт» для этих событий. По большСй части это Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, поэтому .trigger () — отличная врСмСнная остановка, Ссли ΠΊΠΎΠΌΠ°Π½Π΄Π° / событиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅, Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹.

ВрСбования

УтвСрТдСния

  • . trigger () Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° элСмСнт достигнСт состояния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

  • .trigger () Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΆΠ΄Π°Ρ‚ΡŒ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ.

Π’Π°ΠΉΠΌ-Π°ΡƒΡ‚Ρ‹

  • .trigger () ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΡ‚Π΅Ρ‡ΡŒ врСмя оТидания, ΠΏΠΎΠΊΠ° элСмСнт достигнСт состояния дСйствия.

  • .trigger () ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΡ‚Π΅ΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ для прохоТдСния.

Запуск события change для Ρ‚ΠΈΠΏΠ° Π²Π²ΠΎΠ΄Π° = ’range’

  Π».ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ('. Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½-Π²Π²ΠΎΠ΄Π°-Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°')
  .invoke ('Π²Π°Π»', 25)
  .trigger ('ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ')
  

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅, Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΊΠ°ΠΊ:

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ консоль Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ВСрсия ИзмСнСния
6.1.0 Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​опция scrollBehavior
3.5.0 Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ свойства screenX ΠΈ screenY ΠΊ событиям
0.20,0 .trigger () Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​команда

Π˜ΠΌΠΈΡ‚Π°Ρ†ΠΈΡ событий ΠΌΡ‹ΡˆΠΈ Π² JavaScript

Для ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования ΠΌΠ½Π΅ Π½ΡƒΠΆΠ΅Π½ Π±Ρ‹Π» способ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ события ΠΌΡ‹ΡˆΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«mousedownΒ». Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования mousedown Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ вашС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ вСсти сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π—Π΄Π΅ΡΡŒ я ΠΏΠΎΠΊΠ°ΠΆΡƒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ событиС ΠΌΡ‹ΡˆΠΈ ΠΊΠ°ΠΊ Π² чистом JavaScript, Ρ‚Π°ΠΊ ΠΈ Π² jQuery с ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΌΡ‹ΡˆΠΈ.

Чистый JavaScript, имитация Ρ‰Π΅Π»Ρ‡ΠΊΠ°

  function mouseEvent (type, sx, sy, cx, cy) {
  var evt
  var e = {
    ΠΏΡƒΠ·Ρ‹Ρ€ΠΈ: ΠΏΡ€Π°Π²Π΄Π°,
    отмСняСмый: type! = 'mousemove',
    Π²ΠΈΠ΄: ΠΎΠΊΠ½ΠΎ,
    Π΄Π΅Ρ‚Π°Π»ΡŒ: 0,
    screenX: sx,
    screenY: sy,
    clientX: cx,
    clientY: cy,
    ctrlKey: лоТь,
    altKey: лоТь,
    shiftKey: лоТь,
    metaKey: лоТь,
    ΠΊΠ½ΠΎΠΏΠΊΠ°: 0,
    relatedTarget: undefined,
  }
  Ссли (Ρ‚ΠΈΠΏ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. createEvent == 'function') {
    evt = document.createEvent ('MouseEvents')
    evt.initMouseEvent (
      Ρ‚ΠΈΠΏ,
      Π΅. ΠΏΡƒΠ·Ρ‹Ρ€ΠΈ,
      Π΅. отмСняСмый,
      e.view,
      Π΅. Π΄Π΅Ρ‚Π°Π»ΠΈ,
      e.screenX,
      e.screenY,
      e.clientX,
      e.clientY,
      e.ctrlKey,
      e.altKey,
      e.shiftKey,
      e.metaKey,
      Π΅. ΠΊΠ½ΠΎΠΏΠΊΠ°,
      document.body.parentNode
    )
  } else if (document.createEventObject) {
    evt = document.createEventObject ()
    for (prop in e) {
      evt [prop] = e [prop]
    }
    evt.ΠΊΠ½ΠΎΠΏΠΊΠ° =
      {
        0: 1,
        1: 4,
        2: 2,
      } [evt.button] || evt.button
  }
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ evt
}
function dispatchEvent (el, evt) {
  if (el.dispatchEvent) {
    el.dispatchEvent (evt)
  } else if (el.fireEvent) {
    el.fireEvent ('on' + Ρ‚ΠΈΠΏ, evt)
  }
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ evt
}  

Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ нСсколько Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ @ document.createEvent @ ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° @ document.createEventObject () @. А Ρ‚Π°ΠΊΠΆΠ΅ @ el.dispatchEvent @ ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΊ @ el.fireEvent @. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с этим событиСм Ρ‰Π΅Π»Ρ‡ΠΊΠ° ΠΌΡ‹ΡˆΠΈ Π² чистом DOM API Π² DOM Enlightenment ΠΎΡ‚ Коди Π›ΠΈΠ½Π΄Π»ΠΈ.Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠΎΠΈΡ… ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ°.

  window.onclick = function () {
  console.log (Β«Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΎ ΠΎΠΊΠ½ΠΎΒ»);
} var test = document.getElementById ('тСст');
test.onclick = function () {
  console.log ('тСст Π½Π°ΠΆΠ°Ρ‚');
} var evt = mouseEvent ("Ρ‰Π΅Π»Ρ‡ΠΎΠΊ", 1, 50, 1, 50);
dispatchEvent (тСст, evt);  

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ просто Π²Π΅Π΄Π΅ΠΌ ΠΆΡƒΡ€Π½Π°Π» консоли, Π½ΠΎ Π½Π΅Ρ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ jQuery simulate ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΊ вашСй Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ срСдС тСстирования.Если Ρƒ вас Π΅ΡΡ‚ΡŒ jQuery, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ jQuery Simulate, ΠΊΠ°ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, ΠΈΠ»ΠΈ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ я добивался практичСски Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

jQuery Click Simulate (Π±Π΅Π· ΠΏΠ»Π°Π³ΠΈΠ½Π°) Π‘ событиями jQuery это Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅.

  var $ el = $ (сСлСктор)
var смСщСниС = $ el.offset ()
var event = jQuery.Event ('mousedown', {
  ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ 1,
  pageX: offset.left,
  pageY: offset. top,
})
$ el.trigger (событиС)  

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Ρ‚ΠΎΠΌ — Атомы | Атомная структура | ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΡ‚ΠΎΠΏΠΎΠ²

Π’Π΅ΠΌΡ‹

  • Атомы
  • Атомная структура
  • Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ ΠΈΠ·ΠΎΡ‚ΠΎΠΏΠΎΠ²
  • АтомныС ядра

ОписаниС

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ†Π΅Π»Π΅ΠΉ обучСния

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ количСство ΠΏΡ€ΠΎΡ‚ΠΎΠ½ΠΎΠ², Π½Π΅ΠΉΡ‚Ρ€ΠΎΠ½ΠΎΠ² ΠΈ элСктронов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ модСль Π°Ρ‚ΠΎΠΌΠ°, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнт ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ массу ΠΈ заряд.
  • ΠŸΡ€Π΅Π΄ΡΠΊΠ°ΠΆΠΈΡ‚Π΅, ΠΊΠ°ΠΊ слоТСниС ΠΈΠ»ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠ½Π°, Π½Π΅ΠΉΡ‚Ρ€ΠΎΠ½Π° ΠΈΠ»ΠΈ элСктрона ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ элСмСнт, заряд ΠΈ массу.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ имя элСмСнта, массу ΠΈ заряд, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ количСство ΠΏΡ€ΠΎΡ‚ΠΎΠ½ΠΎΠ², Π½Π΅ΠΉΡ‚Ρ€ΠΎΠ½ΠΎΠ² ΠΈ элСктронов.
  • ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠ½, Π½Π΅ΠΉΡ‚Ρ€ΠΎΠ½, элСктрон, Π°Ρ‚ΠΎΠΌ ΠΈ ΠΈΠΎΠ½.
  • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΈΠ·ΠΎΡ‚ΠΎΠΏΠ½Ρ‹ΠΉ символ для Π°Ρ‚ΠΎΠΌΠ°, учитывая количСство ΠΏΡ€ΠΎΡ‚ΠΎΠ½ΠΎΠ², Π½Π΅ΠΉΡ‚Ρ€ΠΎΠ½ΠΎΠ² ΠΈ элСктронов.

ВСрсия 1.6.15

HTML5 sim ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° iPad ΠΈ Chromebook, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² систСмах ПК, Mac ΠΈ Linux.

iPad:
iOS 12+ Safari
iPad-совмСстимыС sim-ΠΊΠ°Ρ€Ρ‚Ρ‹

Android:
ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ поддСрТиваСтся. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ симуляторы HTML5 Π½Π° Android, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Google Chrome.

Chromebook:
ПослСдняя вСрсия Google Chrome
Бимуляторы HTML5 ΠΈ Flash PhET ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° всСх устройствах Chromebook.
SIM-ΠΊΠ°Ρ€Ρ‚Ρ‹, совмСстимыС с Chromebook

БистСмы Windows:
Microsoft Edge, послСдняя вСрсия Firefox, послСдняя вСрсия Google Chrome.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *