<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><title>http://witia.jogger.pl/</title><link>http://witia.jogger.pl/</link><description>Wpisy z dziennika internetowego Jogger, wspomaganego przez Jabbera</description><lastBuildDate>Sun, 12 Feb 2012 07:14:50 +0100</lastBuildDate><generator>JoggerPL</generator><item><title>Krótkie wprowadzenie do zapytań o media w Firefoksie 3.5</title><link>http://witia.jogger.pl/2009/08/10/krotkie-wprowadzenie-do-zapytan-o-media-w-firefoksie-3-5/</link><description>&lt;p&gt;&lt;em&gt;Poniższy tekst jest tłumaczeniem artykułu &quot;&lt;a href=&quot;http://hacks.mozilla.org/2009/06/media-queries/&quot;&gt;A short introduction to media queries in Firefox 3.5&lt;/a&gt;&quot;, zamieszczonego na stronie &lt;a href=&quot;http://hacks.mozilla.org/&quot;&gt;hacks.mozilla.org&lt;/a&gt; na licencji &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by/3.0/us/&quot;&gt;Creative Commons Attribution 3.0 United States License&lt;/a&gt;. Autorem tekstu jest Eric Shepherd. Spis wszystkich tłumaczeń artykułów z hacks.mozilla.org dostępny jest na stronach &lt;a href=&quot;http://wiki.aviary.pl/Mozilla:Hacks&quot;&gt;wiki.aviary.pl&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Autorem tego postu jest &lt;a href=&quot;http://www.bitstampede.com/&quot;&gt;Eric Shepherd&lt;/a&gt;, który kieruje projektem dokumentacji Mozilli na &lt;a href=&quot;https://developer.mozilla.org/&quot;&gt;Mozilla Developer Center&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;W dzisiejszych czasach ważne jest, by renderowanie zawartości stron wspierane było na zwiększającym się asortymencie urządzeń. Użytkownicy oczekują, że treść będą odbierać nie tylko na swoich domowych komputerach lub czytać wydrukowaną na papierze, ale chcą także mieć do niej dostęp na urządzeniach przenośnych, telefonach komórkowych i innych gadżetach, które mają zróżnicowane możliwości, zarówno pod względem wydajności, jak i dokładności wyświetlania.&lt;/p&gt;
&lt;p&gt;CSS 2 wprowadziło pojęcie typów mediów, które pozwala zdefiniować odmienne reguły stylów w zależności od tego, na jakim typie urządzenia treść jest renderowana. Na przykład, w poniższy sposób można włączyć specyficzny arkusz stylów, kiedy treść jest renderowana do druku:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;html4strict&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;link&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;rel&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;media&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;print&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;print.css&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Był to dobry pierwszy krok, jednak nie dostarcza to możliwości dopracowania renderowania treści w oparciu o cechy, takie jak rozdzielczość urządzenia, proporcje czy orientacja pionowa lub pozioma.&lt;/p&gt;
&lt;p&gt;Firefox 3.5 wspiera &lt;a href=&quot;http://www.w3.org/TR/css3-mediaqueries/&quot;&gt;zapytania o media&lt;/a&gt; (&lt;em&gt;media queries&lt;/em&gt;) — nową cechę CSS 3, która sprawia, że możliwe jest bardziej precyzyjne definiowanie, które style zastosować w konkretnych przypadku.&lt;/p&gt;
&lt;p&gt;Funkcjonuje to dzięki ustaleniu zapytań, które sprawdzają wartości różnych cech mediów. Jest ich wiele, włączając w to głębię kolorów, szerokość i wysokość obszaru renderowania, rozdzielczość w pikselach, wyświetlanie w kolorze lub nie, i tak dalej. Pełną listę można znaleźć w &lt;a href=&quot;https://developer.mozilla.org/En/CSS/Media_queries&quot;&gt;artykule o zapytaniach o media na Mozilla Developer Center&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Zapytania o media są potężne, ale bardzo łatwe w użyciu. Można przyjrzeć się im na &lt;a href=&quot;http://www.bitstampede.com/demos/media-queries/&quot;&gt;przykładowej stronie&lt;/a&gt; stworzonej dla tego artykułu.&lt;/p&gt;
&lt;p&gt;Przykładowa strona używa dwóch arkuszy stylów, które są zdefiniowane przy użyciu poniższych reguł:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;html4strict&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;link&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;rel&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;media&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;all and (orientation:portrait)&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt; &lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;portrait.css&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Powyższy kod wykorzystuje zapytania o media &lt;code&gt;all&lt;/code&gt; i &lt;code&gt;(orientation:portrait)&lt;/code&gt;, by wskazać, że użyty ma być arkusz stylów &lt;code&gt;portrait.css&lt;/code&gt;, jeśli treść jest renderowana w obszarze wyświetlania (takim jak okno w Firefoksie) o większej wysokości niż szerokości.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;html4strict&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;link&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;rel&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;media&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;all and (orientation:landscape)&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt; &lt;span style=&quot;color: #000066;&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;landscape.css&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Powyższy kod określa, że dołączony powinien być arkusz stylów &lt;code&gt;landscape.css&lt;/code&gt;, gdy treść jest renderowana na obszarze o większej szerokości niż wysokości.&lt;/p&gt;
&lt;p&gt;Ogromną zaletą zapytań o media jest to, że sprawdzają one parametry za każdym razem, gdy zmienia się tryb wyświetlania, np. jeśli otworzysz &lt;a href=&quot;http://www.bitstampede.com/demos/media-queries/&quot;&gt;przykładową stronę&lt;/a&gt; i rozpoczniesz skalowanie okna, to zobaczysz, że kiedy okno jest szersze niż wyższe (przy orientacji poziomej), pasek narzędziowy umieszczony jest po lewej stronie.&lt;/p&gt;
&lt;p&gt;Gdy zmieniasz rozmiar okna i przybiera ono orientację pionową, pasek narzędziowy przenoszony jest na górę okna. Dzieje się to na bieżąco podczas skalowania okna.&lt;/p&gt;
&lt;p&gt;Jeśli zajrzysz do pliku &lt;code&gt;landscape.css&lt;/code&gt;, zobaczysz, że jest w nim użytych kilka zapytań o media, a także, że zmieniany jest styl elementu &amp;lt;body&amp;gt; w oparciu o szerokość okna. Domyślnie tekst w tym elemencie ma rozmiar 14 pikseli.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #a1a100;&quot;&gt;@media all and (min-width: 600px) {&lt;/span&gt;
  body &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;16px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Jednak to zapytanie o media wskazuje, że, jeśli okno ma szerokość większą niż 600 pikseli, rozmiar czcionki całego dokumentu powinien zwiększyć się do 16 pikseli.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #a1a100;&quot;&gt;@media all and (min-width: 700px) {&lt;/span&gt;
  body &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;20px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Podobnie powyższe zapytanie o media ustawia podstawowy rozmiar czcionki na 20 pikseli, gdy szerokość okna wynosi ponad 700 pikseli. I dalej - analogiczne zapytanie o media ustawia jeszcze większy rozmiar czcionki, gdy okno ma ponad 800 pikseli szerokości.&lt;/p&gt;
&lt;p&gt;Zatem podczas skalowania okna można zobaczyć, że Firefox nie tylko automatycznie przełącza się między arkuszami stylów &lt;code&gt;portrait.css&lt;/code&gt; i &lt;code&gt;landscape.css&lt;/code&gt;, gdy zmienia się szerokość okna, ale podczas renderowania przy użyciu arkusza stylów &lt;code&gt;landscape.css&lt;/code&gt;, style zmieniają się precyzyjnie także w oparciu o to, jak szerokie jest okno.&lt;/p&gt;
&lt;p&gt;Jeszcze jednym przydatnym zastosowaniem tej cechy jest ustawianie liczby kolumn wyświetlanej treści w oparciu o szerokość obszaru wyświetlania.&lt;/p&gt;
&lt;p&gt;Zapytania o media są obecnie wspieranie przez przeglądarki Firefox 3.5, Safari 3 oraz Opera 7 lub nowsza, przy czym kolejne wersje często wprowadzają wsparcie dodatkowych opcji związanych z mediami.&lt;/p&gt;
&lt;p&gt;Szczegółowe informacje na temat zapytań o media wspieranych w Firefoksie można przeczytać na &lt;a href=&quot;https://developer.mozilla.org/En/CSS/Media_queries&quot;&gt;witrynie MDC w artykule o zapytaniach o media&lt;/a&gt;. Zapytania o media obsługiwane przez Operę 9.5 są wymienione na końcu &lt;a href=&quot;http://www.opera.com/docs/specs/css/&quot;&gt;tego artykułu&lt;/a&gt;. Nie byłem w stanie znaleźć informacji o wsparciu zapytań o media w WebKit.&lt;/p&gt;
&lt;p&gt;Zapytania o media oferują doskonałą metodę na udoskonalenie wyglądu zawartości na różnych urządzeniach. Używając odpowiednich zapytań, można wyświetlać w odmienny sposób w oparciu o rozmiar ekranu, rozdzielczość i wiele innych cech. Przy tej metodzie optymalizacji treści nie ma znaczenia, w jaki sposób użytkownik ma do niej dostęp.&lt;/p&gt;
</description><pubDate>Mon, 10 Aug 2009 13:16:35 +0200</pubDate><guid>http://witia.jogger.pl/2009/08/10/krotkie-wprowadzenie-do-zapytan-o-media-w-firefoksie-3-5/</guid><category>hacks.mozilla.org</category></item><item><title>Ładne tabele z selektorami CSS3</title><link>http://witia.jogger.pl/2009/08/03/ladne-tabele-z-selektorami-css3/</link><description>&lt;p&gt;&lt;em&gt;Poniższy tekst jest tłumaczeniem artykułu &quot;&lt;a href=&quot;http://hacks.mozilla.org/2009/07/slick-tables-with-css-3-selectors/&quot;&gt;Slick tables with css 3 selectors&lt;/a&gt;&quot;, zamieszczonego na stronie &lt;a href=&quot;http://hacks.mozilla.org/&quot;&gt;hacks.mozilla.org&lt;/a&gt; na licencji &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by/3.0/us/&quot;&gt;Creative Commons Attribution 3.0 United States License&lt;/a&gt;. Autorem tekstu jest Eric Shepherd. Spis wszystkich tłumaczeń artykułów z hacks.mozilla.org dostępny jest na stronach &lt;a href=&quot;http://wiki.aviary.pl/Mozilla:Hacks&quot;&gt;wiki.aviary.pl&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ten artykuł i demo otrzymaliśmy dzięki uprzejmości Ivana Enderlina, autora &lt;a href=&quot;http://hoa-project.net/&quot;&gt;frameworka HOA&lt;/a&gt; i doświadczonego webdevelopera.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Jest to artykuł, który opisuje poniższe demo, pokazujące zastosowanie selektorów CSS3, wprowadzonych w Firefoksie 3.5, do łatwego tworzenia eleganckich tabel.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;attachment_1279&quot; class=&quot;wp-caption aligncenter&quot; style=&quot;width: 529px&quot;&gt;&lt;a href=&quot;http://mozilla.hoa-project.net/Demo/Css_3_selectors/Demonstration.html&quot;&gt;&lt;img src=&quot;http://hacks.mozilla.org/wp-content/uploads/2009/07/result.png&quot; alt=&quot;CSS3 Selectors for Quick and Pretty Tables&quot; title=&quot;result&quot; width=&quot;519&quot; height=&quot;195&quot; class=&quot;size-full wp-image-1279&quot;&gt;&lt;/a&gt;
&lt;p class=&quot;wp-caption-text&quot;&gt;Zobacz demo | Selektory CSS3 dla szybkich i ładnych tabel&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br&gt;
&lt;a href=&quot;http://mozilla.hoa-project.net/Demo/Css_3_selectors/Demonstration.html&quot;&gt;Zobacz demo krok po kroku&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;strong&gt;Podstawowy kod HTML tabeli&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Rozpoczniemy od napisania prostego kodu HTML tabeli. Uwaga: nie mamy żadnych atrybutów &lt;code&gt;class&lt;/code&gt; ani &lt;code&gt;id&lt;/code&gt;, co czyni tę metodę tak interesującą:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;html4strict&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;table&lt;/span&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;thead&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;th&lt;/span&gt;&amp;gt;&lt;/span&gt;...&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;th&lt;/span&gt;&amp;gt;&lt;/span&gt;
    ...
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;th&lt;/span&gt;&amp;gt;&lt;/span&gt;...&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;th&lt;/span&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;thead&lt;/span&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;tbody&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/span&gt;
      &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/span&gt;...&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/span&gt;
      ...
      &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/span&gt;...&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/span&gt;
    ...
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/span&gt;
      &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/span&gt;...&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/span&gt;
      ...
      &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/span&gt;...&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;tbody&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;table&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A teraz napiszmy trochę kodu CSS, by nadać prostemu układowi tabeli nieco elegancji:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
table &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;90&lt;/span&gt;%&lt;/span&gt;/&lt;span style=&quot;color: #933;&quot;&gt;1.5em&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Lucida Grande&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; Geneva&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt;
                    &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;DejaVu Sans&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Bitstream Vera Sans&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; AnjaliOldLipi&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt;
                    &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Lucida sans&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Trebuchet MS&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; Arial&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; Verdana&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;text-align&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;border&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;4px&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;black&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;double&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;border-spacing&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    -moz-border-radius&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;12px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    -moz-box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#6a3d37&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;6px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    -webkit-border-radius&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;12px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    -webkit-box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#6a3d37&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;6px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    border-radius&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;12px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#6a3d37&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;6px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;background&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#b59d5c&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Użycie własności &lt;code&gt;border-spacing, border-radius&lt;/code&gt; i &lt;code&gt;box-shadow&lt;/code&gt; pozwala w szybki i łatwy sposób upiększyć nieco tabelę.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pierwszy wybór&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Teraz chcielibyśmy nadać style wszystkim znacznikom &lt;code&gt;th&lt;/code&gt;. Z selektorami CSS jest to proste:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
th &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#fff&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;110&lt;/span&gt;%&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;text-shadow&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#6a3d37&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;2px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;2px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;2px&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Przypomnienie: jeśli napiszemy &lt;code&gt;table th&lt;/code&gt;, to wybierzemy wszystkie elementy &lt;code&gt;th&lt;/code&gt; będące potomkami elementu &lt;code&gt;table&lt;/code&gt;, zaś jeśli napiszemy &lt;code&gt;thead &amp;gt; th&lt;/code&gt;, to wybierzemy wszystkie elementy &lt;code&gt;th&lt;/code&gt;, które są bezpośrednio dziećmi elementu &lt;code&gt;thead&lt;/code&gt;. To gwoli przypomnienia &lt;img src='http://hacks.mozilla.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley'&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bardziej skomplikowany wybór&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Znacznik &lt;code&gt;th&lt;/code&gt; reprezentuje nagłówek tabeli. Chcielibyśmy wybrać &lt;em&gt;pierwszy&lt;/em&gt; nagłówek tabeli. Hmmm.. może powinniśmy użyć pseudoklasy &lt;code&gt;first-of-type&lt;/code&gt;. Reprezentuje ona element, który jest pierwszy w rodzeństwie elementów swojego typu na liście dzieci jego elementu nadrzędnego. Zatem mamy teraz:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
 
th&lt;span style=&quot;color: #3333ff;&quot;&gt;:first-of-type &lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-weight&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;bold&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-style&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;italic&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Parzyste i nieparzyste wiersze&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Powtarzającym się problemem z tabelami jest to, jak wybrać parzyste i nieparzyste wiersze. Rozwiązaniem jest pseudoklasa nth-child(). Wszystkie te pseudoklasy rozpoznają składnię &lt;code&gt;an+b&lt;/code&gt; - aby wybrać wszystkie parzyste elementy, należy użyć 2n; aby wybrać wszystkie nieparzyste elementy, należy użyć 2n+1, aby wybrać każdy co trzeci element, należy użyć 3n.&lt;/p&gt;
&lt;p&gt;Nadajmy zatem style parzystym i nieparzystym wierszom:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
 
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;odd&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#e0d8cb&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;background&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#474644&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;even&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#6a3d37&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Dopełnienie pierwszej i ostatniej kolumny&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Teraz możemy ustawić dopełnienie (&lt;code&gt;padding&lt;/code&gt;) pierwszej i ostatniej kolumny. Ponownie przypominam, że nie mamy żadnych klas ani identyfikatorów, oraz że liczba kolumn jest nieznana.&lt;/p&gt;
&lt;p&gt;Rozwiązaniem są pseudoklasy &lt;code&gt;first-of-type&lt;/code&gt; i &lt;code&gt;last-of-type&lt;/code&gt;. Wybieramy wszystkie pierwsze i ostatnie elementy &lt;code&gt;th&lt;/code&gt; i &lt;code&gt;td&lt;/code&gt; w poniższy sposób:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
 
th&lt;span style=&quot;color: #3333ff;&quot;&gt;:first-of-type&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt;
td&lt;span style=&quot;color: #3333ff;&quot;&gt;:first-of-type &lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; 0 0 0 &lt;span style=&quot;color: #933;&quot;&gt;4em&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;

 
th&lt;span style=&quot;color: #3333ff;&quot;&gt;:last-of-type&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt;
td&lt;span style=&quot;color: #3333ff;&quot;&gt;:last-of-type &lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; 0 &lt;span style=&quot;color: #933;&quot;&gt;4em&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Dwa ostatnie wiersze&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Teraz połączymy wiele pseudoklas (i wprowadzimy jedną nową).&lt;/p&gt;
&lt;p&gt;Załóżmy, że chcielibyśmy wybrać wiersz numer 1, numer 4 i numer 7. Wyrażenie matematyczne nie jest tak proste, jak byśmy tego oczekiwali. Rozwiązaniem jest podzielenie naszych wierszy na grupy złożone z trzech wierszy w następujący sposób: 3n. Ale w ten sposób zostaną wybrane wiersze numer 3, 6 i 9. W tych grupach wybierzemy pierwszy element przy pomocy 3n+1 (lub 3n-2, jeśli ktoś chce skomplikować sprawę).&lt;/p&gt;
&lt;p&gt;To dobrze, ale wybrany będzie wiersz w naszych dwóch ostatnich półprzezroczystych wierszach. Najlepiej byłoby powiedzieć: &quot;wybierz pierwszy wiersz każdej grupy trzech wierszy, z wyjątkiem ostatniego wiersza (będzie wybrany, ponieważ ostatni wiersz jest siódmym wierszem)&quot;. To proste. Użyjemy pseudoklasy &lt;code&gt;not&lt;/code&gt; połączonej z pseudoklasą &lt;code&gt;last-child&lt;/code&gt; (lub &lt;code&gt;last-of-type&lt;/code&gt;, która również tutaj zadziała).&lt;/p&gt;
&lt;p&gt;A zatem:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
 
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-last-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;-n&lt;span style=&quot;color: #00AA00;&quot;&gt;+&lt;/span&gt;2&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    opacity&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; .75
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;3n&lt;span style=&quot;color: #00AA00;&quot;&gt;+&lt;/span&gt;1&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt;not&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3333ff;&quot;&gt;:last-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; td &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;text-shadow&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;red&lt;/span&gt; 0 0 &lt;span style=&quot;color: #933;&quot;&gt;8px&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Końcowy kod źródłowy:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
table &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; table&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;90&lt;/span&gt;%&lt;/span&gt;/&lt;span style=&quot;color: #933;&quot;&gt;1.5em&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Lucida Grande&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; Geneva&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt;
                    &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;DejaVu Sans&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Bitstream Vera Sans&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; AnjaliOldLipi&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt;
                    &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Lucida sans&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Trebuchet MS&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; Arial&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; Verdana&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;text-align&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;border&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;4px&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;black&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;double&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;border-spacing&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    -moz-border-radius&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;12px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    -moz-box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#6a3d37&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;6px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    -webkit-border-radius&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;12px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    -webkit-box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#6a3d37&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;6px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    border-radius&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;12px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#6a3d37&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;6px&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;background&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#b59d5c&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
th &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#fff&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;110&lt;/span&gt;%&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;text-shadow&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#6a3d37&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;2px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;2px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;2px&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
    th&lt;span style=&quot;color: #3333ff;&quot;&gt;:first-of-type &lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
        &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-weight&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;bold&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-style&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;italic&lt;/span&gt;
    &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;odd&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#e0d8cb&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;background&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#474644&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;even&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#6a3d37&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
th&lt;span style=&quot;color: #3333ff;&quot;&gt;:first-of-type&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt;
td&lt;span style=&quot;color: #3333ff;&quot;&gt;:first-of-type &lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; 0 0 0 &lt;span style=&quot;color: #933;&quot;&gt;4em&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
th&lt;span style=&quot;color: #3333ff;&quot;&gt;:last-of-type&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt;
td&lt;span style=&quot;color: #3333ff;&quot;&gt;:last-of-type &lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; 0 &lt;span style=&quot;color: #933;&quot;&gt;4em&lt;/span&gt; 0 0
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-last-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;-n&lt;span style=&quot;color: #00AA00;&quot;&gt;+&lt;/span&gt;2&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    opacity&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; .75
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;3n&lt;span style=&quot;color: #00AA00;&quot;&gt;+&lt;/span&gt;1&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt;not&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3333ff;&quot;&gt;:last-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; td &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;text-shadow&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;red&lt;/span&gt; 0 0 &lt;span style=&quot;color: #933;&quot;&gt;8px&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://mozilla.hoa-project.net/Demo/Css_3_selectors/Demonstration.html&quot;&gt;&lt;br&gt;
Zobacz demo krok po kroku&lt;/a&gt;.&lt;/p&gt;
</description><pubDate>Mon, 03 Aug 2009 20:05:39 +0200</pubDate><guid>http://witia.jogger.pl/2009/08/03/ladne-tabele-z-selektorami-css3/</guid><category>hacks.mozilla.org</category></item><item><title>Nowe własności CSS3 w Firefoksie 3.5 - *-of-type</title><link>http://witia.jogger.pl/2009/07/22/nowe-wlasnosci-css3-w-firefoksie-3-5-of-type/</link><description>&lt;p&gt;&lt;em&gt;Poniższy tekst jest tłumaczeniem artykułu &quot;&lt;a href=&quot;http://hacks.mozilla.org/2009/06/css3-of-type/&quot;&gt;New CSS3 properties in Firefox 3.5 - *-of-type&lt;/a&gt;&quot;, zamieszczonego na stronie &lt;a href=&quot;http://hacks.mozilla.org/&quot;&gt;hacks.mozilla.org&lt;/a&gt; na licencji &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by/3.0/us/&quot;&gt;Creative Commons Attribution 3.0 United States License&lt;/a&gt;. Autorem tekstu jest Christopher Blizzard. Spis wszystkich tłumaczeń artykułów z hacks.mozilla.org dostępny jest na stronach &lt;a href=&quot;http://wiki.aviary.pl/Mozilla:Hacks&quot;&gt;wiki.aviary.pl&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ten artykuł przedstawia pokrótce trzy nowe pseudoklasy CSS3: &lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3aonly-of-type&quot;&gt;&lt;code&gt;only-of-type&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3afirst-of-type&quot;&gt;&lt;code&gt;first-of-type&lt;/code&gt;&lt;/a&gt; oraz &lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3alast-of-type&quot;&gt;&lt;code&gt;last-of-type&lt;/code&gt;&lt;/a&gt;. Są one bardzo podobne do klas &lt;a href=&quot;http://witia.jogger.pl/2009/07/20/nowe-wlasnosci-css3-w-firefoksie-3-5-nth/&quot;&gt;&lt;code&gt;*-nth&lt;/code&gt;&lt;/a&gt; opisanych we wcześniejszym artykule.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3afirst-of-type&quot;&gt;&lt;code&gt;first-of-type&lt;/code&gt;&lt;/a&gt; i &lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3alast-of-type&quot;&gt;&lt;code&gt;last-of-type&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Te dwie pseudoklasy pozwalają wybrać pierwszy i ostatni element na liście elementów będących rodzeństwem wewnątrz innego wskazanego elementu. Można użyć ich do pokolorowania pierwszego elementu listy, zastosować wraz z &lt;a href=&quot;http://hacks.mozilla.org/2009/06/opacity/&quot;&gt;&lt;code&gt;opacity&lt;/code&gt;&lt;/a&gt; do przyciemnienia ostatniego akapitu na stronie, a także do uzyskania wielu innych efektów. Poniższy przykład ustawia wersaliki w pierwszym akapicie dokumentu:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #cc00cc;&quot;&gt;#type-ex1&lt;/span&gt; div&lt;span style=&quot;color: #3333ff;&quot;&gt;:first-of-type &lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-variant&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;small-caps&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;type-ex1&quot; class=&quot;wp_syntax&quot; style=&quot;border: 1px solid gray; padding: 10px;&quot;&gt;
&lt;div&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nulla neque, cursus venenatis vehicula ac, rutrum id libero. Nullam porttitor ultricies eros, laoreet mollis nunc vestibulum in. Sed iaculis nibh nec tellus vulputate pulvinar. Aliquam ultricies mauris vel nulla semper ac dignissim arcu sollicitudin.&lt;/div&gt;
&lt;br&gt;
&lt;div&gt;Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras molestie elit sed libero pretium faucibus. Ut sed lacus eget est gravida aliquet sed sed risus. Maecenas vitae volutpat purus. Fusce porttitor aliquam lectus sit amet vehicula. Nulla molestie mi lacus.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3aonly-of-type&quot;&gt;&lt;code&gt;only-of-type&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pseudoklasa &lt;code&gt;only-of-type&lt;/code&gt; jest podobna do dwóch poprzednich, ale wybiera element tylko wtedy, gdy nie ma on rodzeństwa o tej samej nazwie. Poniżej znajduje się nieco sztuczny przykład*, który ukrywa pojedynczy obrazek wewnątrz elementu &lt;code&gt;div&lt;/code&gt;. Jeśli zaś element &lt;code&gt;div&lt;/code&gt; zawiera więcej niż jeden obrazek, wtedy obrazki będą widoczne:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #6666ff;&quot;&gt;.type-ex2&lt;/span&gt; img&lt;span style=&quot;color: #3333ff;&quot;&gt;:only-of-type &lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;type-ex2 wp_syntax&quot; style=&quot;border: 1px solid gray; padding: 10px;&quot;&gt;
&lt;div&gt;To jest tekst przed pojedynczym obrazkiem.&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3093/3666371567_fe7cccb760_m.jpg&quot;&gt;&lt;/p&gt;
&lt;div&gt;To jest tekst za pojedynczym obrazkiem.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;div class=&quot;type-ex2 wp_syntax&quot; style=&quot;border: 1px solid gray; padding: 10px;&quot;&gt;
&lt;div&gt;To jest tekst przed dwoma obrazkami.&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2607/3667176568_561ca88a34_m.jpg&quot;&gt;&lt;br&gt;
&lt;img src=&quot;http://farm3.static.flickr.com/2469/3667176010_29180dc097_m.jpg&quot;&gt;&lt;/p&gt;
&lt;div&gt;To jest tekst za dwoma obrazkami.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I to wszystko. Życzymy powodzenia!&lt;/p&gt;
&lt;p&gt;[ * Uwaga: Jeśli ktoś dysponuje lepszymi przykładami zastosowania &lt;code&gt;only-of-type&lt;/code&gt;, chętnie je poznamy. Istnieje bardzo mało przykładów, w których jest to użyteczne. ]&lt;/p&gt;
</description><pubDate>Wed, 22 Jul 2009 22:12:26 +0200</pubDate><guid>http://witia.jogger.pl/2009/07/22/nowe-wlasnosci-css3-w-firefoksie-3-5-of-type/</guid><category>hacks.mozilla.org</category></item><item><title>Nowe własności CSS3 w Firefoksie 3.5 - nth-*</title><link>http://witia.jogger.pl/2009/07/20/nowe-wlasnosci-css3-w-firefoksie-3-5-nth/</link><description>&lt;p&gt;&lt;em&gt;Poniższy tekst jest tłumaczeniem artykułu &quot;&lt;a href=&quot;http://hacks.mozilla.org/2009/06/css3-nth/&quot;&gt;New CSS3 properties in Firefox 3.5 - nth-*&lt;/a&gt;&quot;, zamieszczonego na stronie &lt;a href=&quot;http://hacks.mozilla.org/&quot;&gt;hacks.mozilla.org&lt;/a&gt; na licencji &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by/3.0/us/&quot;&gt;Creative Commons Attribution 3.0 United States License&lt;/a&gt;. Autorem tekstu jest Christopher Blizzard. Spis wszystkich tłumaczeń artykułów z hacks.mozilla.org dostępny jest na stronach &lt;a href=&quot;http://wiki.aviary.pl/Mozilla:Hacks&quot;&gt;wiki.aviary.pl&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Firefox 3.5 obsługuje kilka nowych selektorów CSS3. W tym artykule przedstawione zostaną cztery z nich: &lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3anth-child&quot;&gt;:nth-child&lt;/a&gt;, &lt;a href=&quot;https://developer.mozilla.org/en/CSS/:nth-last-child&quot;&gt;:nth-last-child&lt;/a&gt;, &lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3anth-of-type&quot;&gt;:nth-of-type&lt;/a&gt; oraz &lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3anth-last-of-type&quot;&gt;:nth-last-of-type&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Każdy z nich nazywany jest &lt;a href=&quot;https://developer.mozilla.org/en/css_reference#Selectors&quot;&gt;pseudoklasą&lt;/a&gt; i może być użyty w celu dodania stylów do istniejących selektorów. Najlepszą metodą opisania sposobu ich działania jest podanie kilku przykładów.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3anth-child&quot;&gt;:nth-child&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ta pseudoklasa pozwala dodać style dla grup elementów. Najczęściej spotykanym przypadkiem jest podświetlanie nieparzystych lub parzystych pozycji w tabeli:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;even&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#E8E8E8&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Przykład (działa w Firefoksie 3.5):&lt;/p&gt;
&lt;table id=&quot;ex1&quot;&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 4&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Tej własności można również użyć do nadania stylów dla więcej niż dwóch grup przy zastosowaniu specjalnej notacji. &lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3anth-child&quot;&gt;Dokumentacja&lt;/a&gt; tych zasad jest nieco zawiła, ale generalnie “3″ w przykładzie dzieli wszystkie elementy na grupy trójek, zaś “+1″ oznacza pozycję w tej grupie. W &lt;a href=&quot;http://www.w3.org/TR/css3-selectors/#nth-child-pseudo&quot;&gt;specyfikacji&lt;/a&gt; dostępnych jest też więcej przykładów.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;3n&lt;span style=&quot;color: #00AA00;&quot;&gt;+&lt;/span&gt;1&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;red&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;3n&lt;span style=&quot;color: #00AA00;&quot;&gt;+&lt;/span&gt;2&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;green&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;3n&lt;span style=&quot;color: #00AA00;&quot;&gt;+&lt;/span&gt;3&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;blue&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Przykład (działa w Firefoksie 3.5):&lt;/p&gt;
&lt;table id=&quot;ex2&quot;&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 6&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3anth-last-child&quot;&gt;:nth-last-child&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pseudoklasa &lt;code&gt;:nth-last-child&lt;/code&gt; działa dokładnie jak pseudoklasa &lt;code&gt;:nth-child&lt;/code&gt; z wyjątkiem tego, że zlicza elementy w odwrotnej kolejności:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-last-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;3n&lt;span style=&quot;color: #00AA00;&quot;&gt;+&lt;/span&gt;3&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;red&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-last-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;3n&lt;span style=&quot;color: #00AA00;&quot;&gt;+&lt;/span&gt;2&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;green&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
tr&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-last-&lt;/span&gt;child&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;3n&lt;span style=&quot;color: #00AA00;&quot;&gt;+&lt;/span&gt;1&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;blue&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Przykład (działa w Firefoksie 3.5):&lt;/p&gt;
&lt;table id=&quot;ex3&quot;&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiersz 6&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3anth-of-type&quot;&gt;:nth-of-type&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pseudoklasa &lt;code&gt;:nth-of-type&lt;/code&gt; używa podobnej składni jak inne elementy tutaj omawiane, ale pozwala na wybór oparty o typ elementu.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
div&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-of-&lt;/span&gt;type&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;odd&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;border-color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;red&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;

div&lt;span style=&quot;color: #3333ff;&quot;&gt;:nth-of-&lt;/span&gt;type&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;even&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;border-color&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;blue&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Przykład (działa w Firefoksie 3.5):&lt;/p&gt;
&lt;div id=&quot;ex4&quot;&gt;
&lt;div&gt;Powinienem być czerwony!&lt;/div&gt;
&lt;br&gt;
&lt;div&gt;Powinienem być niebieski!&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://developer.mozilla.org/en/CSS/%3anth-last-of-type&quot;&gt;:nth-last-of-type&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Podobnie jak w przypadku &lt;code&gt;:nth-last-child&lt;/code&gt;, &lt;code&gt;:nth-last-of-type&lt;/code&gt; działa tak samo, jak &lt;code&gt;:nth-of-type&lt;/code&gt; z wyjątkiem tego, że zlicza w odwrotnej kolejności.&lt;/p&gt;
&lt;p&gt;Cztery opisane własności pozwalają osiągnąć interesujące rezultaty ze stylami i grupami elementów i mamy nadzieję, że ułatwią dodawanie stylów do stron.&lt;/p&gt;
</description><pubDate>Mon, 20 Jul 2009 18:52:42 +0200</pubDate><guid>http://witia.jogger.pl/2009/07/20/nowe-wlasnosci-css3-w-firefoksie-3-5-nth/</guid><category>hacks.mozilla.org</category></item><item><title>Eleganckie czcionki przy użyciu @font-face</title><link>http://witia.jogger.pl/2009/07/13/eleganckie-czcionki-przy-uzyciu-font-face/</link><description>&lt;p&gt;&lt;em&gt;Poniższy tekst jest tłumaczeniem artykułu &quot;&lt;a href=&quot;http://hacks.mozilla.org/2009/06/beautiful-fonts-with-font-face/&quot;&gt;Beautiful fonts with @font-face&lt;/a&gt;&quot;, zamieszczonego na stronie &lt;a href=&quot;http://hacks.mozilla.org/&quot;&gt;hacks.mozilla.org&lt;/a&gt; na licencji &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by/3.0/us/&quot;&gt;Creative Commons Attribution 3.0 United States License&lt;/a&gt;. Autorem tekstu jest John Daggett. Spis wszystkich tłumaczeń artykułów z hacks.mozilla.org dostępny jest na stronach &lt;a href=&quot;http://wiki.aviary.pl/Mozilla:Hacks&quot;&gt;wiki.aviary.pl&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Firefox 3.0 poprawił wyświetlanie typografii poprzez dodanie wsparcia dla kerningu, ligatur oraz zróżnicowanych wag czcionek równocześnie ze wsparciem kompleksowych skryptów renderujących. Autorzy stron są jednak ciągle ograniczeni do używania w swoich projektach powszechnie dostępnych czcionek. Firefox 3.5 usuwa te ograniczenia wprowadzając wsparcie dla reguły CSS &lt;a href=&quot;https://developer.mozilla.org/en/CSS/@font-face&quot;&gt;@font-face&lt;/a&gt;, która jest metodą linkowania czcionek TrueType i OpenType, tak jak obecnie linkuje się kod i obrazki. Safari wspiera ten rodzaj linkowania czcionek od wersji 3.1, zaś Opera zapowiada wprowadzenie obsługi tej funkcji w Operze 10.&lt;/p&gt;
&lt;p&gt;Użycie @font-face do linkowania czcionek jest stosunkowo proste. W arkuszu stylów każda reguła @font-face definiuje nazwę rodziny czcionek do użycia, zasób, z którego ma być pobrana oraz charakterystykę stylu danego kroju jak pogrubienie czy pochylenie. Firefox 3.5 pobiera czcionkę tylko wtedy, kiedy jest to potrzebne, zatem arkusz stylów może zawierać pełną listę czcionek, z których wybranych zostanie tylko kilka aktualnie używanych.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;/* Graublau Sans Web (www.fonts.info) */&lt;/span&gt;
 
&lt;span style=&quot;color: #a1a100;&quot;&gt;@font-face {&lt;/span&gt;
  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; Graublau Sans Web&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  src&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000; font-style: italic;&quot;&gt;GraublauWeb.otf&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; format&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;opentype&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
body &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt;
  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; Graublau Sans Web&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; Lucida Grande&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;sans-serif&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt; 
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Przeglądarki wspierające @font-face wyświetlą tekst przy użyciu czcionki Graublau Sans Web, zaś starsze przeglądarki do wyświetlania tekstu zastosują czcionkę Lucida Grande lub domyślną czcionkę bezszeryfową. Przykład jest &lt;a href=&quot;http://people.mozilla.org/~jdaggett/demos/simplefontface.html&quot;&gt;tutaj&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://people.mozilla.org/~jdaggett/demos/simplefontface.html&quot;&gt;&lt;br&gt;
&lt;img src=&quot;http://hacks.mozilla.org/wp-content/uploads/2009/06/graublausanswebdemo.png&quot;&gt;&lt;br&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Szczegóły&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Większość rodzin czcionek zawiera obecnie tylko cztery odmiany: normalną, pogrubioną, pochyloną oraz pogrubioną pochyloną. Do definiowania każdej z tych odmian używane są instrukcje &lt;em&gt;font-weight&lt;/em&gt; oraz &lt;em&gt;font-style&lt;/em&gt;. Definiują one styl czcionki, nie ma tutaj informacji o kaskadowości lub dziedziczeniu. Gdy własności nie są wprost zdefiniowane, przyjmują wartość ‘normal’:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;/* Gentium by SIL International   */&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;/* http://scripts.sil.org/gentium */&lt;/span&gt;
 
&lt;span style=&quot;color: #a1a100;&quot;&gt;@font-face {&lt;/span&gt;
  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; Gentium&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  src&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000; font-style: italic;&quot;&gt;Gentium.ttf&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;/* font-weight, font-style ==&amp;gt; default to normal */&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
&lt;span style=&quot;color: #a1a100;&quot;&gt;@font-face {&lt;/span&gt;
  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; Gentium&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  src&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000; font-style: italic;&quot;&gt;GentiumItalic.ttf&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-style&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;italic&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
body &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; Gentium&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; Times New Roman&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;serif&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://people.mozilla.org/~jdaggett/demos/multiplefaces.html&quot;&gt;Przykładowy tekst&lt;/a&gt; poniżej wyświetlony jest przy użyciu tej rodziny czcionek:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://people.mozilla.org/~jdaggett/demos/multiplefaces.html&quot;&gt;&lt;br&gt;
&lt;img src=&quot;http://hacks.mozilla.org/wp-content/uploads/2009/06/multiplefaces.png&quot;&gt;&lt;br&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cechą, którą łatwo przeoczyć, jest to, że @font-face pozwala tworzyć rodziny z więcej niż tylko normalnym i pogrubionym stylem - dla pojedynczej rodziny można zdefiniować do dziewięciu wag czcionek. W systemie Windows ograniczenia platformy zmiejszają zwykle wybór rodzin czcionek tylko do wagi normalnej i pogrubionej. Czcionki, takie jak japoński projekt open source &lt;a href=&quot;http://mplus-fonts.sourceforge.jp/&quot;&gt;M+ Fonts&lt;/a&gt;, mają aż siedem wag. Część z nich użyta jest na &lt;a href=&quot;http://people.mozilla.org/~jdaggett/demos/multipleweights.html&quot;&gt;przykładzie&lt;/a&gt; poniżej:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://people.mozilla.org/~jdaggett/demos/multipleweights.html&quot;&gt;&lt;br&gt;
&lt;img src=&quot;http://hacks.mozilla.org/wp-content/uploads/2009/06/multipleweights.png&quot;&gt;&lt;br&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;W niektórych sytuacjach autorzy mogą preferować używanie czcionek dostępnych lokalnie, zaś pobierać czcionki tylko wtedy, kiedy odpowiednie kroje nie są dostępne. Jest to możliwe poprzez podanie &lt;em&gt;local()&lt;/em&gt; w definicji &lt;em&gt;src&lt;/em&gt; reguły @font-face. Przeglądarka będzie sprawdzała listę czcionek podanych w &lt;em&gt;src&lt;/em&gt;, aż załaduje pomyślnie którąś z nich.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;/* MgOpen Moderna                      */&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;/* http://www.zvr.gr/typo/mgopen/index */&lt;/span&gt;

 
&lt;span style=&quot;color: #a1a100;&quot;&gt;@font-face {&lt;/span&gt;
  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; MyHelvetica&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  src&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; local&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Helvetica Neue&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; 
       local&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;HelveticaNeue&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; 
       &lt;span style=&quot;color: #993333;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000; font-style: italic;&quot;&gt;MgOpenModernaRegular.ttf&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
&lt;span style=&quot;color: #a1a100;&quot;&gt;@font-face {&lt;/span&gt;
  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; MyHelvetica&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  src&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; local&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Helvetica Neue Bold&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; 
       local&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;HelveticaNeue-Bold&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; 
       &lt;span style=&quot;color: #993333;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000; font-style: italic;&quot;&gt;MgOpenModernaBold.ttf&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-weight&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;bold&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
body &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; MyHelvetica&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;sans-serif&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Zrzut ekranu poniżej pokazuje (od góry do dołu) rezultaty na systemach Mac OS X, Windows i Linux &lt;a href=&quot;http://people.mozilla.org/~jdaggett/demos/localfallback.html&quot;&gt;prostego testu&lt;/a&gt;, który używa rodziny czcionek zdefiniowanej powyżej:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://people.mozilla.org/~jdaggett/demos/localfallback.html&quot;&gt;&lt;br&gt;
&lt;img src=&quot;http://hacks.mozilla.org/wp-content/uploads/2009/06/macwinlinrendering.png&quot;&gt;&lt;br&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Rodzina czcionek Helvetica Neue jest dostępna na większości systemów Mac OS X, ale generalnie nie ma jej na komputerach z system Windows lub Linux. Gdy przykład jest wyświetlany na Mac OS X, używana jest lokalna czcionka Helvetica Neue i żadna czcionka nie jest ładowana. Pod Windowsem i Linuksem próba załadowania lokalnej czcionki nie udaje się i w zamian pobierany jest odpowiednik - czcionka MgOpen Moderna. MgOpen Moderna jest zaprojektowana jako zamiennik czcionki Helvetica, więc daje efekt podobny do Helvetica Neue. W ten sposób autor może zapewnić odpowiedni wygląd tekstu, przy tym uniknąć ładowania czcionki, jeśli nie jest to konieczne.&lt;/p&gt;
&lt;p&gt;Nazwa użyta do przypisania konkretnej czcionki jest pełną nazwą pojedynczej czcionki. Zwykle jest to nazwa czcionki wraz z określeniem jej stylu (np. “Helvetica Bold”). W systemie Mac OS X nazwa jest podana w panelu informacyjnym danej czcionki. Należy wybrać styl, a następnie polecenie ‘Show Font Info&amp;amp;#8217 z menu Preview w FontBook:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://hacks.mozilla.org/wp-content/uploads/2009/06/fontbookinfo.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Podobne narzędzia istnieją pod Linuksem. W Windows można użyć narzędzia &lt;a href=&quot;http://www.microsoft.com/typography/FreeToolsOverview.mspx&quot;&gt;font properties extension&lt;/a&gt;, darmowego programu Microsoftu, który pokazuje te nazwy. Kiedy rozszerzenie jest zainstalowane, panel właściwości pokazuje informacje o poszczególnych czcionkach. Pełna nazwa jest podana w polu “Font Name” w panelu Names:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://hacks.mozilla.org/wp-content/uploads/2009/06/fontproperties.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Safari wspiera tylko wyszukiwanie nazw PostScript pod Mac OS X, więc w tym systemie operacyjnym są również wspieranie te nazwy. Dla czcionek OpenType PS (często oznaczonych rozszerzeniem .otf) pełna nazwa jest taka sama, jak nazwa PostScript pod Windowsem. Zatem dla tych czcionek autorzy powinny podawać zarówno pełną nazwę, jak i nazwę PostScript, by uzyskać międzyplatformową interoperacyjność.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wsparcie wielu języków&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Wiele języków cierpi na niedostatek powszechnie dostępnych czcionek. Dla rzadkich języków i starych pism możliwości wyboru często zmniejszają się do jedynie niewielkiej liczby. Zastosowanie @font-face pozwala autorom, używającym tych języków, naprawić ten problem poprzez włączenie czcionek na swoją stronę.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #a1a100;&quot;&gt;@font-face {&lt;/span&gt;

  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; Scheherazade&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  src&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000; font-style: italic;&quot;&gt;fonts/ScheherazadeRegAAT.ttf&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; format&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;truetype-aat&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; 
       &lt;span style=&quot;color: #993333;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000; font-style: italic;&quot;&gt;fonts/ScheherazadeRegOT.ttf&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; format&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;opentype&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
body &lt;span style=&quot;color: #00AA00;&quot;&gt;{&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; Scheherazade&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;serif&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;W językach takich jak arabski znaki mogą mieć różny kształt, gdyż na sposób wyświetlania danego znaku wpływają znaki go otaczające. Różne systemy wspierają różne technologie renderowania w celu uzyskania kształtu tekstu; pod Mac OS X wymagane są czcionki AAT, podczas gdy pod Windowsem i Linuksem wymagane są czcionki OpenType. Bez czcionek w formacie wymaganym przez dany system kształt tekstu nie będzie wyświetlany prawidłowo.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://people.mozilla.org/~jdaggett/demos/arabicfont.html&quot;&gt;&lt;br&gt;
&lt;img src=&quot;http://hacks.mozilla.org/wp-content/uploads/2009/06/arabicsample.png&quot;&gt;&lt;br&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;W systemie Mac OS X ładowania jest wersja AAT czcionki. W Windows i Linuksie, które nie wspierają wyświetlania przy użyciu czcionek AAT, ładowanie czcionek AAT jest pomijane, a zamiast nich użyte są czcionki OpenType. Dzięki temu tekst jest wyświetlany poprawnie we wszystkich systemach.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Używanie czcionek na wielu stronach&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Firefox 3.5 domyślnie pozwala na ładowanie czcionek dla stron pochodzących z jednej witryny. Zapobiega to swobodnemu wykorzystywaniu czcionek znalezionych na innych stronach. W przypadku witryn, które chcą jawnie zezwolić na wykorzystywanie czcionek na innych stronach, Firefox 3.5 wpiera użycie &lt;a href=&quot;http://www.w3.org/TR/access-control/&quot;&gt;nagłówków kontroli dostępu&lt;/a&gt; w celu kontroli nad tą opcją. Poprzez umieszczenie dodatkowego nagłówka w nagłówkach HTTP, wysyłanego razem z plikami czcionek, strona może udostępnić czcionki dla innych witryn.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;font-family:monospace;&quot;&gt;
# Przykładowy plik .htaccess Apache'a dodający nagłówek kontroli dostępu
 
&amp;lt;FilesMatch &quot;\.(ttf|otf)$&quot;&amp;gt;

&amp;lt;IfModule mod_headers.c&amp;gt;
Header set Access-Control-Allow-Origin &quot;*&quot;
&amp;lt;/IfModule&amp;gt;
&amp;lt;/FilesMatch&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Przy włączonym powyższym nagłówku każda strona może mieć dostęp do czcionek na tej witrynie, nie tylko strony wchodzące w skład tej samej witryny.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problemy licencjonowania czcionek&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Gdy używa się czcionek na stronie, ważne jest, by zawsze upewnić się, czy licencja czcionki dopuszcza jej użycie w sieci. Jeśli umowa licencyjna jest wypełniona niejasnym żargonem prawniczym, nie obawiaj się nadmiaru ostrożności i ustal to z dostawcą czcionki przed użyciem jej na stronie. Jeśli licencja dopuszcza użycie, dobrym pomysłem jest dodanie komentarza przy regułach @font-face wskazującego licencję - dla przyszłych zastosowań.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“Znalazłem darmową czcionkę. Czy mogę wykorzystać ją na mojej stronie?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Czasami tak, czasami nie. Część darmowych czcionek jest dystrybuowana jako zapowiedź produktu do sprzedaży i nie dopuszcza redystrybucji ani umieszczania na serwerze internetowym. Należy sprawdzać licencję również dla darmowych czcionek.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“Chcę użyć [wstaw tutaj nazwę ulubionej czcionki] na mojej stronie. Czy to możliwe?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;W tej chwili raczej nie. Używanie w sieci linkowanych czcionek jest jeszcze w stadium początkowym. Większość czcionek, które są obecnie dostarczane z zamkniętymi systemami operacyjnymi, ma licencje ograniczające użycie do standardowych aplikacji desktopowych, zatem umieszczanie tych czcionek na serwerze internetowym jest prawie na pewno niedozwolone. Piractwo było w przeszłości plagą branży zajmującej się czcionkami, zatem większość dostawców czcionek obawia się zezwalać na używanie ich czcionek poza stosunkowo ograniczonym kontekstem. Wielu dostawców czcionek skupia się na potrzebach przemysłu wydawniczego i względna złożoność umów licencyjnych często to odzwierciedla. W przyszłości część projektantów czcionek może dojść do wniosku, że korzyści ze sprzedaży czcionek jako czcionek sieciowych przeważą nad potencjalnymi stratami wskutek piractwa, część może jednak nie zdecydować się na taki krok. Ich umowy licencyjne będą odzwierciedlały ten wybór i należy go respektować.&lt;/p&gt;
&lt;p&gt;Rynek sprzedaży fotografii jest często opisywany jako rynek o wartości 2 miliardów dolarów, lecz rynek czcionek sieciowych jest jeszcze rynkiem o wartości zero dolarów, zatem może tylko iść w górę!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linkowanie czcionek w Internet Explorerze&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Linkowanie czcionek w Internet Explorerze jest możliwe, jednak tylko dla czcionek w zamkniętym formacie EOT. Jedynym sposobem na stworzenie czcionek EOT jest zastosowanie narzędzia &lt;a href=&quot;http://www.microsoft.com/typography/WEFT.mspx&quot;&gt;Microsoft WEFT&lt;/a&gt;, dostępnego jedynie w systemie Windows. Do formatu EOT mogą być konwertowane jedynie czcionki TrueType i OpenType TT, czcionki OpenType PS (.otf) nie mogą zostać użyte.&lt;/p&gt;
&lt;p&gt;Internet Explorer rozpoznaje jedynie instrukcje &lt;em&gt;font-family&lt;/em&gt; i &lt;em&gt;src&lt;/em&gt; w regułach @font-face, zatem każda rodzina może zawierać tylko pojedynczy krój. Nie rozpoznaje informacji &lt;em&gt;format()&lt;/em&gt; i zignoruje każdą regułę @font-face zawierającą takie wskazówki. To zachowanie może być użyte do międzyplatformowego linkowania czcionek:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;/* Definicja czcionki Internet Explorera */&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;/*        (*musi* być pierwsza)          */&lt;/span&gt;
&lt;span style=&quot;color: #a1a100;&quot;&gt;@font-face {&lt;/span&gt;
  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; Gentium&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  src&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000; font-style: italic;&quot;&gt;Gentium.eot&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;/* nie może zawierać format() */&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
 
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;/* Definicja czcionki dla innych przeglądarek */&lt;/span&gt;
&lt;span style=&quot;color: #a1a100;&quot;&gt;@font-face {&lt;/span&gt;
  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; Gentium&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
  src&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000; font-style: italic;&quot;&gt;Gentium.ttf&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt; format&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;opentype&quot;&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: #00AA00;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Przyszłość&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;W Firefoksie 3.5 nie są obsługiwane instrukcje &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=3512&quot;&gt;&lt;em&gt;font-stretch&lt;/em&gt;&lt;/a&gt; oraz &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=475891&quot;&gt;&lt;em&gt;unicode-range&lt;/em&gt;&lt;/a&gt;. &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=119490&quot;&gt;Czcionki definiowane w dokumentach SVG&lt;/a&gt; również nie są jeszcze wspierane. Rozważane jest ich wprowadzenie w przyszłych wydaniach. Jak zwykle mile widziane są łatki!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dodatkowe informacje&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dokumentacja&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en/CSS/@font-face&quot;&gt;MDC @font-face documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/2008/REC-CSS2-20080411/fonts.html&quot;&gt;CSS2 Fonts specification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css3-fonts/&quot;&gt;CSS3 Fonts draft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/access-control/&quot;&gt;Cross-Origin Resource Sharing Working Draft&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Przykłady&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.alistapart.com/articles/cssatten&quot;&gt;CSS @ Ten: The Next Big Thing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://nicewebtype.com/fonts/graublau-sans-web/&quot;&gt;Example layout using Graublau Sans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://typeinspire.com/&quot;&gt;Examples of Interesting Web Typography&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://webtypography.net/&quot;&gt;The Elements of Typographic Style Applied to the Web&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Czcionki&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.fontsquirrel.com/&quot;&gt;Font Squirrel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://opentype.info/demo/webfontdemo.html&quot;&gt;10 Great Free Fonts for @font-face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fonts.philip.html5.org/&quot;&gt;Web-based font subsetting tool&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2007/11/08/40-excellent-freefonts-for-professional-design/&quot;&gt;40 Excellent Free Fonts by Smashing Magazine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sourceforge.net/projects/fonttools/&quot;&gt;FontTools/TTX - Python scripts for displaying font data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Polityka czcionek&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.msdn.com/ie/archive/2008/07/21/font-embedding-on-the-web.aspx&quot;&gt;Microsoft’s Bill Hill about Font Embedding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cwilso.com/2008/07/23/fonts-embedding-vs-linking/&quot;&gt;Microsoft’s Chris Wilson about direct linking to TrueType fonts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://weblogs.mozillazine.org/roc/archives/2008/08/the_coming_batt.html&quot;&gt;Robert O’Callahan’s blog post on web font formats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/Fonts/Misc/minutes-2008-10&quot;&gt;Discussion of font formats at W3C TPAC meeting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://diveintomark.org/archives/2009/04/21/fuck-the-foundries&quot;&gt;Mark Pilgrim’s post critical of font foundries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dbaron.org/log/20090317-fonts&quot;&gt;David Baron’s thoughts about downloadable font formats&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Mon, 13 Jul 2009 19:42:01 +0200</pubDate><guid>http://witia.jogger.pl/2009/07/13/eleganckie-czcionki-przy-uzyciu-font-face/</guid><category>hacks.mozilla.org</category></item><item><title>Stylowy tekst przy użyciu text-shadow</title><link>http://witia.jogger.pl/2009/07/06/stylowy-tekst-przy-uzyciu-text-shadow/</link><description>&lt;p&gt;&lt;em&gt;Poniższy tekst jest tłumaczeniem artykułu &quot;&lt;a href=&quot;http://hacks.mozilla.org/2009/06/text-shadow/&quot;&gt;Stylish text with text-shadow&lt;/a&gt;&quot;, zamieszczonego na stronie &lt;a href=&quot;http://hacks.mozilla.org/&quot;&gt;hacks.mozilla.org&lt;/a&gt; na licencji &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by/3.0/us/&quot;&gt;Creative Commons Attribution 3.0 United States License&lt;/a&gt;. Autorem tekstu jest Frederic Wenzel. Spis wszystkich tłumaczeń artykułów z hacks.mozilla.org dostępny jest na stronach &lt;a href=&quot;http://wiki.aviary.pl/Mozilla:Hacks&quot;&gt;wiki.aviary.pl&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Własność CSS &lt;em&gt;text-shadow&lt;/em&gt; robi to, co sugeruje jej nazwa: pozwala utworzyć lekko rozmytą i przesuniętą kopię tekstu, która przypomina prawdziwy cień.&lt;/p&gt;
&lt;p&gt;Własność &lt;em&gt;text-shadow&lt;/em&gt; została po raz pierwszy wprowadzona w CSS2, ale była wtedy nieodpowiednio zdefiniowana, pominięto ją w CSS2.1. Własność została przywrócona w CSS3 i obecnie &lt;a href=&quot;https://developer.mozilla.org/en/CSS/text-shadow&quot;&gt;wprowadzono ją w Firefoksie 3.5&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jak to działa&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Zgodnie ze specyfikacją CSS3 własność &lt;code&gt;text-shadow&lt;/code&gt; może przyjmować następujące wartości:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;font-family:monospace;&quot;&gt;
none | [&amp;lt;shadow&amp;gt;, ] * &amp;lt;shadow&amp;gt;,
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;lt;shadow&amp;gt; jest definiowane jako:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;font-family:monospace;&quot;&gt;
[ &amp;lt;color&amp;gt;? &amp;lt;length&amp;gt; &amp;lt;length&amp;gt; &amp;lt;length&amp;gt;? | &amp;lt;length&amp;gt; &amp;lt;length&amp;gt; &amp;lt;length&amp;gt;? &amp;lt;color&amp;gt;? ],
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;gdzie dwie pierwsze wartości &amp;lt;length&amp;gt; odpowiadają za poziomie i pionowe przesunięcie, zaś trzecia wartość - za opcjonalne rozmycie. Najlepszym sposobem opisania własności są przykłady.&lt;/p&gt;
&lt;p&gt;Można utworzyć prosty cień, jak na poniższym przykładzie:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;text-shadow&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;2px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;2px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;3px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#000&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;padding: 10px&quot;&gt;
&lt;div style=&quot;width: 233px; height: 43px; line-height: 43px; text-align: center; color: #000; background: #fff; font-size: 200%; text-shadow: 2px 2px 3px #000;&quot;&gt;A simple shadow&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://wiki.mozilla.org/images/4/47/35days-text-shadow-simple.jpg&quot;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;(Wszystkie przykłady składają się z przykładu na żywo, a następie obrazka przedstawiającego działanie funkcji — można zatem porównać zachowanie własnej przeglądarki z Firefoksem 3.5 w systemie OSX)&lt;/p&gt;
&lt;p&gt;Jeśli ktoś woli ostre krawędzie, może zupełnie powstrzymać się od używania rozmycia:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;text-shadow&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;2px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;2px&lt;/span&gt; 0 &lt;span style=&quot;color: #cc00cc;&quot;&gt;#888&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;padding: 10px&quot;&gt;
&lt;div style=&quot;width: 226px; height: 40px; line-height: 40px; text-align: center; color: #000; background: #fff; font-size: 200%; text-shadow: 2px 2px 0 #888;&quot;&gt;I don’t like blurs&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://wiki.mozilla.org/images/0/0e/35days-text-shadow-noblur.jpg&quot;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Tekst z poświatą i wielokrotne cienie&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dzięki elastyczności funkcji możliwości jej zastosowań nie kończą się na powyższych przykładach. Zmieniając wartości przesunięcia, rozmycia i oczywiście koloru, można osiągnąć różne efekty, np. tajemniczą poświatę:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
 &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;text-shadow&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;1px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;1px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#fff&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;padding: 10px&quot;&gt;
&lt;div style=&quot;width: 181px; height: 49px; line-height: 49px; text-align: center; color: #fff; background: #000; font-size: 200%; text-shadow: 1px 1px 5px #fff;&quot;&gt;Glowing text&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://wiki.mozilla.org/images/d/de/35days-text-shadow-glowing.jpg&quot;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;lub zwykłe, niewyraźne rozmycie:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;text-shadow&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;0px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;0px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#000&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;padding: 10px&quot;&gt;
&lt;div style=&quot;width: 164px; height: 49px; line-height: 49px; text-align: center; color: #000; background: #fff; font-size: 200%; text-shadow: 0px 0px 5px #000;&quot;&gt;Blurry text&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://wiki.mozilla.org/images/2/25/35days-text-shadow-blurry.jpg&quot;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Można też dodać więcej niż jeden cień, co pozwala na uzyskanie efektu “ognia” (na podstawie &lt;a href=&quot;http://www.css3.info/preview/text-shadow/&quot;&gt;http://www.css3.info/preview/text-shadow/ css3.info&lt;/a&gt;):&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;text-shadow&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; 0 0 &lt;span style=&quot;color: #933;&quot;&gt;4px&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;white&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; 0 &lt;span style=&quot;color: #933;&quot;&gt;-5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;4px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#FFFF33&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;2px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;-10px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;6px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#FFDD33&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;-2px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;-15px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;11px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#FF8800&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;2px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;-25px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;18px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#FF2200&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;padding: 15px&quot;&gt;
&lt;div style=&quot;width: 356px; height: 53px; text-align: center; line-height: 58px; color: #fff; background: #000; font-size: 200%; padding-top:5px; text-shadow:0 0 4px white, 0 -5px 4px #FFFF33, 2px -10px 6px #FFDD33, -2px -15px 11px #FF8800, 2px -25px 18px #FF2200&quot;&gt;Multiple shadows are hot&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://wiki.mozilla.org/images/d/d9/35days-text-shadow-fire.jpg&quot;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Liczba definicji &lt;em&gt;text-shadow&lt;/em&gt;, którą można dodać jednocześnie w Firefoksie 3.5, jest — w teorii — nieograniczona, chociaż lepiej utrzymywać je w rozsądnych granicach granicach. Jak wszystkie własności CSS, tak i &lt;em&gt;text-shadow&lt;/em&gt; można modyfikować w locie przy użyciu JavaScript:&lt;/p&gt;
&lt;div style=&quot;color: #fff; background: #000; font-size: 200%; padding:20px; text-align: center&quot; id=&quot;animationtext&quot;&gt;Animated shadows with JavaScript&lt;/div&gt;
&lt;p&gt;&lt;script type=&quot;text/javascript&quot;&gt;
&lt;!--
var textshadow = {
  colors: [ '#f00', '#0f0', '#00f' ],
  shadows: [ '0 -10px 2px', '10px 10px 2px', '-10px 10px 2px' ],
  state: [0, 1, 2],
  animate: function() {
    var t = document.getElementById(&quot;animationtext&quot;);
    var s = '';
    for (var i = 0; i &lt; 3; i++)
    {
      if (s) s += &quot;, &quot;;
      var myshadows = this.shadows[this.state[i]]; s += myshadows + ' ' + this.colors[i];
      this.state[i] = ++this.state[i] % 3; /* rotate */
    }
    t.style.textShadow = s;
  },
  toggleAnimation: function() {
    if (this.handle) {
      window.clearInterval(this.handle);
      this.handle = false;
      var t = document.getElementById('animationtext');
      t.style.textShadow = '';
      }
  else {
    this.handle = window.setInterval(function() { textshadow.animate(); }, 100); } return false;
  }
} 
//--&gt;
&lt;/script&gt;&lt;/p&gt;
&lt;div style=&quot;font-size: 120%; text-align: center; font-weight: bold&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;textshadow.toggleAnimation();return false;&quot;&gt;&lt;br&gt;
Uruchom/zatrzymaj animację&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Wykonywanie, dostępność i zgodność z przeglądarkami&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Czasy wykorzystywania w sieci obrazków (lub - jeszcze gorzej - Flasha) do uzyskania cienia tekstu są policzone z dwóch powodów:&lt;/p&gt;
&lt;p&gt;Po pierwsze - stosowanie tekstu zamiast obrazków przynosi znaczne korzyści. Nieużywanie obrazków oszczędza przepustowość łącza i ogólne koszty połączeń HTTP. Dostępność, zarówno dla osób używających czytników ekranowych, jak i dla wyszukiwarek, jest znacznie poprawiona. Powiększanie strony działa lepiej, ponieważ skalowany jest tekst, nie zaś obrazek przy użyciu interpolacji pikseli.&lt;/p&gt;
&lt;p&gt;Po drugie - ta funkcja jest kompatybilna z wieloma przeglądarkami:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Opera obsługuje &lt;em&gt;text-shadow&lt;/em&gt; od wersji 9.5. Wg danych z &lt;a href=&quot;https://developer.mozilla.org/en/CSS/text-shadow&quot;&gt;Mozilla Developer Center&lt;/a&gt; Opera 9.x obsługuje do 6 cieni dla jednego elementu.&lt;/li&gt;
&lt;li&gt;Safari ma tę funkcję od wersji 1.1 (a co za tym idzie - inne przeglądarki oparte WebKit związane z tą wersją).&lt;/li&gt;
&lt;li&gt;Internet Explorer nie obsługuje własności &lt;em&gt;text-shadow&lt;/em&gt;, jednak ta funkcja upraszcza się poprawnie do zwykłego tekstu. W celu naśladowania w MSIE niektórych efektów &lt;em&gt;text-shadow&lt;/em&gt; można użyć jego własnych &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms673539%28VS.85%29.aspx&quot;&gt;filtrów ”Shadow” i ”DropShadow”&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Podobnie jak MSIE, inne, starsze przeglądarki nieobsługujące tej funkcji (włączając w to Firefoksa 3 lub starszego) pokażą zwykły tekst bez żadnych cieni.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Trudnością, o której trzeba wspomnieć, jest ”kolejność rysowania”: o ile Opera 9.x stosuje się do kolejności rysowania CSS2 (to znaczy - pierwszy zdefiniowany cień jest rysowany na dole), to Firerox 3.5 używa kolejności rysowania CSS3 (pierwszy zdefiniowany cień jest na górze). Należy pamiętać o tym używając wielokrotnych cieni.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Podsumowanie&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Własność &lt;em&gt;text-shadow&lt;/em&gt; jest niewielką, lecz dającą ogromne możliwości, własnością CSS, która prawdobodobnie będzie szeroko zaadoptowana w sieci w niedalekiej przyszłości — obecnie obsługuje ją Firefox 3.5. Dzięki bezproblemowemu pomijaniu jej przez starsze przeglądarki może być bez obaw używana przez twórców stron i z czasem być dostępna dla coraz większej liczby użytkowników.&lt;/p&gt;
&lt;p&gt;Na koniec odrobina rozważań: Jak każdą błyskotkę, należy używać jej jak soli do zupy — z umiarem, nie pełną garścią. Jeśli twórcy stron z całego świata przesadzą z jej stosowaniem, własność &lt;em&gt;text-shadow&lt;/em&gt; może szybko umrzeć bolesną śmiercią. Byłoby to smutne, gdyby użytkownicy wzdragali się na widok tekstu z cieniem, jak &lt;a href=&quot;http://xkcd.com/590/&quot;&gt;miłośnicy typografii na stronie “Papyrus”&lt;/a&gt;, i dlatego trzeba trzymać tę funkcję głęboko w swoim skarbcu.&lt;/p&gt;
&lt;p&gt;To powiedziawszy: &lt;span style=&quot;text-shadow:3px 3px 3px #888;&quot;&gt;Wypróbujcie ją!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dodatkowe zasoby&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dokumentacja&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en/CSS/text-shadow&quot;&gt;https://developer.mozilla.org/en/CSS/text-shadow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.quirksmode.org/css/textshadow.html&quot;&gt;http://www.quirksmode.org/css/textshadow.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/css3-text/#text-shadow&quot;&gt;http://www.w3.org/TR/css3-text/#text-shadow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Przykłady&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://maettig.com/code/css/text-shadow.html&quot;&gt;http://maettig.com/code/css/text-shadow.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.kremalicious.com/2008/04/make-cool-and-clever-text-effects-with-css-text-shadow/&quot;&gt;http://www.kremalicious.com/2008/04/make-cool-and-clever-text-effects-with-css-text-shadow/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bug10713.bugzilla.mozilla.org/attachment.cgi?id=273985&quot;&gt;https://bug10713.bugzilla.mozilla.org/attachment.cgi?id=273985&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bug10713.bugzilla.mozilla.org/attachment.cgi?id=197360&quot;&gt;https://bug10713.bugzilla.mozilla.org/attachment.cgi?id=197360&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Mon, 06 Jul 2009 15:50:08 +0200</pubDate><guid>http://witia.jogger.pl/2009/07/06/stylowy-tekst-przy-uzyciu-text-shadow/</guid><category>hacks.mozilla.org</category></item><item><title>Dodawanie cienia przy użyciu -moz-box-shadow</title><link>http://witia.jogger.pl/2009/06/21/dodawanie-cienia-przy-uzyciu-moz-box-shadow/</link><description>&lt;p&gt;&lt;em&gt;Poniższy tekst jest tłumaczeniem artykułu &quot;&lt;a href=&quot;http://hacks.mozilla.org/2009/06/moz-box-shadow/&quot;&gt;Shadow boxing with -moz-box-shadow&lt;/a&gt;&quot;, zamieszczonego na stronie &lt;a href=&quot;http://hacks.mozilla.org/&quot;&gt;hacks.mozilla.org&lt;/a&gt; na licencji &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by/3.0/us/&quot;&gt;Creative Commons Attribution 3.0 United States License&lt;/a&gt;. Autorem tekstu jest Frederic Wenzel. Spis wszystkich tłumaczeń artykułów z hacks.mozilla.org dostępny jest na stronach &lt;a href=&quot;http://wiki.aviary.pl/Mozilla:Hacks&quot;&gt;wiki.aviary.pl&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Jeszcze jedną ciekawą funkcją CSS3, wprowadzoną w Firefoksie 3.5, są cienie pudełka (&lt;em&gt;box&lt;/em&gt;). Ta funkcja pozwala na otaczanie cieniem ramki niemal każdego dowolnego elementu&lt;/p&gt;
&lt;p&gt;Ponieważ prace nad własnością &lt;em&gt;box shadow&lt;/em&gt; w CSS3 jeszcze trwają, w Firefoksie zaimplementowano ją jako &lt;code&gt;-moz-box-shadow&lt;/code&gt;. W ten sposób, poprzez dodanie przedrostka “-moz-&amp;amp;#8221 do nazwy, Mozilla testuje eksperymentalne własności CSS. Kiedy specyfikacja zostanie skończona, nazwa własności będzie zmieniona na “box-shadow.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jak do działa&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dodawanie cienia elementu jest proste. &lt;a href=&quot;http://dev.w3.org/csswg/css3-background/#the-box-shadow&quot;&gt;Standard CSS3&lt;/a&gt; dopuszcza jako jego wartości:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;font-family:monospace;&quot;&gt;
none | &amp;lt;shadow&amp;gt; [ &amp;lt;shadow&amp;gt; ]*
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;gdzie &lt;code&gt;&amp;lt;shadow&amp;gt;&lt;/code&gt; to:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;font-family:monospace;&quot;&gt;
&amp;lt;shadow&amp;gt; = inset? &amp;amp;&amp;amp; [ &amp;lt;length&amp;gt;{2,4} &amp;amp;&amp;amp; &amp;lt;color&amp;gt;? ]
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Dwie pierwsze liczby w &lt;code&gt;&amp;lt;length&amp;gt;&lt;/code&gt; są odpowiednio &lt;em&gt;poziomym i pionowym rozmiarem&lt;/em&gt; cienia. Trzecia liczba jest &lt;em&gt;promieniem rozmycia&lt;/em&gt; (porównaj to z promieniem rozmycia we &lt;a href=&quot;http://hacks.mozilla.org/2009/06/text-shadow/&quot;&gt;własności text-shadow&lt;/a&gt;). Wreszcie czwarta liczba jest &lt;em&gt;promieniem rozpiętości&lt;/em&gt;, pozwalającym cieniowi powiększać się (wartości dodatnie) lub zmniejszać (wartości ujemne) względem rozmiaru elementu rodzica.&lt;/p&gt;
&lt;p&gt;Słowo &lt;code&gt;inset&lt;/code&gt; jest dobrze opisane w samym standardzie:&lt;br&gt;&lt;/p&gt;
&lt;blockquote&gt;jeśli jest obecne, zmienia cień z zewnętrznego (cień od elementu w stronę tła, jakby znajdował się ponad nim) na cień wewnętrzny (cień od tła w stronę elementu, jakby element był wycięty w tle i przesunięty pod nie).
&lt;p&gt;&lt;/blockquote&gt;
&lt;p&gt;Jako że jeden obraz wart jest tysiąca słów, spójrzmy na kilka przykładów.&lt;/p&gt;
&lt;p&gt;Aby dodać prosty cień, wystarczy jedynie zdefiniować rozmiar i kolor:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
 -moz-box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;1px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;1px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;10px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#00f&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style=&quot;display:block; width:150px; height:50px; border:1px solid black; background-color: #00f; -moz-box-shadow: 1px 1px 10px #00f;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://wiki.mozilla.org/images/6/60/35days-box-shadow-simple.jpg&quot; alt=&quot;simple box shadow&quot;&gt;&lt;/p&gt;
&lt;p&gt;(Każdy z przykładów w tym artykule składa się najpierw z własności zastosowanej na żywo , po której następuje zrzut ekranu z Firefoksa 3.5 w systemie OSX).&lt;/p&gt;
&lt;p&gt;Podobnie można dodać wewnętrzny cień przy użyciu słowa &lt;code&gt;inset&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
-moz-box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;inset&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;1px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;1px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;10px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#888&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style=&quot;display:block; width:150px; height:50px; border:1px solid black; background-color: #fff; -moz-box-shadow: inset 1px 1px 10px #888;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://wiki.mozilla.org/images/f/f4/35days-box-shadow-inset.jpg&quot; alt=&quot;inset box shadow&quot;&gt;&lt;/p&gt;
&lt;p&gt;Przy użyciu &lt;em&gt;promienia rozpiętości&lt;/em&gt; można zdefiniować mniejsze (lub większe) cienie niż element, do którego są przypisane:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
-moz-box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;0px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;20px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;10px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;-10px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#888&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style=&quot;display:block; width:150px; height:50px; border:1px solid black; background-color: #fff; margin:30px; -moz-box-shadow: 0px 20px 10px -10px #888;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://wiki.mozilla.org/images/4/4c/35days-box-shadow-spread.jpg&quot; alt=&quot;box shadow with spread radius&quot;&gt;&lt;/p&gt;
&lt;p&gt;W razie potrzeby można też zdefiniować złożone cienie, umieszczając definicje kilku cieni oddzielone przecinkami (dzięki uprzejmości &lt;a href=&quot;http://markusstange.wordpress.com/2009/02/15/fun-with-box-shadows/&quot;&gt;Markusa Stange'a&lt;/a&gt;):&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
-moz-box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; 0 0 &lt;span style=&quot;color: #933;&quot;&gt;20px&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;black&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;20px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;15px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;30px&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;yellow&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;-20px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;15px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;30px&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;lime&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;-20px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;-15px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;30px&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;blue&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;20px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;-15px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;30px&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;red&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style=&quot;display:block; width:150px; height:50px; border:1px solid black; background-color: #fff; margin:50px; -moz-box-shadow: 0 0 20px black, 20px 15px 30px yellow, -20px 15px 30px lime, -20px -15px 30px blue, 20px -15px 30px red;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://wiki.mozilla.org/images/3/30/35days-box-shadow-multiple.jpg&quot; alt=&quot;multiple box shadows&quot;&gt;&lt;/p&gt;
&lt;p&gt;Poszczególne cienie łączą się wzajemnie bardzo łagodnie, i - jak można zauważyć - kolejność, w której są zdefiniowane, jest istotna. Jako że &lt;code&gt;box-shadow&lt;/code&gt; jest własnością CSS3, Firefox&amp;nbsp;3.5 stosuje się do kolejności rysowania CSS3. Oznacza to, że pierwszy zdefiniowany cień pojawia się na górze i należy pamiętać o tym przy definiowaniu złożonych cieni.&lt;/p&gt;
&lt;p&gt;Jako końcowy przykład chciałbym pokazać połączenie &lt;code&gt;-moz-box-shadow&lt;/code&gt; z &lt;a href=&quot;http://www.w3.org/TR/css3-color/#rgba-color&quot;&gt;definicją koloru RGBA&lt;/a&gt;. RGBA jest tym samym, co RGB, ale dodaje kanał przezroczystości alfa, służący do zmiany przezroczystości koloru. Wykonajmy czarny, nierozmyty cień z przezroczystością 50% na żółtym tle:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
-moz-box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;inset&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;5px&lt;/span&gt; 0 rgba&lt;span style=&quot;color: #00AA00;&quot;&gt;(&lt;/span&gt;0&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; 0&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; 0&lt;span style=&quot;color: #00AA00;&quot;&gt;,&lt;/span&gt; .5&lt;span style=&quot;color: #00AA00;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style=&quot;display:block; width:150px; height:50px; border:1px solid black; background-color: yellow; -moz-box-shadow: inset 5px 5px 0 rgba(0, 0, 0, .5);&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://wiki.mozilla.org/images/e/ea/35days-box-shadow-rgba.jpg&quot; alt=&quot;box shadow with RGBA&quot;&gt;&lt;/p&gt;
&lt;p&gt;Jak można zauważyć - żółte tło jest widoczne poprzez półprzezroczysty cień. Ta funkcja staje się szczególnie interesująca, kiedy użyte są obrazki tła - można je dostrzec przebijające przez cień pudełka.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Zgodność z przeglądarkami&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Jako nowa własność, należąca do opracowywanego dopiero CSS3, własność &lt;code&gt;box-shadow&lt;/code&gt; nie jest jeszcze szeroko zaadoptowana przez twórców przeglądarek.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Firefox 3.5 wspiera tę opcję jako &lt;code&gt;-moz-box-shadow&lt;/code&gt;, w tym złożone cienie, komendę &lt;code&gt;inset&lt;/code&gt; i promień rozpiętości.&lt;/li&gt;
&lt;li&gt;Safari/WebKit przyjęło podobny jak Firefox sposób sposób implementacji funkcji jako &lt;code&gt;-webkit-box-shadow&lt;/code&gt;. Złożone cienie są wspierane od wersji 4.0, cienie wewnętrzne i zasięg przesunięcia nie są jeszcze obsługiwane przez WebKit.&lt;/li&gt;
&lt;li&gt;Opera i Microsoft Internet Explorer nie wprowadziły jeszcze własności &lt;code&gt;box shadow&lt;/code&gt;, W MSIE można spróbować jego własnego &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms532985(VS.85).aspx&quot;&gt;filtra DropShadow&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aby wykorzystać jak najszerzej istniejące implementacje, wskazane jest użycie wszystkich trzech rodzajów składni: &lt;code&gt;-moz&lt;/code&gt;, &lt;code&gt;-webkit&lt;/code&gt; i standardu CSS3. Poszczególne przeglądarki wybiorą wtedy i zastosują tę, którą obsługują:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-family:monospace;&quot;&gt;
 -moz-box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;1px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;1px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;10px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#00f&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
 -webkit-box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;1px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;1px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;10px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#00f&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
 box-shadow&lt;span style=&quot;color: #00AA00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;1px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;1px&lt;/span&gt; &lt;span style=&quot;color: #933;&quot;&gt;10px&lt;/span&gt; &lt;span style=&quot;color: #cc00cc;&quot;&gt;#00f&lt;/span&gt;&lt;span style=&quot;color: #00AA00;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Dobrą wiadomością jest to, że własność &lt;code&gt;box-shadow&lt;/code&gt; jest elegancko ignorowana w przeglądarkach pozbawionych jej wsparcia. Na przykład, wszystkie powyższe przykłady będą wyglądały w MSIE jak zwykłe i nudne pudełka bez cieni.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Podsumowanie&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Własność CSS3 &lt;code&gt;box-shadow&lt;/code&gt; nie jest jeszcze tak szeroko dostępna w przeglądarkach (i tym samym dla użytkowników), jak np. własność &lt;code&gt;text-shadow&lt;/code&gt;, jednak dzięki częściowemu wsparciu w WebKit i pełnemu wsparciu wprowadzonemu w Firefoksie 3.5 (tak długo, jak odpowiada obecnemu statusowi przyszłej specyfikacji) coraz więcej użytkowników będzie mogło zobaczyć rodzaje cieni definiowane w CSS.&lt;/p&gt;
&lt;p&gt;Twórcy stron mogą więc używać tej funkcji ze świadomością, że dostarczają doskonalszych wrażeń użytkownikom nowoczesnych przeglądarek, a jednocześnie nie odwracają się od użytkowników starszych przeglądarek.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dodatkowe zasoby&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Dokumentacja&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en/CSS/-moz-box-shadow&quot;&gt;https://developer.mozilla.org/en/CSS/-moz-box-shadow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css3-background/#the-box-shadow&quot;&gt;http://dev.w3.org/csswg/css3-background/#the-box-shadow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Przykłady&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://markusstange.wordpress.com/2009/02/15/fun-with-box-shadows/&quot;&gt;http://markusstange.wordpress.com/2009/02/15/fun-with-box-shadows/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.css3.info/preview/box-shadow/&quot;&gt;http://www.css3.info/preview/box-shadow/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.elektronotdienst-nuernberg.de/bugs/box-shadow_inset.html&quot;&gt;http://www.elektronotdienst-nuernberg.de/bugs/box-shadow_inset.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Sun, 21 Jun 2009 23:07:25 +0200</pubDate><guid>http://witia.jogger.pl/2009/06/21/dodawanie-cienia-przy-uzyciu-moz-box-shadow/</guid><category>hacks.mozilla.org</category></item><item><title>Manipulacja pikselami przy użyciu canvas</title><link>http://witia.jogger.pl/2009/06/20/manipulacja-pikselami-przy-uzyciu-canvas/</link><description>&lt;p&gt;&lt;em&gt;Poniższy tekst jest tłumaczeniem artykułu &quot;&lt;a href=&quot;http://hacks.mozilla.org/2009/06/pushing-pixels-with-canvas/&quot;&gt;Pushing pixels with canvas&lt;/a&gt;&quot;, zamieszczonego na stronie &lt;a href=&quot;http://hacks.mozilla.org/&quot;&gt;hacks.mozilla.org&lt;/a&gt; na licencji &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by/3.0/us/&quot;&gt;Creative Commons Attribution 3.0 United States License&lt;/a&gt;. Spis wszystkich tłumaczeń artykułów z hacks.mozilla.org dostępny jest na stronach &lt;a href=&quot;http://wiki.aviary.pl/Mozilla:Hacks&quot;&gt;wiki.aviary.pl&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Artykuł ten został napisany przez &lt;a href=&quot;http://blog.mozbox.org&quot;&gt;Paula Rougeta&lt;/a&gt;, który jest członkiem zespołu Mozilla Evangelism. Paul mieszka w Paryżu we Francji i jest dobrze znany między innymi ze swych zadziwiających prac związanych z &lt;a href=&quot;http://standblog.org/blog/post/2009/04/15/Making-video-a-first-class-citizen-of-the-Web&quot;&gt;otwartym wideo w sieci&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Element canvas, na swoim najprostszym poziomie, jest łatwym sposobem rysowania danych bitmapowych na stronie HTML. Posiada on metody pozwalające rysować prostokąty, łuki, krzywe i inne proste figury. Jednak dla niektórych rodzajów efektów i rysunków potrzebny jest bezpośredni dostęp do pikseli.&lt;/p&gt;
&lt;p&gt;W Firefoksie 3.5 dodaliśmy do elementu canvas nową metodę - &lt;a href=&quot;https://developer.mozilla.org/En/HTML/Canvas/Pixel_manipulation_with_canvas#Creating_an_ImageData_object&quot;&gt;&lt;em&gt;createImageData&lt;/em&gt;&lt;/a&gt;. Wywołanie &lt;em&gt;createImageData&lt;/em&gt; jest wygodną metodą utworzenia czystego zestawu pikseli do manipulacji, które na końcu mogą być z powrotem skopiowane do elementu canvas.&lt;/p&gt;
&lt;p&gt;Ponieważ mówimy o pojedynczym wywołaniu, myślimy, że może być wartościowe przejście przez wszystkie wywołania, które można przeczytać, obrobienie i aktualizacja pikseli bezpośrednio w elemencie canvas i umieszczenie &lt;em&gt;createImageData&lt;/em&gt; w jego pełnym kontekście.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wydobywanie danych pikseli&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;W elemencie canvas nie można bezpośrednio manipulować pikselami. W celu dokonania zmian danych w elemencie canvas należy najpierw skopiować dane, wykonać zmiany i skopiować z powrotem zmienione dane do docelowego elementu canvas.&lt;/p&gt;
&lt;p&gt;Wywołanie &lt;a href=&quot;https://developer.mozilla.org/En/HTML/Canvas/Pixel_manipulation_with_canvas#Getting_the_pixel_data_for_a_context&quot;&gt;&lt;em&gt;getImageData&lt;/em&gt;&lt;/a&gt; pozwala skopiować prostokąt pikseli poza element canvas. Wywołanie w celu pobrania wszystkich danych pikseli elementu canvas wygląda następująco:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; canvas &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; document.&lt;span style=&quot;color: #660066;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'myCanvasElt'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; ctx &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;getContext&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'2d'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; canvasData &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; ctx.&lt;span style=&quot;color: #660066;&quot;&gt;getImageData&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;0&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; 0&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Obiekt &lt;em&gt;canvasData&lt;/em&gt; zawiera dane pikseli. Posiada następujące człony:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;
canvasData &lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
    width&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;  nieoznaczona długość&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// szerokość elementu canvas&lt;/span&gt;
    height&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; nieoznaczona długość&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// wysokość elementu canvas&lt;/span&gt;
    data&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;   CanvasPixelArray &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;     // wartości pikseli&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Człon &quot;data&quot; to płaska tablica wartości, która ma jedną wartość dla każdego komponentu w pikselu, zorganizowana od lewej do prawej, od góry do dołu, z każdym pikselem reprezentowanym jako cztery wartości w porządku RGBA.&lt;/p&gt;
&lt;p&gt;Na przykład w elemencie canvas 2×2 powinny być 4 piksele reprezentowane przez 16 wartości, które wyglądają jak poniżej:&lt;/p&gt;
&lt;pre&gt;
0,0  0,1  1,0  1,1
RGBA RGBA RGBA RGBA
&lt;/pre&gt;
&lt;p&gt;Można więc obliczyć długość tablicy wg następującej formuły: &lt;em&gt;width * height * 4&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;W większych elementach canvas, aby poznać wartość barwy niebieskiej w pikselu o współrzędnych x = 10, y = 20, można użyć następującego kodu:&lt;/p&gt;
&lt;pre language=&quot;javascript&quot;&gt;
var x = 10;
var y = 10;
var blue = canvasData.data[(y * width + x) * 4 + 2];

&lt;/pre&gt;
&lt;p&gt;Należy pamiętać, że każda z wartości RGB piksela mieści się w przedziale 0-255 z bitem alfa (przezroczystości) z zakresu 0-255, gdzie 0 oznacza zupełną przezroczystość, a 255 pełną nieprzezroczystość.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tworzenie nowego zestawu pikseli&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Aby utworzyć nową matrycę od podstaw, wystarczy użyć wywołania &lt;a href=&quot;https://developer.mozilla.org/En/HTML/Canvas/Pixel_manipulation_with_canvas#Creating_an_ImageData_object&quot;&gt;&lt;em&gt;createImageData&lt;/em&gt;&lt;/a&gt;, które wymaga dwóch argumentów: wysokości i szerokości matrycy.&lt;/p&gt;
&lt;p&gt;Należy zwrócić uwagę, że wywołanie &lt;em&gt;createImageData&lt;/em&gt; nie kopiuje pikseli z istniejącego elementu canvas, tworzy ono czystą matrycę pikseli z wartościami ustawionymi na przezroczysty czarny (255,255,255,0).&lt;/p&gt;
&lt;p&gt;Poniżej znajduje się przykład pokazujący, jak stworzyć zestaw pikseli o wymiarach elementu canvas:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; canvas &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; document.&lt;span style=&quot;color: #660066;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'myCanvasElt'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; ctx &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;getContext&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'2d'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; canvasData &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; ctx.&lt;span style=&quot;color: #660066;&quot;&gt;createImageData&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;canvas.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;Trzeba pamiętać, że jest to metoda, którą należy używać do tworzenia danych pikselowych.&lt;/em&gt; Poprzednie wersje Firefoksa dopuszczały tworzenie obiektu canvasData poza prostym obiektem JavaScript i użycie go w późniejszych wywołaniach w celu aktualizacji danych canvas. Wywołanie to zostało dodane, by zachować kompatybilność z WebKit, który używa wyspecjalizowanego obiektu zamiast ogólnego obiektu JavaScript.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Aktualizacja pikseli&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Jeśli istnieje już obiekt canvasData, można zaktualizować wartości piksela w tablicy. Oto przykład, jak przejść tablicę, odczytując i aktualizując wartości.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; x &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; x &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; x&lt;span style=&quot;color: #339933;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;  &lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;

    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; y &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; y &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; y&lt;span style=&quot;color: #339933;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;  &lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;

        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Indeks piksela w tablicy&lt;/span&gt;
        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; idx &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;x &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; y &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; width&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Pobranie wartości piksela&lt;/span&gt;
        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; r &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 0&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; g &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 1&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; b &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 2&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; a &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 3&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
 
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;//[...] operacje na wartościach&lt;/span&gt;

        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Aktualizacja wartości piksela&lt;/span&gt;
        canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 0&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; ...&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Kanał czerwony&lt;/span&gt;
        canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 1&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; ...&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Kanał zielony&lt;/span&gt;
        canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 2&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; ...&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Kanał niebieski&lt;/span&gt;
        canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 3&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; ...&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Kanał alfa (przezroczystość)&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Aktualizacja elementu canvas&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Teraz, po aktualizacji zestawu pikseli można użyć prostego wywołania &lt;a href=&quot;https://developer.mozilla.org/En/HTML/Canvas/Pixel_manipulation_with_canvas#Painting_pixel_data_into_a_context&quot;&gt;&lt;em&gt;putImageData&lt;/em&gt;&lt;/a&gt;. Wywołanie to przyjmuje obiekt canvasData oraz położenie x,y, w którym ma być narysowany prostokąt pikseli w elemencie canvas:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; canvas &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; document.&lt;span style=&quot;color: #660066;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'myCanvasElt'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; ctx &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;getContext&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'2d'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; canvasData &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; ctx.&lt;span style=&quot;color: #660066;&quot;&gt;putImageData&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;canvasData&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; 0&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; 0&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Pełny przykład zastosowania &lt;em&gt;getImageData&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Poniżej znajduje się kod, który przekształca kolorowy obrazek na wersję w odcieniach szarości. Można również zobaczyć &lt;a href=&quot;http://people.mozilla.com/~prouget/demos/35days/gray.xhtml&quot;&gt;na żywo przykład na stronie Paula.&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; canvas &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; document.&lt;span style=&quot;color: #660066;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'myCanvasElt'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; ctx &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;getContext&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'2d'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; canvasData &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; ctx.&lt;span style=&quot;color: #660066;&quot;&gt;getImageData&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;0&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; 0&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; x &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; x &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; x&lt;span style=&quot;color: #339933;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;

    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; y &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; y &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; y&lt;span style=&quot;color: #339933;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;

        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Indeks piksela w tablicy&lt;/span&gt;
        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; idx &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;x &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; y &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Wartości RGB&lt;/span&gt;
        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; r &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 0&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; g &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 1&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; b &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 2&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Aktualizacja wartości piksela;&lt;/span&gt;
        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; gray &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;r &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; g &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; b&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

        canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 0&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; gray&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 1&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; gray&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 2&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; gray&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
ctx.&lt;span style=&quot;color: #660066;&quot;&gt;putImageData&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;canvasData&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; 0&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; 0&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Pełny przykład zastosowania &lt;em&gt;createImageData&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Poniższy kod narysuje fraktal w elemencie canvas. Również w tym przypadku można obejrzeć na żywo &lt;a href=&quot;http://people.mozilla.com/~prouget/demos/35days/fractal.xhtml&quot;&gt;przykład działania tego kodu na stronie Paula&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; canvas &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; document.&lt;span style=&quot;color: #660066;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'myCanvasElt'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; ctx &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;getContext&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'2d'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; canvasData &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; ctx.&lt;span style=&quot;color: #660066;&quot;&gt;createImageData&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;canvas.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

 
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Mandelbrot&lt;/span&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt; computeColor&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;x&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; y&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
    x &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; 2.5 &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;x&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;canvas.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt; 0.5&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

    y &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; 2 &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;y&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;canvas.&lt;span style=&quot;color: #660066;&quot;&gt;height&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt; 0.5&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; x0 &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; x&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; y0 &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; y&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

 
    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; iteration &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; max_iteration &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

 
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;while&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;x &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; x &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; y &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; y &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;=&lt;/span&gt; 4 &lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; iteration &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt; max_iteration &lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;

        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; xtemp &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; x&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;x &lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt; y&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;y &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; x0&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

        y &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; 2&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;x&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;y &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; y0&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        x &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; xtemp&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

        iteration&lt;span style=&quot;color: #339933;&quot;&gt;++;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
 
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; Math.&lt;span style=&quot;color: #660066;&quot;&gt;round&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;255 &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; iteration &lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt; max_iteration&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
 
&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; x &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; x &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; x&lt;span style=&quot;color: #339933;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;

    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; y &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; y &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt; canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; y&lt;span style=&quot;color: #339933;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;

        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; color &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; computeColor&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;x&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; y&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
 
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Indeks piksela w tablicy&lt;/span&gt;

        &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; idx &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;x &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; y &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; canvas.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

 
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Aktualizacja wartości piksela;&lt;/span&gt;
        canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 0&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; color&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

        canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 1&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; color&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 2&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; color&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;

        canvasData.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;idx &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; 3&lt;span style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
 

ctx.&lt;span style=&quot;color: #660066;&quot;&gt;putImageData&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;canvasData&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; 0&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; 0&lt;span style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Dodatkowe informacje&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Więcej informacji o elemencie canvas można znaleźć na witrynie &lt;a href=&quot;http://developer.mozilla.org&quot;&gt;MDC&lt;/a&gt;, gdzie tej tematyce poświęcone są artykuły:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/En/HTML/Canvas/Pixel_manipulation_with_canvas&quot;&gt;Pixel Manipulation with Canvas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/En/HTML/Canvas/&quot;&gt;Canvas Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en/Drawing_Graphics_with_Canvas&quot;&gt;Drawing Graphics with Canvas&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mamy nadzieję, że ten tekst był przydatny i umieszcza pojedyncze wywołanie w jego pełnym kontekście.&lt;/p&gt;
</description><pubDate>Sat, 20 Jun 2009 23:25:20 +0200</pubDate><guid>http://witia.jogger.pl/2009/06/20/manipulacja-pikselami-przy-uzyciu-canvas/</guid><category>hacks.mozilla.org</category></item><item><title>Firefox 3.5 przez 35 dni - wizje przyszłości sieci</title><link>http://witia.jogger.pl/2009/06/18/firefox-3-5-przez-35-dni-wizje-przyszlosci-sieci/</link><description>&lt;p&gt;&lt;em&gt;Poniższy tekst jest tłumaczeniem artykułu &quot;&lt;a href=&quot;http://hacks.mozilla.org/2009/06/35-days/&quot;&gt;Firefox 3.5 for 35 days - dreaming about the future of the web&lt;/a&gt;&quot;, zamieszczonego na stronie &lt;a href=&quot;http://hacks.mozilla.org/&quot;&gt;hacks.mozilla.org&lt;/a&gt; na licencji &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by/3.0/us/&quot;&gt;Creative Commons Attribution 3.0 United States License&lt;/a&gt;. Autorem tekstu jest Christopher Blizzard. Spis wszystkich tłumaczeń artykułów z hacks.mozilla.org dostępny jest na stronach &lt;a href=&quot;http://wiki.aviary.pl/Mozilla:Hacks&quot;&gt;wiki.aviary.pl&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://hacks.mozilla.org/&quot;&gt;&lt;img src=&quot;http://hacks.mozilla.org/wp-content/uploads/2009/06/hacks_180x150.png&quot; alt=&quot;35 days logo&quot; style=&quot;float: left; margin: 0 20px 10px 0;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Przez kolejne 35 dni [począwszy od 4 czerwca 2009 - &lt;em&gt;przyp. tłum.&lt;/em&gt;] będziemy mówili o nowych funkcjach Firefoksa 3.5, skierowanych do twórców.&lt;/p&gt;
&lt;p&gt;Nadchodzące wydanie Firefoksa 3.5 wprowadza wiele zmian dla użytkowników. Zaliczają się do nich nowe funkcje prywatności, ulepszona interaktywność i nowy silnik JavaScript, który przyniesie nowe doznania użytkownikom stron bogatych w skrypty. Są to wszystko funkcje, które docenią użytkownicy i będą mogli o nich rozmawiać.&lt;/p&gt;
&lt;p&gt;Ale Firefox 3.5 stanowi ogromny postęp dla sieci samej w sobie. Wprowadziliśmy wsparcie dla audio i wideo, wątki w JavaScript, nowe funkcje elementu canvas, masę nowych funkcji CSS, ładowanie czcionek oraz geolokalizację. Podczas gdy Firefox 3 był znacznym ulepszeniem dla użytkowników sieci, Firefox 3.5 robi to samo dla twórców.&lt;/p&gt;
&lt;p&gt;Ze względu na dużą liczbę nowych funkcji dla twórców w Firefoksie 3.5, spędzimy kolejne 35 dni opisując wszystkie z nich, w dwóch postach dziennie, każdego dnia. Pierwszy post w każdym dniu będzie opisywał dogłębnie nową funkcję Firefoksa 3.5 - jak jej używać, dlaczego pojawia się tutaj, a także pokaże kilka przykładów, co dana funkcja może zrobić. Drugi post będzie miał lżejszy charakter - znajdą się w nim przykłady, co ludzie mogą wspólnie zrealizować, używając funkcji dostępnych w Firefoksie 3.5.&lt;/p&gt;
&lt;p&gt;Osobiście wierzę, że te posty pokażą wizje Mozilli związane z przyszłością sieci. Nie jesteśmy przedsiębiorstwem jak pozostali dostawcy przeglądarek - naszą podstawową misją jest rozwój i ochrona sieci. Firefox 3.5 prezentuje naszą myśl o tym, jakie będzie następne stadium rozwoju sieci - interaktywne aplikacje, wideo, strony wymieniające i współdzielące informacje - wszystko poprzez przeglądarkę. Mamy nadzieję, że wszyscy z was przyjmą to, o czym tu piszemy, zachęcą innych dostawców przeglądarek do zastosowania podobnych rozwiązań, tam gdzie jeszcze ich nie ma, oraz że podtrzyma to wasz zapał dla sieci.&lt;/p&gt;
</description><pubDate>Thu, 18 Jun 2009 12:47:58 +0200</pubDate><guid>http://witia.jogger.pl/2009/06/18/firefox-3-5-przez-35-dni-wizje-przyszlosci-sieci/</guid><category>hacks.mozilla.org</category></item><item><title>Praca dla webmastera</title><link>http://witia.jogger.pl/2008/05/17/praca-dla-webmastera/</link><description>&lt;p&gt;Przeglądając ogłoszenia o pracy skierowane do webmasterów i webdeveloperów można odnaleźć w nich pewne tendencje.&lt;/p&gt;
&lt;p&gt;Pozytywny jest fakt, że firmy dostrzegają istnienie specjalizacji w tak szerokich pojęciach jak webmaster czy webdeveloper. Poszukują więc np. specjalisty w technologiach, takich jak (X)HTML, CSS i JavaScript, albo osoby biegłej w programowaniu obiektowym w PHP i znającą zagadnienia MVC. Nadal jednak są i takie ogłoszenia, gdzie ktoś wpisał prawdopodobnie wszystko, co mu się skojarzyło z tworzeniem stron: HTML, CSS, JavaScript, PHP, MySQL, Flash, Photoshop i jeszcze administracja Apachem - a czemu by nie. Wszystko koniecznie z obowiązkową adnotacją - &quot;biegła znajomość&quot;. Takie oczekiwania mają często firmy, które działają w innej branży, ale chcą mieć kogoś &quot;od internetu&quot;. Sensowną strategią jest omijanie takich ofert szerokim gestem myszki.&lt;/p&gt;
&lt;p&gt;W większości ogłoszeń nie ma wymagań co do wykształcenia informatycznego, ale od czasu do czasu zdarza się taki punkt. Oczywiście, każdy ma prawo mieć swoje oczekiwania, ale nie wydaje się, by takie wykształcenie było najważniejszą sprawą, zwłaszcza, gdy poszukiwany jest koder HTML/CSS. Ciekawe, czy Eric Meyer miałby szanse na zatrudnienie w takiej firmie.&lt;/p&gt;
&lt;p&gt;Znacznie gorzej wygląda jednak to, co firmy oferują. Tutaj panuje urodzaj słów, ale nieurodzaj konkretów.&lt;/p&gt;
&lt;p&gt;Najważniejszą atrakcją ma być praca w &quot;młodym i dynamicznym zespole&quot;. Ten punkt jest rozwijany w różnych wariantach, aczkolwiek niezbyt twórczych: &quot;praca w młodym, dynamicznym i twórczym zespole&quot;, &quot;praca w młodym, twórczym zespole&quot;, &quot;praca w młodym, dynamicznym zespole&quot;. Pierwsza oferta wygląda najatrakcyjniej - zespół jest zarówno dynamiczny, jak i twórczy. Pozostałe dwa zespoły, są albo dynamiczne, albo twórcze.&lt;/p&gt;
&lt;p&gt;Równie istotne jest uczestnictwo w bliżej nieokreślonym, ale niezwykłym projekcie: &quot;praca przy ciekawych i innowacyjnych projektach&quot;, &quot;praca w dynamicznie rozwijającym się projekcie medialnym&quot;, &quot;udział w tworzeniu ciekawego, nieprzeciętnego projektu informatycznego&quot;.&lt;/p&gt;
&lt;p&gt;Dla specjalisty ważny jest ciągły rozwój, zatem w kolejnych ogłoszeniach otrzymujemy mantrę: &quot;możliwość rozwoju zawodowego&quot;, &quot;możliwość rozwoju zawodowego&quot;, &quot;możliwość rozwoju zawodowego&quot;, czasami tylko dla wytchnienia przerwaną wpisem &quot;możliwość ciągłego uczenia się i podnoszenia swoich kompetencji&quot;.&lt;/p&gt;
&lt;p&gt;Z rozwojem zawodowym wiąże się obcowanie z najnowszymi technologiami, aczkolwiek również tutaj firmy niechętnie wyjawiają szczegóły. Zdarzają się jednak chlubne wyjątki: &quot;praca z nowoczesnymi technologiami (np. wiki, widgets, api)&quot;. Praca z wiki ostatecznie przebija konkurencję. Potencjalni pracownicy będą pchali się drzwiami, oknami i łączami internetowymi, by móc wreszcie obcować z tą technologią, której dotąd byli pozbawieni.&lt;/p&gt;
&lt;p&gt;Na koniec przyziemna sprawa, czyli wynagrodzenie. Owszem, pojawia się w ogłoszeniach i jest zwykle &quot;atrakcyjne&quot;.&lt;/p&gt;
&lt;p&gt;Właściwie najbardziej konkretną informacją na temat oferowanych warunków jest przeważnie informacja, czy praca jest stała i w jakim mieście. Czasami jest mowa o pakiecie socjalnym lub opiece medycznej.&lt;/p&gt;
&lt;p&gt;Zatem, czytając część ogłoszenia z oferowanymi warunkami, należałoby od razu na siatkówce oka odfiltrowywać te wszystkie młode, dynamiczne zespoły, ciekawe projekty i możliwości rozwoju zawodowego. I liczyć, że zostanie przynajmniej jeden konkretny punkt.&lt;/p&gt;
&lt;p&gt;Można mieć podejrzenia, że ogłoszenie o pracę jest gatunkiem literackim o dokładnie określonej budowie i forma ta ma licznych adeptów ściśle przestrzegających świętego kanonu. Precyzyjna struktura haiku to przy tym małe miki.&lt;/p&gt;
</description><pubDate>Sat, 17 May 2008 22:26:20 +0200</pubDate><guid>http://witia.jogger.pl/2008/05/17/praca-dla-webmastera/</guid><category>Ogólne</category></item></channel></rss>
