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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«HTML 5, CSS 3 ΠΈ Web 2.0. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° соврСмСнных Web-сайтов». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 83

Автор Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π”Ρ€ΠΎΠ½ΠΎΠ²

β€” "copy" β€” выводится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ новая Ρ„ΠΈΠ³ΡƒΡ€Π°; всС старыС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ с ΠΊΠ°Π½Π²Ρ‹.

Π—Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π°ΠΌΠΈ способ налоТСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ дСйствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ нарисуСм послС этого. На ΡƒΠΆΠ΅ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Π½Π½ΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ ΠΎΠ½ влияния Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚.

Листинг 22.15 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Листинг 22.15

ctxCanvas.fillStyle = "blue";

ctxCanvas.fillRect(0, 50, 400, 200);

ctxCanvas.fillStyle = "red";

ctxCanvas.globalCompositeOperation = "source-over";

ctxCanvas.fillRect(100, 0, 200, 300);

Web-сцСнарий ΠΈΠ· листинга 22.15 Ρ€ΠΈΡΡƒΠ΅Ρ‚ Π΄Π²Π° Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ°Π½Π²Ρ‹ ΠΏΡ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… значСниях свойства globalCompositeOperation. ИзмСняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого свойства, ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Web-страницу Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ клавиши <F5> ΠΈ смотрим, Ρ‡Ρ‚ΠΎ получится.

БозданиС маски

О масках ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ ΠΈΠ· Π³Π»Π°Π²Ρ‹ 21. Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΊΠ°Π½Π²Ρ‹ Ρ‚Π°ΠΊ называСтся особая Ρ„ΠΈΠ³ΡƒΡ€Π°, Π·Π°Π΄Π°ΡŽΡ‰Π°Ρ своСго Ρ€ΠΎΠ΄Π° "ΠΎΠΊΠ½ΠΎ", сквозь ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½Π° Ρ‡Π°ΡΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, нарисованной Π½Π° ΠΊΠ°Π½Π²Π΅. Вся Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‰Π°Ρ Π² это "ΠΎΠΊΠ½ΠΎ", Π±ΡƒΠ΄Π΅Ρ‚ скрыта. ΠŸΡ€ΠΈ этом сама маска Π½Π° ΠΊΠ°Π½Π²Ρƒ Π½Π΅ выводится.

Маской ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слоТный ΠΊΠΎΠ½Ρ‚ΡƒΡ€, рисованиС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ описано Ρ€Π°Π½Π΅Π΅. И создаСтся ΠΎΠ½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅.

Π’ΠΎΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий.

1. Π ΠΈΡΡƒΠ΅ΠΌ слоТный ΠΊΠΎΠ½Ρ‚ΡƒΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ станСт маской.

2. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ Π΅Π³ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ.

3. Π’мСсто Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² stroke ΠΈΠ»ΠΈ fill Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ clip, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

4. Π ΠΈΡΡƒΠ΅ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ΄ маской.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ нарисованная Π½Π°ΠΌΠΈ Π½Π° шагС 4 Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ частично Π²ΠΈΠ΄Π½Π° сквозь маску. Π’Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ достигнут.

Листинг 22.16 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Листинг 22.16

ctxCanvas.beginPath();

ctxCanvas.moveTo(100, 150);

ctxCanvas.lineTo(200, 0);

ctxCanvas.lineTo(200, 300);

ctxCanvas.closePath();

ctxCanvas.clip();

ctxCanvas.fillRect(0, 100, 400, 100);

Web-сцСнарий ΠΈΠ· листинга 22.16 сначала рисуСт маску Π² Π²ΠΈΠ΄Π΅ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Π° ΠΏΠΎΡ‚ΠΎΠΌ β€” ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½Π° сквозь маску.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ графичСского Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° Web-сайта

Π’ΠΎΠΎΡ€ΡƒΠΆΠΈΠ²ΡˆΠΈΡΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ знаниями ΠΎ ΠΊΠ°Π½Π²Π΅ HTML 5, контСкстС рисования ΠΈ Π΅Π³ΠΎ свойствах ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, Π΄Π°Π²Π°ΠΉΡ‚Π΅ попрактикуСмся Π² Web-худоТСствах. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ графичСский Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ для нашСго Web-сайта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ помСстим Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ cheader вмСсто ΠΌΠ°Π»ΠΎΠ²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ тСкстового Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°.

Π‘Π½Π°Ρ‡Π°Π»Π° сформулируСм трСбования.

β€” Π›ΠΎΠ³ΠΎΡ‚ΠΈΠΏ нашСго Web-сайта Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡƒΡŽ надпись "Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ ΠΏΠΎ HTML ΠΈ CSS" с Ρ‚Π΅Π½ΡŒΡŽ.

β€” Π¨ΠΈΡ€ΠΈΠ½Π° Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ всС пространство ΠΌΠ΅ΠΆΠ΄Ρƒ Π»Π΅Π²Ρ‹ΠΌ ΠΊΡ€Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° cheader ΠΈ Π»Π΅Π²Ρ‹ΠΌ ΠΊΡ€Π°Π΅ΠΌ Web-Ρ„ΠΎΡ€ΠΌΡ‹ поиска.

β€” Π¨ΠΈΡ€ΠΈΠ½Π° Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΊΠ½Π° Web-обозрСватСля.

ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Web-страницу index.htm Π² Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅, ΡƒΠ΄Π°Π»ΠΈΠΌ всС содСрТимоС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° cheader ΠΈ вставим Π² Π½Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΎΠΉ HTML-ΠΊΠΎΠ΄:

<CANVAS ID="cnv" WIDTH="600" HEIGHT="80"></CANVAS>

Он создаСт ΠΊΠ°Π½Π²Ρƒ cnv, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒΡΡ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ.

Π’Π°ΠΊ, ΠΊΠ°Π½Π²Π° Ρƒ нас Π³ΠΎΡ‚ΠΎΠ²Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Web-сцСнарий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°Π½Π²Ρ‹ ΠΈ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π΅ΠΉ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ занял ΠΊΠ°Π½Π²Ρƒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ.

ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Ρ„Π°ΠΉΠ» Web-сцСнария main.js Π² Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅. И ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ.

Π“Π΄Π΅ Π½Π°ΠΌ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ рисованиС Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ°? ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ onReady ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ext? Π’ΠΎΠ³Π΄Π° Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ Π±ΡƒΠ΄Π΅Ρ‚ нарисован всСго ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ β€” послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Web-страницы.

Но ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡˆΠΈΡ€ΠΈΠ½Π° Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° мСнялась ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΎΠΊΠ½Π° Web-обозрСватСля. Для этого Π½Π°ΠΌ слСдуСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, придСтся Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΎΠΊΠ½Π° ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°Π½Π²Ρ‹ cnv β€” это ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, понадобится послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠ°Π½Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ β€” с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡˆΠΈΡ…ΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠ°Π½Π²Ρ‹.

Π’Ρ‹Π²ΠΎΠ΄: помСстим ΠΊΠΎΠ΄, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ рисованиС Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ°, Π² Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ adjustContainers. Π­Ρ‚Π° функция, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠΌΠ½ΠΈΠΌ, устанавливаСт Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π΄ΠΈΠ·Π°ΠΉΠ½ нашСй Web-страницы, ΠΈ выполняСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΊΠ½Π° Web-обозрСватСля β€” ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ.

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΠΌ Π² ΠΊΠΎΠ½Π΅Ρ† Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ adjustContainers Π΄Π²Π° выраТСния:

Ext.get("cnv"). set({ width: elCSearch.getX() β€” 40 });

drawHeader();

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ устанавливаСт ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΊΠ°Π½Π²Ρ‹ cnv, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° заняла всС пространство ΠΌΠ΅ΠΆΠ΄Ρƒ Π»Π΅Π²Ρ‹ΠΌ ΠΊΡ€Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° cheader ΠΈ Π»Π΅Π²Ρ‹ΠΌ ΠΊΡ€Π°Π΅ΠΌ Web-Ρ„ΠΎΡ€ΠΌΡ‹ поиска. НуТноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ получаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

1. Π‘СрСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ свободного ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° csearch, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится Web-Ρ„ΠΎΡ€ΠΌΠ° поиска (см. Π³Π»Π°Π²Ρƒ 21). (ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ csearch хранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ elCSearch.) ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡˆΠΈΡ€ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ ΠΊΠ°Π½Π²Π°, Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… отступов.

2. Π˜Π· ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ вычитаСтся 20 β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ отступа слСва Π² пиксСлах, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΌ стилС, привязанном ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ cheader.

3. Π˜Π· ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ разности вычитаСтся Π΅Ρ‰Π΅ 20 (ΠΈΡ‚ΠΎΠ³ΠΎ получаСтся 40) β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ отступа ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€Π°Π²Ρ‹ΠΌ ΠΊΡ€Π°Π΅ΠΌ ΠΊΠ°Π½Π²Ρ‹ ΠΈ Π»Π΅Π²Ρ‹ΠΌ ΠΊΡ€Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° csearch с Web- Ρ„ΠΎΡ€ΠΌΠΎΠΉ поиска. Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°Π½Π²Π° Π½Π΅ ΠΏΡ€ΠΈΠΌΡ‹ΠΊΠ°Π»Π° ΠΊ Web-Ρ„ΠΎΡ€ΠΌΠ΅ поиска Π²ΠΏΠ»ΠΎΡ‚Π½ΡƒΡŽ.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ присваиваСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ WIDTH Ρ‚Π΅Π³Π° <CANVAS> с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° set ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ext Core Element (см. Π³Π»Π°Π²Ρƒ 15).

Π’Ρ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ drawHeader, которая ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ рисованиС Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ°. Листинг 22.17 содСрТит ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ; ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² любоС мСсто Ρ„Π°ΠΉΠ»Π° main.js.

Листинг 22.17

function drawHeader() {

var elCanvas = Ext.get("cnv");

var cnvWidth = elCanvas.getAttribute("width");

var ctx = elCanvas.dom.getContext("2d"); ctx.beginPath();

ctx.strokeStyle = "#B1BEC6";

ctx.moveTo(0, 60);

ctx.lineTo(cnvWidth, 60);

ctx.stroke();

ctx.shadowOffsetX = 2;

ctx.shadowOffsetY = 2;

ctx.shadowBlur = 2;

ctx.shadowColor = "#CDD9DB";

ctx.font = "normal 20pt Arial";

ctx.textAlign = "right";

ctx.textBaseline = "bottom";

ctx.fillStyle = "#3B4043";

ctx.scale(2, 1.3);

ctx.fillText("Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ ΠΏΠΎ HTML ΠΈ CSS", cnvWidth / 2, 60 / 1.3,

cnvWidth / 2);

}

Рассмотрим листинг 22.17 ΠΏΠΎ частям.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΊΠ°Π½Π²Ρƒ cnv:

var elCanvas = Ext.get("cnv");

Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΊΠ°Π½Π²Ρ‹:

var cnvWidth = elCanvas.getAttribute("width");

РисуСм Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ линию, которая "вытянСтся" Π½Π° всю ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΊΠ°Π½Π²Ρ‹ ΠΈ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½Π΅Ρ‚ тСкст Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΌ:

ctx.beginPath();

ctx.strokeStyle = "#B1BEC6";

ctx.moveTo(0, 60);

ctx.lineTo(cnvWidth, 60);

ctx.stroke();

Π—Π°Π΄Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π΅Π½ΠΈ для тСкста:

ctx.shadowOffsetX = 2;

ctx.shadowOffsetY = 2;

ctx.shadowBlur = 2;

ctx.shadowColor = "#CDD9DB";

Π—Π°Π΄Π°Π΅ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ тСкста. Π‘Π΅Ρ€Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ· стиля пСрСопрСдСлСния Ρ‚Π΅Π³Π° <H1>,

созданного Π½Π°ΠΌΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ стилСй main.css:

ctx.font = "normal 20pt Arial";

Π—Π°Π΄Π°Π΅ΠΌ для тСкста Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π½ΠΈΠΆΠ½Π΅ΠΌΡƒ ΠΊΡ€Π°ΡŽ символов:

ctx.textAlign = "right";

ctx.textBaseline = "bottom";

Π’Π°ΠΊ Π½Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для Π²Ρ‹Π²ΠΎΠ΄Π° тСкста. Π—Π°Π΄Π°Π΅ΠΌ Ρ†Π²Π΅Ρ‚ Π·Π°Π»ΠΈΠ²ΠΊΠΈ β€” ΠΎΠ½ станСт Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ тСкста: ctx.fillStyle = "#3B4043";

Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π± систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΊΠ°Π½Π²Ρ‹:

ctx.scale(2, 1.3);

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π± Ρƒ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ оси ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ большС, Ρ‡Π΅ΠΌ Ρƒ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ, β€” Π·Π½Π°Ρ‡ΠΈΡ‚, тСкст Π±ΡƒΠ΄Π΅Ρ‚ растянут ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ.

Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ тСкст "Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ ΠΏΠΎ HTML ΠΈ CSS" Π² Π²ΠΈΠ΄Π΅ Π·Π°Π»ΠΈΠ²ΠΊΠΈ Π±Π΅Π· ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°:

ctx.fillText("Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ ΠΏΠΎ HTML ΠΈ CSS", cnvWidth / 2, 60 / 1.3, cnvWidth / 2);

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ нСсколько ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ².

β€” Π’ качСствС Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Π° тСкста ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΊΠ°Π½Π²Ρ‹. Если ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π½Π΅Π΅ ΠΌΡ‹ Π·Π°Π΄Π°Π»ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ, тСкст Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ ΠΊΠ°Π½Π²Ρ‹.

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

β€” ΠœΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ тСкста, Ρ€Π°Π²Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Π΅ ΠΊΠ°Π½Π²Ρ‹. Благодаря этому тСкст ΠΏΡ€ΠΈ любом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΎΠΊΠ½Π° Web-обозрСватСля Π½Π΅ Π²Ρ‹Π»Π΅Π·Π΅Ρ‚ Π·Π° края ΠΊΠ°Π½Π²Ρ‹ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅, посвящСнном Π²Ρ‹Π²ΠΎΠ΄Ρƒ тСкста).

β€” Π’Сроятно, это самый Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. ВСкст ΠΌΡ‹ Π²Ρ‹Π²Π΅Π»ΠΈ послС измСнСния ΠΌΠ°ΡΡˆΡ‚Π°Π±Π° систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, Π½ΠΎ значСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ старой систСмС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Π½ΠΎΠ²ΠΎΠΉ систСмС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, ΠΌΡ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ ΠΈΡ… Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΎΠ² (2 ΠΈ 1,3).

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ drawHeader Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½ΠΎ.

ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Web-страницу Π² Web-ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»Π΅. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ссли ΠΏΠΎΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ Π»ΡƒΡ‡ΡˆΠ΅. ΠŸΡƒΡΡ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ вашим домашним Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ.

На этом Π°Π²Ρ‚ΠΎΡ€ прощаСтся с Π²Π°ΠΌΠΈ. Бчастливо Π²Π°ΠΌ Π΄ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Web-сайт β€” справочник ΠΏΠΎ HTML ΠΈ CSS! И успСхов Π½Π° ΠΏΠΎΠΏΡ€ΠΈΡ‰Π΅ соврСмСнного Web-Π΄ΠΈΠ·Π°ΠΉΠ½Π°!

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

Π’ΠΎΡ‚ ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π°ΡΡŒ эта книга…

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ядро (ΠΈΠ»ΠΈ, Π½Π° ΠΆΠ°Ρ€Π³ΠΎΠ½Π΅ программистов, "Π΄Π²ΠΈΠΆΠΎΠΊ") Π½Π°ΡˆΠ΅Π³ΠΎ Web- сайта β€” справочника ΠΏΠΎ HTML ΠΈ CSS β€” Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΈ ΠΎΡ‚Π»Π°ΠΆΠ΅Π½ΠΎ. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Web-страницы, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ многочислСнныС Ρ‚Π΅Π³ΠΈ HTML, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ стиля CSS ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΡ… использования. ΠœΡ‹ вСдь ΠΈΡ… Ρ‚Π°ΠΊ ΠΈ Π½Π΅ написали, ΡƒΠ²Π»Π΅ΠΊΡˆΠΈΡΡŒ Web-Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ ΠΈ Web-программированиСм…