<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>OptArt - Twój sukces w sieci!</title>
	<atom:link href="http://www.optart.pl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.optart.pl</link>
	<description>Twój sukces w Sieci! Portale społecznościowe, serwisy internetowe, optymalizacja stron WWW, cięcie layoutów, kodowanie XHTML/CSS.</description>
	<lastBuildDate>Wed, 15 Feb 2012 22:54:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>WordCamp 2011</title>
		<link>http://www.optart.pl/2011/12/wordcamp-2011/</link>
		<comments>http://www.optart.pl/2011/12/wordcamp-2011/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 10:57:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Brak Kategorii]]></category>
		<category><![CDATA[Wpisy na blogu]]></category>

		<guid isPermaLink="false">http://www.optart.pl/?p=2900</guid>
		<description><![CDATA[Tradycją naszą staje się aktywna obecność na corocznych konwentach WordCamp. I w tym roku z niecierpliwością czekaliśmy na 9 dzień ostatniego miesiąca &#8230; <a href="http://www.optart.pl/2011/12/wordcamp-2011/" class="more">&#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Tradycją naszą staje się aktywna obecność na corocznych konwentach WordCamp. I w tym roku z niecierpliwością czekaliśmy na 9 dzień ostatniego miesiąca roku &#8211; pierwszy z dwóch konferencyjnych dni.</p>
<p>Spotkanie WordCamp odbyło się tym razem w Poznaniu. Późnym przedpołudniem bo już o 10.30 rozpoczęło się pierwsze wystąpienie. Na naszego prelegenta musieliśmy poczekać do 14.00 następnego dnia, ale cóż &#8211; było warto, a czas &#8220;oczekiwania&#8221; się nie dłużył.</p>
<p>Konrad Dzwinel zaprezentował się z tematem <em>Plugin czyli luka bezpieczeństwa. </em>Dla uczestników konferencji stworzyliśmy tablice dotyczące zabezpieczania WordPress&#8217;a i pluginów &#8211; zapewniamy, że mogą okazać się bardzo pomocne w codziennej pracy. Zarówno owe tablice jak i całą prezentację udostępniamy czytelnikom naszego bloga. Zapraszamy do pobrania i zapoznania się z ich treścią.</p>
<p><a title="prezentacjaWordCapm2011" href="http://www.optart.pl/wordcamp-2011 ">Prezentacja </a><a title="Tablica1" href="http://www.optart.pl/wp-content/uploads/2011/12/str1_2.pdf">Tablica1</a> <a href="http://www.optart.pl/wp-content/uploads/2011/12/str2_2.pdf">Tablica2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.optart.pl/2011/12/wordcamp-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optymalność a wydajność</title>
		<link>http://www.optart.pl/2011/11/optymalnosc-wydajnosc/</link>
		<comments>http://www.optart.pl/2011/11/optymalnosc-wydajnosc/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 10:37:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Optymalizacja]]></category>
		<category><![CDATA[Wpisy na blogu]]></category>

		<guid isPermaLink="false">http://optart.pl/?p=1166</guid>
		<description><![CDATA[Trzecia odsłona Optymalności – Wydajność; na naszym Blogu już dziś. Co to jest? Wydajność serwisów internetowych omawiana jest w kontekście badań zespołów &#8230; <a href="http://www.optart.pl/2011/11/optymalnosc-wydajnosc/" class="more">&#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Trzecia odsłona Optymalności – Wydajność; na naszym Blogu już dziś.</p>
<h2>Co to jest?</h2>
<p>Wydajność serwisów internetowych omawiana jest w kontekście badań zespołów tworzących Yahoo i Google oraz narzędzi dla webmasterów stworzonych przez te firmy: YSlow i PageSpeed. Poniżej przedstawiamy w punktach sugestie dotyczące kodu HTML i CSS, ich wpływ na wydajność i komentarz odnoszący się do Optymalności kodu w szerszym jej rozumieniu:<span id="more-1166"></span></p>
<ul>
<li>Zmniejszenie rozmiarów HTML. Zmniejszenie ilości kodu to zmniejszenie wielkości przesyłanych plików. Proponowane metody to wycinanie nieobowiązkowych tagów zamykających oraz innych nie będących niezbędnymi danych (<em>type </em>dla <em>script</em>, <em>style, meta encoding, </em>inne). Druga metoda nie niesie negatywnych konsekwencji i jest wręcz zgodna ze zmianami zachodzącymi w specyfikacji HTML. Natomiast pierwsza, prowadzi do nieczytelności kodu, utrudniając jego odczyt i modyfikację w przyszłości, w związku z czym nie jest polecana.</li>
<li>Odpowiednia konfiguracja JavaScript. Ustawienie pewnych atrybutów umożliwia modyfikację domyślnego, liniowego ładowania strony:</li>
<li>Ustawienie atrybutu <em>async </em>dla asynchronicznego ładowania skryptów;</li>
<li>Ustawienie atrybutu <em>defer </em>dla ładowania skryptów po przetworzeniu strony.</li>
<li>Dobór odpowiedniego formatu i kompresji obrazków.</li>
<li>Uniknięcie efektu ponownego obliczania pozycji i właściwości elementów (ang. <em>reflow</em>).</li>
<li>Efekt ten wynika ze stosowania efektów JavaScript, dodawania „w locie” klas i identyfikatorów, nowych elementów oraz nie definiowania rozmiarów obrazków wewnątrz dokumentu HTML.</li>
<li>Zmniejszenie wielkości plików CSS. Należy używać deklaracji jednokrotnie (grupowanie). Powinno się przy tym uważać, by nie uczynić arkusza stylów mniej czytelnym i tym samym trudniejszym w zarządzaniu. Przykładowo, lepszym zapisem będzie:</li>
</ul>
<pre><code>h1, h2 {color: #000;}</code><code> h2, h3 {font-size: 16px;} </code><code>h1 {font-size: 18px;} h3 {color: #ddd;}</code></pre>
<p>niż:</p>
<pre>h1 {color: #000; font-size: 18px;}
h2 {color: #000; font-zize: 16px;}
h3 {color: #ddd; font-size: 14px;}</pre>
<p>Jednak w bardziej rozbudowanych przypadkach może to powodować problemy w edycji. Oszczędność ilości kodu i jego lepszą czytelność można również uzyskać stosując zapisy skrócone, np.:</p>
<pre>p {
font: italic 12px / 16px Arial;
padding: 5px 0 10px;
}</pre>
<p>zamiast:</p>
<pre>p {
font-family: Arial;
font-style: italic;
font-size: 12px;
line-height: 16px;
padding-top: 5px;
padding-bottom: 10px;
}</pre>
<ul>
<li>Używanie efektywnych selektorów CSS. W implementacji Mozilli (i prawdopodobnie pozostałych przeglądarek), każda reguła czytana jest „od prawej do lewej”. Przeglądarka dla każdego kolejnego poziomu decyduje, czy reguła ma zastosowanie dla konkretnego elementu dokumentu HTML czy nie. W związku z tym im mniej zagnieżdżeń, tym szybsze dopasowanie reguł. Twórcy serwisów internetowych często poprzedzają regułę dla elementu o konkretnym ID, listą identyfikatorów elementów nadrzędnych. Jest to niepotrzebne ze względu na unikalność identyfikatorów w obrębie dokumentu HTML:</li>
</ul>
<pre>#id1 {…}
#id1 #id2 {…}
#id1 #id3 {…}
#id1 #id3 #id4 {…}</pre>
<p>Równie częste i równie niepotrzebne jest odnoszenie się przed identyfikatorem do typu elementu:</p>
<pre>ul#nav_top {…}
div#header {...}</pre>
<p>Rzadziej spotykane w kodzie CSS nieefektywne selektory, to odwołania do elementów uniwersalnych, nie zawężające w żaden sposób pola wyszukiwania:</p>
<pre>* ul {…}
body div {…}
html form {…}</pre>
<p>Zalecenia Google w tej kwestii posuwają się do używania klas nawet tam, gdzie nie jest to konieczne, jeśli tylko można uczynić selektory CSS bardziej szczegółowymi. Jednak w ten sposób wprowadza się nadmiar w kodzie HTML, w związku z czym nie jest to polecana przez autora pracy technika.</p>
<ul>
<li>Dodawanie CSS w sekcji <em>head </em>dokumentu HTML. Wyświetlanie strony wstrzymywane jest do załadowania przez przeglądarkę wszystkich arkuszy stylów. W związku z tym umieszczanie stylów w treści dokumentu powoduje efekt „białego ekranu”.</li>
<li>Zmniejszenie liczby zapytań HTTP. RTT (ang. <em>Round-trip time</em>) to czas, jaki zajmuje klientowi wysłanie zapytania o dany element i serwerowi wysłanie odpowiedzi. Twórca serwisów internetowych nie ma wpływu na czas pojedynczego RTT, natomiast zmniejszając liczbę pobieranych elementów może wpłynąć na liczbę zapytań.</li>
</ul>
<p>Jest to do osiągnięcia przez:</p>
<ul>
<li>zmniejszanie liczby pobieranych obrazków (technika <em>CSS Sprites – </em>łączenie wielu obrazków tła w jeden, mapy obrazków);</li>
<li>zmniejszanie liczby pobieranych arkuszy stylów (łączenie wielu plików tworzonych w procesie kodowania strony w jeden);</li>
<li>zmniejszanie liczby pobieranych skryptów JavaScript.</li>
</ul>
<h2>Rozwiązania sytuacji sprzecznych zaleceń</h2>
<p>Przedstawione we wcześniejszych wpisach zalecenia, w wielu wypadkach były wspólne dla kilku aspektów optymalności kodu. Zazwyczaj dbając nawet tylko o jeden z aspektów szeroko pojętej optymalności, podnoszona jest problematyka innych obszarów dotyczących jakości kodu. W toku tworzenia serwisów internetowych zdarzają się jednak sytuacje, gdy wytyczne są ze sobą sprzeczne. Przykładem takiej sytuacji może być chociażby zagadnienie wydajności i użyteczności kodu CSS. Najwydajniejsze rozwiązanie to przypisanie każdemu z elementów, osobnego identyfikatora. Jednak użyteczność takiego kodu jest co najmniej dyskusyjna.</p>
<p>Wydaje się, że dobrym rozwiązaniem sytuacji sprzecznych zaleceń może być zastosowanie kaskady na wzór rozwiązania znanego z CSS. Pierwszeństwo powinny mieć tu zalecenia dostępności. Nadrzędnym celem tworzenia serwisów internetowych jest wszakże przekaz informacji, a więc kluczowe znaczenie ma możliwość łatwego dostępu do nich. Kolejnym istotnym elementem jest użyteczność. Zalecenia z tej grupy zagadnień sprawiają, że użytkowanie serwisu jest wygodne.</p>
<p>Następnym elementem jest SEO, czyli zagadnienia warunkujące łatwość odnalezienia serwisu poprzez wyszukiwarki internetowe. Wydajność została wymieniona jako ostatni element ze względu na tempo wzrostu mocy obliczeniowych tak komputerów stacjonarnych, jak i urządzeń mobilnych oraz na równie szybki wzrost szerokości pasma internetowego dla użytkownika końcowego.</p>
<p style="text-align: center;"><a href="http://optart.pl/wp-content/uploads/2011/05/Clipboard10.jpg"><img class="aligncenter size-full wp-image-2230 colorbox-1166" title="Clipboard10" src="http://optart.pl/wp-content/uploads/2011/05/Clipboard10.jpg" alt="" width="456" height="303" /></a></p>
<p style="text-align: center;">Rysunek: Procent łączy szerokopasmowych w Polsce</p>
<p>Należy mieć na uwadze, że w specyficznych sytuacjach przedstawiona powyżej hierarchia może nie być najodpowiedniejsza. Dla przykładu, serwisy dedykowane dla urządzeń mobilnych za kluczowe mogą uznać aspekty wydajności.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.optart.pl/2011/11/optymalnosc-wydajnosc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optymalność a SEO</title>
		<link>http://www.optart.pl/2011/08/optymalnosc-seo/</link>
		<comments>http://www.optart.pl/2011/08/optymalnosc-seo/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 07:44:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Wpisy na blogu]]></category>

		<guid isPermaLink="false">http://optart.pl/?p=1170</guid>
		<description><![CDATA[Kolejna odsłona optymalności to SEO. Dziś powiemy kilka słów na ten temat. Co to jest? SEO (ang. Search Engine Optimisation) to powszechnie &#8230; <a href="http://www.optart.pl/2011/08/optymalnosc-seo/" class="more">&#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Kolejna odsłona optymalności to SEO. Dziś powiemy kilka słów na ten temat.</p>
<h2>Co to jest?</h2>
<p>SEO (ang. <em>Search Engine Optimisation</em>) to powszechnie przyjęta nazwa procesu optymalizacji serwisów internetowych pod kątem wyszukiwarek. Jest to jedna z części bardziej ogólnie pojmowanego pozycjonowania. Uwzględnia również działania poza samą stroną internetową, takie jak pozyskiwanie odnośników do serwisu czy tworzenie zaplecza (czyli powiązanych tematycznie stron posiadających odnośniki do strony pozycjonowanej).<span id="more-1170"></span></p>
<p>Algorytmy tworzenia rankingów stron internetowych, w tym algorytmu najpopularniejszej wyszukiwarki, Google, są tajne. Dlatego działania związane z SEO opierają się na wytycznych dla twórców stron internetowych publikowanych na stronach wyszukiwarek oraz na wynikach przeprowadzanych przez pozycjonerów testów. Wyniki tych ostatnich ulegają jednak z czasem zmianom ze względu na ciągły rozwój algorytmów oceny stron.</p>
<h2>Główne techniki SEO</h2>
<p>Techniki wykorzystywane w optymalizacji stron pod kątem wyszukiwarek omówimy na podstawie ogólnie znanych zaleceń oraz wytycznych stworzonych przez firmę Gogle dla webmasterów. W związku z tym, zawarty jest w nich od razu stosunek twórców wyszukiwarek do poszczególnych technik. Należy zauważyć, że nie ma dowodów na to, że nieprzestrzeganie niektórych z wytycznych wpływa negatywnie na pozycję strony. Nie można jednak założyć, że nie będzie miało takiego wpływu w przyszłości.</p>
<p>Ogólnie znane zalecenia:</p>
<ul>
<li>Treść na stronie powinna być unikalna i wartościowa dla potencjalnego użytkownika, powinna też posiadać odpowiednią gęstość słów kluczowych (około 5%).</li>
<li>Każda strona w sekcji meta powinna mieć określone unikalne i odpowiadające treści strony, elementy <em>title </em>(tytuł strony), <em>keywords </em>(słowa kluczowe), <em>description </em>(opis).</li>
<li>Żadna treść na stronie nie powinna być dostępna jedynie dla przeglądarek obsługujących JavaScript i Iframe. Techniki te nie są zaimplementowane w robotach wyszukiwarek.</li>
</ul>
<p>Poniżej przedstawiamy zasady określone na stronie Google wraz z komentarzem:</p>
<ul>
<li>Należy unikać ukrytego tekstu i ukrytych linków. Częstą praktyką SEO jest dodawanie tekstów ukrytych dla użytkownika poprzez style CSS. Są one jednak widoczne w kodzie strony oraz dla przeglądarek tekstowych. Ma to na celu zwiększenie gęstości słów kluczowych na stronie oraz stosunku objętości kodu do właściwej treści serwisu. Według pozycjonerów ma wpływ na ocenę strony. Techniki te jednak są stosunkowo łatwe do wykrycia i mogą szybko spowodować zablokowanie strony.</li>
<li>Nie powinno się stosować technik takich jak maskowanie (ang. cloaking) lub podstępne przekierowania. Techniki takie wprowadzają użytkownika w błąd, są też wykorzystywane do wyłudzania haseł do kont bankowych czy stron internetowych. Wykrycie takich działań powoduje wpisanie strony do listy niebezpiecznych stron i wyświetlanie przed wejściem na stronę odpowiedniego komunikatu informującego użytkownika o zagrożeniu.</li>
</ul>
<p style="text-align: center;"><a href="http://optart.pl/wp-content/uploads/2011/05/Clipboard09.jpg"><img class="aligncenter size-full wp-image-2225 colorbox-1170" title="Clipboard09" src="http://optart.pl/wp-content/uploads/2011/05/Clipboard09.jpg" alt="" width="412" height="166" /></a></p>
<p style="text-align: center;">Rysunek: Powiadomienie o zagrożeniu przed wejściem na podejrzaną stronę w przeglądarce Chrome, źródło: http://www.webdevelopersnotes.com/</p>
<ul>
<li>Nie należy wysyłać do Google automatycznych zapytań. Pozycjonerzy często tworzą oprogramowanie automatycznie odpytujące Google o wyniki dla danego hasła. Pozwala to na zautomatyzowanie procesu śledzenia pozycji strony. Zbyt wiele zapytań z jednego adresu w określonym czasie powoduje jednak czasową blokadę możliwości dalszego ich wysyłania z tego adresu.</li>
<li>Nie powinno się zamieszczać na stronach słów kluczowych niezwiązanych z treścią. Pozycjonerzy często wypełniają stronę jak największą liczbą słów kluczowych. Bywa, że część z nich jest niezwiązana z treścią strony. Może to powodować trafienie na stronę osób nie zainteresowanych jej tematyką, co wpływa niekorzystnie na jakość wyników wyszukiwania.</li>
<li>Nie należy tworzyć wielu stron, poddomen ani domen powielających tę samą treść. Zalecenie to odnosi się do rozpowszechniającego się obecnie problemu powielania w Internecie tych samych treści. Pomijając kwestie prawne, takie działania sprawiają że wyszukując niektórych hasła, ciężko dotrzeć do wartościowych informacji, nie będących kopią innych stron. Z punktu widzenia pozycjonerów jest to z kolei łatwy sposób na szybkie stworzenie wielu stron posiadających odnośniki do strony pozycjonowanej.</li>
<li>Nie należy tworzyć stron, które działają destrukcyjnie, np. wyłudzają dane, instalują wirusy, konie trojańskie i inne szkodliwe oprogramowanie. Strony tego typu często wykorzystują literówki we wpisywanych przez użytkowników nazwach domen lub ukryte przekierowania opisane w jednym z wcześniejszych punktów.</li>
<li>Powinno się unikać stron przejściowych (ang. doorway), tworzonych wyłącznie dla wyszukiwarek oraz wszelkich programów stowarzyszeniowych generujących jedynie pliki <em>cookie</em>, a nie oryginalną treść. Jedną z technik pozycjonerskich jest tworzenie dwóch wersji strony, z których jedna jest wyświetlana dla użytkowników, druga dla robotów rozróżnianych np. po adresie IP. Powoduje to również fałszowanie wyników wyszukiwania i jest obecnie wykrywane przez wyszukiwarkę Google.</li>
<li>Jeśli witryna uczestniczy w programie stowarzyszeniowym, musi zawierać również przydatne treści. Należy dawać użytkownikom dobry powód do odwiedzenia danej witryny: unikatową i użyteczną treść</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.optart.pl/2011/08/optymalnosc-seo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Optymalność serwisów w językach HTML 5 i CSS 3: CSS 3</title>
		<link>http://www.optart.pl/2011/08/optymalnosc-serwisow-w-jezykach-html-5-i-css-3-css-3/</link>
		<comments>http://www.optart.pl/2011/08/optymalnosc-serwisow-w-jezykach-html-5-i-css-3-css-3/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 15:21:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Wpisy na blogu]]></category>

		<guid isPermaLink="false">http://optart.pl/?p=2197</guid>
		<description><![CDATA[Dzisiejszy wpis to kontynuacja tego, o czym pisaliśmy tydzień temu. Wtedy omawialiśmy optymalność w kontekście HTML 5, dziś zajmiemy się stylowaniem, czyli &#8230; <a href="http://www.optart.pl/2011/08/optymalnosc-serwisow-w-jezykach-html-5-i-css-3-css-3/" class="more">&#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Dzisiejszy wpis to kontynuacja tego, o czym pisaliśmy tydzień temu. Wtedy omawialiśmy optymalność w kontekście HTML 5, dziś zajmiemy się stylowaniem, czyli CSS 3.</p>
<h2>CSS 3</h2>
<p>W CSS 3 w wielu miejscach wprowadzono zmiany upraszczające tworzenie kodu stron internetowych. Jakie? CSS 3 przede wszystkim umożliwia generowania elementów warstwy prezentacji bezpośrednio przez atrybuty i właściwości a nie, jak do tej pory, statyczne obrazki. Zmiany i ich wpływ na sposób kodowania typowych elementów stron internetowych omawiamy poniżej:<span id="more-2197"></span></p>
<h3>Obramowania<em></em></h3>
<ul>
<li><em>border-colors</em> – tworzenie gradientów z obramowań</li>
<li><em>border-image</em> – tworzenie obramowań z obrazków</li>
</ul>
<pre>div {border-image: url(border.png) 10 10 10 10 round round;}</pre>
<ul>
<li><em>border-radius</em> – jedna z najciekawszych z wymienionych właściwości. Pozwala na zaokrąglanie elementów HTML. Zaokrąglenia są często stosowanie w projektach graficznych i do tej pory powodowały konieczność tworzenia wielu nadmiarowych grafik i elementów do przeniesienia na kod HTML/CSS.</li>
</ul>
<pre>#border-radius {
 border-radius: 15px;
 background:#ccc;
 padding:10px;
 width:400px;
 }</pre>
<p><a href="http://optart.pl/wp-content/uploads/2011/04/Clipboard01.jpg"><img class="aligncenter size-full wp-image-2198 colorbox-2197" title="Clipboard01" src="http://optart.pl/wp-content/uploads/2011/04/Clipboard01.jpg" alt="" width="448" height="66" /></a></p>
<p style="text-align: center;">Ilustracja 6: Przykład właściwości border-radius</p>
<p>Jedno z krótszych znalezionych w sieci rozwiązań problemu zaokrąglonych rogów ma następującą obszerność:</p>
<p>HTML:</p>
<pre>&lt;div class="sidebox"&gt;
 &lt;div class="boxhead"&gt;&lt;h2&gt;Test Headline&lt;/h2&gt;&lt;/div&gt;
 &lt;div class="boxbody"&gt;
 &lt;p&gt;This is a short sample paragraph.&lt;/p&gt;
 &lt;p&gt;And another one.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;</pre>
<p>CSS:</p>
<pre>.sidebox {
 margin: 0 auto; /* center for now */
 width: 17em; /* ems so it will grow */
 background: url(sbbody-r.gif) no-repeat bottom right;
 font-size: 100%;
 }
 .boxhead {
 background: url(sbhead-r.gif) no-repeat top right;
 margin: 0;
 padding: 0;
 text-align: center;
 }
 .boxhead h2 {
 background: url(sbhead-l.gif) no-repeat top left;
 margin: 0;
 padding: 22px 30px 5px;
 color: white;
 font-weight: bold;
 font-size: 1.2em;
 line-height: 1em;
 }
 boxbody {
 background: url(sbbody-l.gif) no-repeat bottom left;
 margin: 0;
 padding: 5px 30px 31px;
 }</pre>
<ul>
<li><em>box-shadow</em> – równie ciekawa właściwość pozwalająca na tworzenie cieni naokoło elementów HTML. Implementacja w poprzednich wersjach CSS wymagała wielu nadmiarowych elementów blokowych z wygenerowanymi w programie graficznym obrazkami.</li>
</ul>
<pre>#box-shadow {
 -webkit-box-shadow: 10px -10px 5px #888;
 margin-top: 10px;
 padding: 5px 5px 5px 15px;
 overflow:hidden;
 background:#ccc;
 width:400px;
 }</pre>
<p><a href="http://optart.pl/wp-content/uploads/2011/04/Clipboard02.jpg"><img class="aligncenter size-full wp-image-2199 colorbox-2197" title="Clipboard02" src="http://optart.pl/wp-content/uploads/2011/04/Clipboard02.jpg" alt="" width="465" height="63" /></a></p>
<p style="text-align: center;">Ilustracja 7: Przykład właściwości box-shadow</p>
<h3>Tła</h3>
<ul>
<li>wielokrotne tła – możliwość, która pozwoli uniknąć tworzenia nadmiarowych elementów blokowych tylko po to, by nadać określonemu fragmentowi strony kilka teł.</li>
</ul>
<pre>#element {
 background:
 url(body-top.gif) top left no-repeat,
 url(body-bottom.gif) bottom left no-repeat,
 url(body-middle.gif) left repeat-y;
 }</pre>
<ul>
<li><em>background-size</em> –  daje możliwość ustawienia rozmiaru obrazka tła. Właściwość interesująca przy ustawieniu wielkości obrazka tła w procentach, na przykład jako zajmującego zawsze 50% wysokości boksu.</li>
<li><em>background-clip, background-origin</em> –  pozwalają zmienić sposób wyliczania pozycji tła (<em>background-position</em>)</li>
<li>gradienty – CSS 3 pozwala na stworzenie teł zawierających płynne przejście od jednego do drugiego koloru. Możliwość taka to ułatwienie ewentualnej modyfikacji kolorystyki w przyszłości. Zachodzi również przyspieszenie ładowania serwisu poprzez redukcję jednego zapytania HTTP. Kosztem jest tu większe obciążenie przeglądarki klienta. W poprzednich wersjach CSS konieczne było (w wypadku graficznych butonów) albo stosowanie stałej szerokości, nieskalującej się do zmiennej ilości tekstu wewnątrz, albo stosowanie technik takich jak <em>Sliding Doors</em>, wymuszających użycie dodatkowego elementu okalającego tekst i rozbicie grafiki tła na 2 części.</li>
</ul>
<h3>Kolory</h3>
<p>W CSS3 wprowadzono nowe możliwości definiowania kolorów. Poza dotychczas dopuszczalnymi predefiniowanymi nazwami (color:white), wartościami heksadecymalnymi (color:#fff), wartościami w formacie RGB (color:rgb(255,255,255)), dodano możliwość definiowania kolorów w formacie HSL oraz określenia stopnia przeźroczystości:</p>
<ul>
<li><em>HSL</em> (ang. hue, saturation, lightness – barwa, nasycenie, średnie światło białe) to bardziej intuicyjny model odwzorowania kolorów: manipulując poszczególnymi wartościami kolor finalny zmienia się zgodnie z oczekiwaniami, na co nie można liczyć w wypadku formatu RGB.</li>
<li><em>HSLA</em> to ten sam format z dodaną czwartą wartością: kanałem alfa (ang. alpha channel) definiującym stopień przeźroczystości.</li>
<li><em>RGBA</em> to rozwinięcie o kanał alfa standardu RGB</li>
<li><em>opacity</em> – możliwość określenia kanału alfa niezależnie od kolorów.</li>
</ul>
<p style="text-align: center;"><a href="http://optart.pl/wp-content/uploads/2011/04/Clipboard03.jpg"><img class="aligncenter size-full wp-image-2200 colorbox-2197" title="Clipboard03" src="http://optart.pl/wp-content/uploads/2011/04/Clipboard03.jpg" alt="" width="399" height="149" /></a></p>
<p style="text-align: center;">Ilustracja 8: Paleta kolorów uzyskana w różnych paletach</p>
<pre>&lt;div style="background:rgb(255, 0, 0); opacity:0.2;"&gt;&lt;/div&gt;
 &lt;div style="background:rgba(255, 0, 0, 0.2);"&gt;&lt;/div&gt;
 &lt;div style="background-color:hsla(0,100%,50%,0.2);"&gt;&lt;/div&gt;
 &lt;div style="background:rgb(243, 191, 189); "&gt;&lt;/div&gt;</pre>
<h3>Efekty tekstowe</h3>
<ul>
<li><em>text-shadow</em> – tworzy cień wokół tekstu. Zaproponowany już w specyfikacji CSS2, jednak dopiero obecnie powszechnie interpretowany przez przeglądarki.</li>
</ul>
<p><a href="http://optart.pl/wp-content/uploads/2011/04/Clipboard04.jpg"><img class="aligncenter size-full wp-image-2201 colorbox-2197" title="Clipboard04" src="http://optart.pl/wp-content/uploads/2011/04/Clipboard04.jpg" alt="" width="189" height="59" /></a></p>
<p style="text-align: center;">Ilustracja 9: Przykład zastosowania text-shadow</p>
<pre>#shadow {text-shadow: 1px 1px 1px #CCC;}</pre>
<ul>
<li><em>word-wrap</em> – pozwala na łamanie długich wyrazów, nie mieszczących się w otaczającym je elemencie.</li>
</ul>
<p><a href="http://optart.pl/wp-content/uploads/2011/04/Clipboard05.jpg"><img class="aligncenter size-full wp-image-2202 colorbox-2197" title="Clipboard05" src="http://optart.pl/wp-content/uploads/2011/04/Clipboard05.jpg" alt="" width="221" height="55" /></a></p>
<p style="text-align: center;">Ilustracja 10: Wykorzystanie word-wrap</p>
<pre>#word-wrap {word-wrap: break-word;}</pre>
<h3>Interfejs użytkownika</h3>
<ul>
<li><em>box-sizing</em> – zmienia sposób obliczania wielkości elementów blokowych (box model), zamiast domyślnego traktowania obramowania jako części zewnętrznej elementu, jest on wliczany do wnętrza.</li>
<li><em>resize</em> – definiuje możliwość zmieniania rozmiarów danego elementu przez użytkownika. Właściwość często wykorzystywana przy tworzeniu pól tekstowych formularzy.</li>
</ul>
<h3>Selektory</h3>
<p>W wersji trzeciej CSS wprowadzono odrębny moduł odpowiadający za selektory.  Moduł jest obecnie w fazie „propozycji do rekomendacji”. Nowe selektory umożliwiają łatwiejsze dotarcie do elementów wymagających ostylowania, bez tworzenia zbędnych klas czy nadmiarowego kodu wynikającego z obejmowania przez selektor również niepożądanych elementów. Należy zauważyć, że nowe selektory wprowadzane są do przeglądarek niemal równocześnie z selektorami dodanymi już do specyfikacji CSS 2, a które niestety wcześniej nie doczekały się implementacji. Przy korzystaniu z nowych selektorów należy mieć na względzie ich wolniejszą interpretację w obecnych wersjach przeglądarek, wobec selektorów klas i identyfikatorów.</p>
<p><em>E[foo^="bar"] </em>– element, którego wartość atrybutu <em>foo</em> rozpoczyna się dokładnie ciągiem znaków <em>bar</em></p>
<ul>
<li><em>E[foo$="bar"]</em> – element, którego wartość atrybutu <em>foo</em> kończy się dokładnie ciągiem znaków <em>bar</em></li>
<li><em>E[foo*="bar"]</em> – element, którego wartość atrybutu <em>foo</em> zawiera ciąg znaków <em>bar</em></li>
<li><em>E:root-</em> element, który jest drzewem dokumentu dla elementu E (w HTML 4 element <em>html</em>)</li>
<li><em>E:nth-child(n)</em> – n-ty element podrzędny elementu nadrzędnego do E</li>
<li><em>E:nth-last-child(n)</em> – jak wyżej, licząc od ostatniego elementu</li>
<li><em>E:nth-of-type(n)</em> – n-ty element podrzędny elementu nadrzędnego do E danego typu</li>
<li><em>E:nth-last-of-type(n)</em> – jak wyżej, licząc od ostatniego elementu</li>
<li><em>E:first-child, E:last-child</em> – pierwszy i ostatni element podrzędny elementu nadrzędnego do E, <em>E:first-child</em> to odpowiednik <em>E:nth-child</em>(1)</li>
<li><em>E:first-of-type, E:last-of-type</em> – pierwszy i ostatni element podrzędny elementu nadrzędnego do E danego typu</li>
<li><em>E:only-child</em> – element nie mający rodzeństwa</li>
<li><em>E:only-of-type</em> – element nie mający rodzeństwa danego typu</li>
<li><em>E:empty</em> – odpowiada pustym elementom zawierającym treść dokumentu, np.: <em>&lt;p&gt;&lt;/p&gt;</em></li>
<li><em>E:target</em> – pozwala na ostylowanie elementu, do którego prowadzi odnośnik w postaci <em>http://adres#identyfikator</em></li>
<li><em>E:enabled, E:disabled</em> – odnoszą się do aktywnych i nieaktywnych elementów interfejsu użytkownika</li>
<li><em>E:checked</em> – odnosi się do zaznaczonych elementów interfejsu, na przykład elementów <em>input</em> typu <em>radio</em> lub <em>checkbox</em></li>
<li><em>E:not(s)</em> – pozwala na wybór elementów nie spełniających kolejnego selektora, na przykład <em>button:not([DISABLED])</em></li>
</ul>
<p>Przykładowe zastosowania nowych selektorów:</p>
<ul>
<li>zmiana tła dla co drugiego wiersza tabeli:</li>
</ul>
<pre>li:nth-child(odd)  {background:#ccc;}</pre>
<ul>
<li>specyficzny styl dla pierwszego lub ostatniego elementu listy (tło, obramowanie, czy marginesy):</li>
</ul>
<pre>li:first-child {border:none;}</pre>
<h3>Inne moduły</h3>
<ul>
<li>Układ wielokolumnowy – stanowi odrębny moduł nowej specyfikacji CSS. Umożliwia zdefiniowanie kolumn tekstu albo poprzez określenie ich liczby (<em>column-count</em>), albo ich szerokości (<em>column-width</em>). Możliwe jest również zdefiniowanie szerokości przerwy między kolumnami poprzez właściwość <em>column-gap</em>.</li>
<li><em>font-face</em> – umożliwia korzystanie w realizacjach z niestandardowych czcionek. Pozwala na ich zadeklarowanie z wskazaniem miejsca, skąd mogą zostać pobrane, a następnie na korzystanie z wcześniej zadeklarowanych nazw:</li>
</ul>
<pre>@font-face { font-family: NazwaCzcionki; src: url('AdresCzcionki.otf'); }
 h1 {font-family: NazwaCzcionki}</pre>
<p>Problemem w implementacji font-face stanowią licencje na czcionki, często ograniczające tego typu użycie oraz brak ustalonego standardowego formatu czcionek. Niemniej jednak możliwość użycia @font-face znacznie upraszcza proces dodawania nagłówków i innych treści zaprojektowanych z użyciem nietypowej czcionki. Dotychczasowe rozwiązania to generowanie dla każdego tekstu statycznych obrazków, co ma oczywiste wady, albo korzystanie z bibliotek JavaScript (Cufon, Typeface.JS,inne), co z kolei dawało czasami zaskakujące efekty ze względu na brak poprawnej interpretacji CSS i pojawiające się konflikty z innymi skryptami JavaScript.</p>
<ul>
<li><em>calc </em>– niestety jeszcze nie wprowadzony w żadnej przeglądarce, zapowiadający jednak dużą zmianę w sposobie tworzenia kodu CSS, moduł nowej specyfikacji. Pozwala na dynamiczne obliczanie wartości np. szerokości czy wysokości boksu.</li>
</ul>
<p>Przykład sytuacji, gdzie w tej chwili konieczne były sztuczne obejścia problemu lub konieczność ustawienia stałych wymiarów:</p>
<pre>#wrapper {width:1000px;}
 div {padding:20px; width:50%;}</pre>
<p>W tym wypadku szerokość zamierzona to 500px, będzie jednak po dodaniu odstępu poziomego wynosić 540px;. W przyszłości będzie można uzyskać efekt ten następującym kodem:</p>
<pre>div {width:calc(50% - 40px);</pre>
<h3>SEO a CSS 3</h3>
<p>CSS 3 wprowadza usprawnienia pozwalające twórcy serwisu internetowego na redukcję ilości kodu HTML. Dzięki nowym elementom i ich właściwościom możliwe jest łatwe tworzenie zaokrąglonych rogów, cieni, gradientów, przezroczystości i wielu innych elementów warstwy prezentacji, których jedynym możliwym do tej pory odwzorowaniem były obrazki umieszczane jako tła nadmiarowych elementów <em>div</em>.</p>
<h3>Wydajność w kontekście CSS 3</h3>
<p>Omawiane wcześniej zagadnienia wydajności selektorów CSS odnoszą się również do nowych selektorów zaproponowanych w odrębnym module specyfikacji CSS 3. Badania dowiodły, że są one wolniejsze niż wybór elementów po identyfikatorze lub klasie. Wydaje się jednak, że zysk w postaci lepszego, łatwiej zarządzalnego kodu jest tu wart ewentualnych kosztów w wydajności strony. Należy zauważyć, że problem wydajności selektorów stoi już od dawna przed twórcami frameworków techniki AJAX.  Z każdą nową wersją najpopularniejszych frameworków da się zauważyć większą wydajność stosowanych rozwiązań. Podobnego kierunku należy się spodziewać w wypadku przeglądarek.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.optart.pl/2011/08/optymalnosc-serwisow-w-jezykach-html-5-i-css-3-css-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uważam Rze</title>
		<link>http://www.optart.pl/2011/06/uwazam-rze/</link>
		<comments>http://www.optart.pl/2011/06/uwazam-rze/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 19:43:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Referencje]]></category>

		<guid isPermaLink="false">http://optart.pl/?p=2500</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.optart.pl/2011/06/uwazam-rze/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optymalność serwisów w językach HTML 5 i CSS 3: HTML 5</title>
		<link>http://www.optart.pl/2011/06/optymalnosc-serwisow-w-jezykach-html-5-i-css-3-html-5/</link>
		<comments>http://www.optart.pl/2011/06/optymalnosc-serwisow-w-jezykach-html-5-i-css-3-html-5/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 08:47:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Wpisy na blogu]]></category>

		<guid isPermaLink="false">http://optart.pl/?p=2187</guid>
		<description><![CDATA[Mając już rozeznanie na temat optymalności i dostępności pora zająć się szczegółowo tymi zagadnieniami w kontekście języków HTML5 oraz CSS3. Zacznijmy od &#8230; <a href="http://www.optart.pl/2011/06/optymalnosc-serwisow-w-jezykach-html-5-i-css-3-html-5/" class="more">&#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Mając już rozeznanie na temat optymalności i dostępności pora zająć się szczegółowo tymi zagadnieniami w kontekście języków HTML5 oraz CSS3. Zacznijmy od HTML5.</p>
<h2>HTML 5</h2>
<p>W języku HTML 5 uproszczono wiele fragmentów kodu, umożliwiając ich łatwiejsze tworzenie oraz czyniąc kod bardziej optymalnym w świetle przyjętej definicji optymalności. Poniżej przedstawiamy najistotniejsze zmiany:</p>
<ul>
<li>Deklaracja typu dokumentu.</li>
</ul>
<p>Przykładowa deklaracja dla XHTML 1.0 w wersji strict:</p>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</pre>
<p><span id="more-2187"></span>Dla HTML 5 wystarcza natomiast:</p>
<pre>&lt;!DOCTYPE html&gt;</pre>
<ul>
<li>Drzewo dokumentu.</li>
</ul>
<p>Typowa deklaracja dla strony w języku XHTML:</p>
<pre>&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="pl" &gt;</pre>
<p>Obecnie wystarczająca forma to:</p>
<pre>&lt;html lang="pl"&gt;</pre>
<ul>
<li>Deklaracja kodowania.</li>
</ul>
<p>Dotychczas używana deklaracja kodowania:</p>
<pre>&lt;meta http-equiv="Content-Type" content="text/html;
charset=utf-8"&gt;</pre>
<p>Ponieważ typ text/html jest traktowany przez wiodące przeglądarki jako domyślny, stał się nieobowiązkowy. Skrócona wersja ma następującą postać:</p>
<pre>&lt;meta charset="utf-8" /&gt;</pre>
<ul>
<li>Analogiczna sytuacja ma miejsce w wypadku typów innych podstawowych dołączanych plików – skryptów JavaScript i arkuszy CSS:</li>
</ul>
<pre>&lt;link rel="stylesheet" href="style.css" type="text/css" /&gt;
&lt;script src="scripts.js" type="text/javascript" /&gt;</pre>
<h2>Użyteczność w świetle zmian w języku HTML</h2>
<p>Jak widać na podanych przykładach, język HTML 5 umożliwia bardziej szczegółowe określenie struktury dokumentu. Dlatego może być wykorzystywany przez twórców przeglądarek niegraficznych do stworzenia dodatkowej nawigacji między elementami stron. W wypadku powszechnego przyjęcia się takiego rozwiązania, dodatkową nawigację definiowaną wewnątrz dokumentu trzeba będzie uznać za nadmiarową. Również nowe elementy formularzy pozwalające na zdefiniowanie, jaki konkretnie typ danych ma zawierać formularz, dają szerokie pole do popisu dla twórców przeglądarek – zarówno gdy chodzi o sposób prezentacji wprowadzonych danych, jak i w kontekście samego ich wprowadzania.</p>
<h2>SEO I HTML 5</h2>
<p>Nic nie świadczy o tym, by obecnie nowe elementy wprowadzone w HTML 5 były wyróżniane przez algorytmy indeksacji stron. W związku z tym wszelkie rozważania na temat ich znaczenia dla SEO mają charakter spekulacji. Można jednak przypuszczać, że wraz z upowszechnieniem się stosowania HTML 5 przez twórców stron, Google i inne wyszukiwarki wykorzystają dodatkowe możliwości analizy treści strony, jakie dają nowe elementy języka HTML 5. Obecnie dzieje się już tak z niektórymi mikroformatami. Można założyć, że wraz z wykorzystaniem nowych elementów określających strukturę strony, wprowadzony zostanie system wag zmniejszający (dla wyszukiwarek) wartość odnośników. Mowa tu o odnośnikach zawartych na przykład wewnątrz elementu &lt;footer&gt;. Z drugiej strony system taki jednocześnie zwiększałby wartość odnośników bezpośrednio związanych z tematyką strony, to jest zawartych wewnątrz &lt;article&gt;. Rodzi to z kolei obawy o sztuczne zmienianie w kodzie pozycji określonych odnośników dla celów SEO. Dlatego warto się nad tym zastanowić, bo nie da się ukryć, że może to prowadzić do tworzenia kodu nieoptymalnego względem pozostałych rozważanych kryteriów.</p>
<p>Korzyścią dla stron wielotematycznych ma być wprowadzenie elementów <em>section</em> i <em>article</em>, umożliwiających wyodrębnienie na stronie obszarów skupiających zagadnienia z jednej tematyki.  Miałoby to ułatwić pozycjonowanie tego typu stron. Również element <em>dialog</em> miał przyczynić się do łatwiejszego odnajdywania tego typu treści (został jednak usunięty z obecnej wersji specyfikacji i poddany dalszej dyskusji na temat zasadności).</p>
<p>Wyraźnym problemem pojawiającym się podczas stosowania w bieżącej sytuacji HTML 5 jest nowa struktura nagłówków, tj. numeracja od &lt;h1&gt; dla każdego nowego elementu &lt;section&gt;. W związku z tą zmianą tekst, który w HTML 4 byłby zawarty wewnątrz &lt;h2&gt;, znajdzie się w środku elementu &lt;h1&gt;. Google nie zajęło do tej pory oficjalnego stanowiska wobec HTML 5, nie jest zatem wiadome, czy algorytm Google jest już w stanie poprawnie zinterpretować i odróżnić kod w HTML5 od kodu w HTML 4.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.optart.pl/2011/06/optymalnosc-serwisow-w-jezykach-html-5-i-css-3-html-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uwagi na temat dostępności</title>
		<link>http://www.optart.pl/2011/05/uwagi-na-temat-dostepnosci/</link>
		<comments>http://www.optart.pl/2011/05/uwagi-na-temat-dostepnosci/#comments</comments>
		<pubDate>Wed, 18 May 2011 12:34:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Wpisy na blogu]]></category>

		<guid isPermaLink="false">http://optart.pl/?p=1163</guid>
		<description><![CDATA[W poprzednim wpisie informowaliśmy Was o kryteriach dostępności rekomendowanych we WCAG. Poniżej przedstawiamy wybrane uwagi na temat dostępności, wynikające z powyższych kryteriów &#8230; <a href="http://www.optart.pl/2011/05/uwagi-na-temat-dostepnosci/" class="more">&#62;</a>]]></description>
			<content:encoded><![CDATA[<p>W poprzednim wpisie informowaliśmy Was o kryteriach dostępności rekomendowanych we WCAG. Poniżej przedstawiamy wybrane uwagi na temat dostępności, wynikające z powyższych kryteriów i bezpośrednio związane z optymalnością kodu:</p>
<ol>
<li>Definiowanie głównej treści na początku kodu strony. Treść stron internetowych jest czytana przez roboty wyszukiwarek i przeglądarki tekstowe w takiej kolejności, w jakiej występuje w kodzie. Jeśli strona zawiera na przykład menu boczne, to niezależnie od jego pozycji w układzie graficznym, powinno się ono znajdować w kodzie poniżej treści głównej. Ma to również znaczenie dla SEO. Praktyka wskazuje, że algorytm wyszukiwania Google nadaje większe znaczenie fragmentom kodu znalezionym bliżej początku strony.</li>
<li>Możliwość pomijania sekcji strony. Dobrą praktyką, niezależnie od osiągniętego w punkcie 1 rezultatu, jest umieszczanie na początku sekcji <em>body </em>linków do poszczególnych elementów strony. Pozwala to na przeniesienie się od razu do interesującego użytkownika fragmentu strony.<span id="more-1163"></span></li>
<li>Używanie odnośników nie korzystających z JavaScript. Niedostępnymi i nieoptymalnymi w kontekście SEO są odnośniki w postaci „javascript:” – pseudo-linki, które wykonują fragment kodu JavaScript, kiedy zostaną kliknięte. To częsty sposób realizowania przycisku „wstecz”, czy otwierania nowego okna np. do dodawania komentarzy. Około 5% użytkowników Internetu z różnych przyczyn nie używa JavaScriptu i wówczas takie pseudo-linki nie działają. Przykładem może być korzystanie z przeglądarki Lynx czy praca robotów wyszukiwarek.</li>
<li>Dodawanie tytułów do linków. Odnośniki mogą posiadać opcjonalny atrybut <em>title</em>. Jego celem jest przedstawienie dodatkowej informacji o adresie odnośnika wtedy, gdy jest to konieczne. Dzieje się tak, gdy tekst wewnątrz elementu &lt;a&gt; nie wskazuje jasno, w które miejsce kieruje odnośnik. Zdarza się np. że odnośnikiem jest pojedyncze słowo wewnątrz treści akapitu. Atrybut <em>title </em>jest prezentowany zazwyczaj w przeglądarkach graficznych po nasunięciu kursora myszy na odnośnik. Również inne przeglądarki wykorzystują ten atrybut. Przeglądarka dla niewidomych JAWS ma opcję do odczytywania tytułu razem z tekstem linku. Atrybut <em>title </em>jest także wykorzystywany przez wyszukiwarki.</li>
<li>Definiowanie klawiszy skrótu. Popularną w tradycyjnych programach komputerowych funkcją są klawisze skrótu (ang. <em>accesskeys</em>). Pozwalające one na dostęp do pewnych części programu za pomocą klawiatury. Niestety, mimo że klawisze skrótu mogą być również zdefiniowane dla linków i elementów formularzy stron internetowych, możliwość ta jest rzadko wykorzystywana przez ich twórców. Dodanie klawisza skrótu odbywa się poprzez zdefiniowanie dla danego elementu atrybutu <em>accesskey</em>. Może to być litera lub cyfra. Zaleca się jednak stosowanie cyfr ze względu na możliwy konflikt z klawiszami skrótów zdefiniowanymi dla przeglądarki czy klawiszami systemu operacyjnego. Nie ma żadnego standardu definiującego przypisanie klawiszy do konkretnych elementów strony, jednak zwyczajowo używane są:
<ul>
<li>1 – strona główna</li>
<li>2 – główna treść strony</li>
<li>3 – wyszukiwarka</li>
<li>4 – kontakt</li>
</ul>
</li>
<li>Istotną kwestią pozostaje, jak użytkownik ma się dowiedzieć o klawiszach skrótów dostępnych na stronie internetowej. O ile przeglądarki dla niewidomych informują o nich, o tyle nie ma żadnej informacji na ten temat w przeglądarkach graficznych. Część serwisów rozwiązuje ten problem zawierając owe dane na jednej ze stron informacyjnych (np. „o nas” ) lub specjalnej stronie zawierającej informacje o ułatwieniach dostępu zaimplementowanych przez twórców.</li>
<li>Nieużywanie obrazków będących elementami warstwy prezentacji w treści. Częstym błędem wśród twórców stron internetowych jest niepoprawne korzystanie z list. Biorąc pod uwagę użyteczność, największym błędem jest tu tworzenie graficznych wypunktowań poprzez dodawanie obrazków w poszczególnych punktach listy. Pomijając inne aspekty takiego kodu, w przeglądarkach niegraficznych obrazki są zastępowane atrybutem <em>alt </em>lub w wypadku jego braku – ścieżką do pliku. Powoduje to, że treść strony staje się nieczytelna. Rozwiązaniem problemu graficznego wypunktowania jest dodanie obrazka w arkuszu stylów poprzez <em>list-styleimage </em>lub jako tło na elementy listy. Warto zaznaczyć, że opcja druga pozwala na dokładniejsze ustalenie pozycji grafiki względem treści punktów. Innym problemem są linie oddzielające fragmenty tekstu. Często zamiast poprawnego wykorzystania elementu &lt;hr /&gt;, używany jest zwykły obrazek. Występuje tu podobny problem, jak w przypadku obrazków w listach. Rozwiązaniem jest ostylowanie w CSS elementu &lt;hr /&gt; bądź też zastosowanie nadmiarowego elementu wokół &lt;hr /&gt; i nadanie stylów właśnie jemu, np.</li>
<pre>&lt;div class=”hr”&gt;&lt;hr /&gt;&lt;/div&gt;</pre>
<p>Operacja ta pozwala na poprawne wyświetlanie w większej ilości przeglądarek. Starsze wersje przeglądarki Internet Explorer nie umożliwiają zmiany domyślnego wyglądu linii oddzielającej.</p>
<li>Odpowiedniki tekstowe dla obrazków. Atrybut <em>alt </em>w tagu &lt;img /&gt; pozwala na zdefiniowanie tekstu alternatywnego dla obrazków na stronie. Tekst ten jest czytany przez przeglądarki dla niewidomych oraz wyświetlany zamiast obrazka w przeglądarkach tekstowych. Przeglądarki graficzne wyświetlają go często jako <em>tooltip </em>stanowiący dodatkowy opis grafiki. Jest to również element SEO.</li>
<li>Używanie poprawnej struktury nagłówków. Struktura nagłówków jest wykorzystywana przez przeglądarki dla niewidomych. Przeglądarki te mają możliwość odczytania nagłówków i łatwego przenoszenia się pomiędzy nimi. Poprawna struktura nagłówków warunkuje więc wygodne korzystanie ze strony przez osoby niewidome.</li>
<li>Nadawanie etykiet elementom formularza. W tradycyjnych aplikacjach kliknięcie na etykietę elementu formularza pozwala na jego zaznaczenie lub odznaczenie. Na stronie internetowej również jest możliwy taki efekt. Poprawia on znacznie komfort korzystania z formularza osobom używającym przeglądarek graficznych. Przeglądarki dla niewidomych, w wypadku braku takiego rozwiązania, przy wypełnianiu formularza odczytują wartość atrybutu <em>name</em>, która nie zawsze dobrze opisuje przeznaczenie danego elementu. Poprawnie stworzony formularz zawiera etykiety dla elementów w tagach &lt;label&gt;. Tag ten może przyjąć atrybut <em>for</em>, którego wartość powinna odpowiadać wartości atrybutu <em>name </em>dla elementu formularza opisywanego przez daną etykietę.</li>
<li>Korzystanie z możliwości dodatkowego opisania elementów strony. Elementy języka HTML, które mogą być niezrozumiałe bez dodatkowego opisu, posiadają możliwość zawarcia go w dodatkowych atrybutach bądź elementach podrzędnych. Dla tabel (element &lt;table&gt;) jest to atrybut <em>caption</em>, umożliwiający zdefiniowanie nazwy tabeli i atrybut <em>summary</em>, pozwalający na streszczenie treści tabeli. Dodatkowo istnieje rzadko wykorzystywana możliwość szczegółowego zdefiniowania zawartości tabeli poprzez użycie elementów &lt;thead&gt; i &lt;tfoot&gt; dla określenia ewentualnego nagłówka i stopki tabeli. Również w wypadku formularzy konieczny dla zrozumienia poszczególnych części bywa dodatkowy opis. Dzieje się tak w wypadku podziału graficznego formularza na różne części. Powinien on być odwzorowany w kodzie przez wykorzystanie elementów &lt;fieldset&gt;, definiujących podgrupy wewnątrz formularza oraz przez zdefiniowanie dla nich elementów &lt;legend&gt; z opisem, co zawiera dana grupa.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.optart.pl/2011/05/uwagi-na-temat-dostepnosci/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WIOSNA</title>
		<link>http://www.optart.pl/2011/04/wiosna/</link>
		<comments>http://www.optart.pl/2011/04/wiosna/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 12:27:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Referencje]]></category>

		<guid isPermaLink="false">http://optart.pl/?p=2181</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.optart.pl/2011/04/wiosna/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Katika</title>
		<link>http://www.optart.pl/2011/04/katika/</link>
		<comments>http://www.optart.pl/2011/04/katika/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 08:12:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Referencje]]></category>

		<guid isPermaLink="false">http://optart.pl/?p=2158</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.optart.pl/2011/04/katika/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Język CSS</title>
		<link>http://www.optart.pl/2011/04/jezyk-css/</link>
		<comments>http://www.optart.pl/2011/04/jezyk-css/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 13:45:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Nasze publikacje]]></category>
		<category><![CDATA[Optymalizacja]]></category>
		<category><![CDATA[Wpisy na blogu]]></category>

		<guid isPermaLink="false">http://optart.pl/?p=1151</guid>
		<description><![CDATA[Dzisiejszym wpisem wprowadzimy Was w historię i nowinki ze świata CSS. Zaczynajmy! Celem powstania języka CSS ( ang. Cascading Style Sheets – &#8230; <a href="http://www.optart.pl/2011/04/jezyk-css/" class="more">&#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Dzisiejszym wpisem wprowadzimy Was w historię i nowinki ze świata CSS. Zaczynajmy!<br />
Celem powstania języka CSS ( ang. Cascading Style Sheets – Kaskadowe Arkusze Stylów) było umożliwienie kontroli nad sposobem prezentacji dokumentów HTML. Istniejące już wersje HTML pozwalały co prawda na manipulację wyglądem (np. pogrubienie czy podkreślenie tekstu), jednak było to możliwe jedynie w bardzo ograniczonym zakresie.</p>
<p>Arkusze stylów umożliwiły też wyświetlanie tego samego dokumentu na różne sposoby dla różnych czytników oraz na modyfikację wyglądu dokumentu bez wprowadzania w nim zmian. Arkusze CSS mogą być dołączane do dokumentu HTML za pomocą elementu link, umieszczanego wewnątrz nagłówka lub też dołączane bezpośrednio do elementu przy pomocy atrybutu style:<span id="more-1151"></span></p>
<pre>&lt;link
rel="stylesheet" href="style.css" /&gt;
&lt;style
type="text/css"&gt;a { color: #fff }&lt;/style&gt;
&lt;a style="color:
#fff"&gt;Lorem ipsum&lt;/a&gt;</pre>
<p>Nazwa CSS wynika z zachowania stylów w wypadku nakładania się wielu z nich dla danego elementu. Ustalono hierarchię interpretacji reguł:</p>
<ul>
<li>Domyślne style przeglądarki;</li>
<li>Domyślny arkusz użytkownika przeglądarki;</li>
<li>Zewnętrzne arkusze stylów;</li>
<li>Style w nagłówku dokumentu;</li>
<li>Style w atrybucie style elementu.</li>
</ul>
<h2>Historia CSS</h2>
<p>W grudniu 1996 roku opublikowano rekomendację W3C dla dokumentu Cascading Style Sheets, level 1 (Kaskadowe Arkusze Stylów, poziom 1). W streszczeniu dokumentu opisano CSS1 jako prosty mechanizm, pozwalający autorom i odbiorcom na dołączanie stylów do dokumentów HTML. Mechanizm możliwy do odczytu i zapisu przez człowieka i korzystający z terminologii znanej z poligrafii komputerowej. Jako podstawową cechę języka określono kaskadowość.</p>
<h3>CSS 2</h3>
<p>12 maja 1998 roku została opublikowana rekomendacja grupy W3C dla języka CSS2. Został on, poza drobnymi wyjątkami, zbudowany jako rozszerzenie języka CSS. Wprowadzono w nim między innymi zmiany takie jak możliwość zdefiniowania typu mediów, do jakich kierowany jest arkusz stylów czy pozycjonowanie elementów dokumentów HTML. Dodano:</p>
<ul>
<li>pseudoklasy: :hover, :active, :focus, :lang, :firstchild;</li>
<li>pseudoelementy: :before, :after;</li>
</ul>
<p>właściwości:</p>
<ul>
<li>border-style: none/solid/double/groove/ridge/inset/outset/dotted/dashed,</li>
<li>border-color;</li>
<li>table-layout: auto/fixed;</li>
<li>cursor: auto/default/hand/text/help/move</li>
<li>top, right, bottom, left;</li>
<li>min-width, max-width, min-height, max-height;</li>
<li>overflow: visible/hidden/scroll/auto;</li>
<li>position:absolute/relative/static;</li>
<li>visibility:visible/hidden;</li>
<li>z-index;</li>
<li>page-break-after:auto/always, page-break-before:auto/always;</li>
<li>direction: ltr, rtl;</li>
<li>unicode-bidi: embed/bidi-override/normal.</li>
</ul>
<h3>CSS 2.1</h3>
<p>Ze względu na błędy w specyfikacji CSS 2 i długi czas potrzebny do ich rozwiązania, opublikowana została również specyfikacja CSS 2.1. Historia tej wersji rozpoczęła się w 2002 roku. Z kolei ostatni dokument z nią związany został opublikowany w roku 2009 (kandydat na rekomendację). Główne zmiany odbyły się w zakresie:</p>
<ul>
<li>modyfikacji specyfikacji tam, gdzie przyjęta przez twórców przeglądarek implementacja od niej odbiegała,</li>
<li>usunięciu funkcji CSS 2, które się nie przyjęły w powszechnym użyciu,</li>
<li>usunięciu funkcji przeznaczonych do odrzucenia w CSS 3,</li>
<li>dodaniu kilku nowych wartości własności.</li>
</ul>
<h3>CSS 3</h3>
<p>CSS 3 jest rozwijany od 2005 roku i proces ten trwa nadal. W przeciwieństwie do poprzednich wersji przyjęto budowę modularną. Poszczególne fragmenty specyfikacji są rozwijane niezależnie od siebie, co ma przyspieszyć proces standaryzacji (część modułów może zostać już zaimplementowana w przeglądarkach, podczas gdy inne wciąż będą standaryzowane). Grupa W3C na swojej stronie internetowej aktualizuje na bieżąco listę modułów i status prac nad nimi.<br />
Problemy związane z brakiem implementacji elementów języka CSS 3 w przeglądarkach internetowych</p>
<p>Nowe elementy CSS nie posiadają wsparcia w starszych wersjach przeglądarek. Dlatego zachowanie w nich poprawnego wyglądu strony wymaga dodatkowych zabiegów twórcy kodu. Odchodzi się od podejścia wymagającego zapewnienie identycznego wyglądu serwisów internetowych we wszystkich przeglądarkach. Coraz większą popularność zyskują idee tworzenia strony, polegające na wykorzystaniu najpierw elementów CSS, nie sprawiających problemów w interpretacji, a następnie dopiero rozbudowujących arkusz o elementy wzbogacające doświadczenie użytkownika (ang. progressive enhancement). Innym, często wykorzystywanym sposobem jest tworzenie strony dla nowoczesnych przeglądarek, a następnie zapewnianie czytelności w pozostałych (ang. Graceful degradation). Oba te podejścia wymagają rozróżniania w arkuszu stylów, ze względu na możliwości jakie ma przeglądarka otwierająca serwis. Opcję taką zapewnia dostępna na licencji MIT biblioteka JavaScript Modernizr. Działanie Modernizr sprowadza się do dodania do elementu html klas. Informują one o tym, czy konkretne elementy są zaimplementowane, czy nie w otwierającej stronę przeglądarce. Przykładowo dla border-image są to klasy borderimage i no-borderimage. Stosując konwencję progressive enhancement można wykorzystać powyższe klasy w następujący sposób:</p>
<pre>.my_elem { border: 1px
inset #666; }
.border-image .my_elem {
border: none;
border-image:
url(fancy-border.png) 5 5 5 5 round;
-moz-border-image:
url(fancy-border.png) 5 5 5 5 round;
-webkit-border-image:
url(fancy-border.png) 5 5 5 5 round;
}</pre>
<p>Dodatkowo Modernizr wzbogacono w skrypt umożliwiający dodawanie stylów CSS do elementów wprowadzonych w HTML 5. Zatem w przypadku korzystania z Modernizr nie jest konieczne jego dodawanie.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.optart.pl/2011/04/jezyk-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk
Database Caching using disk
Object Caching 1004/1139 objects using disk

Served from: www.optart.pl @ 2012-02-22 20:18:26 -->
