<?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>Pique - standardy sieciowe &#187; CSS</title>
	<atom:link href="http://pique.pl/category/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://pique.pl</link>
	<description>Krzysztof Danek o standardach sieciowych, PHP, JavaScript i całej reszcie</description>
	<lastBuildDate>Thu, 24 Jun 2010 20:15:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Jak poprawnie budować rozwijaną nawigację</title>
		<link>http://pique.pl/2010/06/24/jak-poprawnie-budowac-rozwijana-nawigacje/</link>
		<comments>http://pique.pl/2010/06/24/jak-poprawnie-budowac-rozwijana-nawigacje/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 20:15:06 +0000</pubDate>
		<dc:creator>Krzysztof Danek</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://pique.pl/?p=60</guid>
		<description><![CDATA[Po pierwsze &#8211; rozwijane menu nawigacyjne były złym pomysłem 10 lat temu i są tym bardziej złym pomysłem teraz. Kto próbował użyć takiej nawigacji na ekranie dotykowym, gdzie nie istnieje koncepcja :hover, ten świetnie wie o czym mówię. Chciałem to &#8230; <a href="http://pique.pl/2010/06/24/jak-poprawnie-budowac-rozwijana-nawigacje/">Czytaj dalej <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Po pierwsze &#8211; rozwijane menu nawigacyjne były złym pomysłem 10 lat temu i są tym bardziej złym pomysłem teraz. Kto próbował użyć takiej nawigacji na ekranie dotykowym, gdzie nie istnieje koncepcja <code>:hover</code>, ten świetnie wie o czym mówię. Chciałem to zaznaczyć na samym początku &#8211; jeśli możecie, nie używajcie w ogóle menu rozwijanych!</p>
<p>Do rzeczy. Ten wpis nie ma na celu szczegółowego omówienia technik budowania rozwijanych menu nawigacyjnych. Chcę tylko zwrócić uwagę na jeden konkretny aspekt. </p>
<h2>Problem &#8211; <code>display: none;</code></h2>
<p>Bardzo często widzę, taką strukturę CSSa do ukrywania/chowania menu.<br />
<code><br />
#nav li { float: left; position: relative; height: 30px; }<br />
 #nav li ul { display: none; position: absolute; top: 30px; left: 0; }<br />
 #nav li:hover ul { display: block; }<br />
</code></p>
<p>To działa, ale ma jedną zasadniczą wadę &#8211; domyślnie wszystkie linki w podmenu są ukryte przed wyszukiwarkami, czytnikami ekranu itd. Według mnie <code>display: none;</code> powinno być tylko używane w połączeniu z JavaScriptem, o ile chcemy zachować dostępność treści.</p>
<h2>Rozwiązanie: <code>left: -999em;</code></h2>
<p>Lepszym rozwiązaniem jest użyć minusowego pozycjonowania elementów:<br />
<code><br />
 #nav li ul { position: absolute; top: 30px; left: -999em; }<br />
 #nav li:hover ul { left: 0; }<br />
</code></p>
<p>Efekt taki sam, a nagle i roboty będą łapać Wasze linki i użytkownicy korzystający z klawiatury będa mogli nawigować po waszej stronie (przynajmniej w teorii, w praktyce wymaga to jeszcze trochę zachodu, żeby uczynić rozwijaną nawigację w pełni dostępną z klawiatury).</p>
]]></content:encoded>
			<wfw:commentRss>http://pique.pl/2010/06/24/jak-poprawnie-budowac-rozwijana-nawigacje/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Nowa odsłona IE PNG Fix</title>
		<link>http://pique.pl/2008/07/17/ie-png-fix-wersja-2/</link>
		<comments>http://pique.pl/2008/07/17/ie-png-fix-wersja-2/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 13:10:39 +0000</pubDate>
		<dc:creator>Krzysztof Danek</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[PNG]]></category>
		<category><![CDATA[przezroczystość]]></category>

		<guid isPermaLink="false">http://pique.pl/?p=47</guid>
		<description><![CDATA[IE6 nie wybiera się na zasłużoną emeryturę w najbliższej przyszłości. Codzienna udręka z tą przeglądarką stała się właśnie odrobinę wygodniejsza. Powstała nowa wersja popularnego narzędzia IE PNG Fix, autorstwa Twin Helix Design. Służy ono do włączania obsługi kanałów alpha w &#8230; <a href="http://pique.pl/2008/07/17/ie-png-fix-wersja-2/">Czytaj dalej <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><abbr title="Internet Explorer 6">IE6</abbr> nie wybiera się na zasłużoną emeryturę w najbliższej przyszłości. Codzienna udręka z tą przeglądarką stała się właśnie odrobinę wygodniejsza. </p>
<p>Powstała nowa wersja popularnego narzędzia <a href="http://www.twinhelix.com/css/iepngfix/">IE PNG Fix</a>, autorstwa <a href="http://www.twinhelix.com/">Twin Helix Design</a>. Służy ono do włączania obsługi kanałów alpha w obrazkach zapisanych w formacie PNG. </p>
<p>Nowa wersja 2.0 alpha 1 ma dwie nowe, rewelacyjne funkcje, niedostępne wg mojej wiedzy w innych rozwiązaniach. <strong>Udostępniono obsługę dwóch właściwości <abbr title="Cascading Style Sheets">CSS</abbr>: <code>background-position</code> i  <code>background-repeat</code>.</strong> Mam szczerą nadzieję, że ten skrypt podoła ciężkim warunkom bojowym codziennej pracy i będzie można go swobodnie używać do momentu, gdy IE6 przestanie mieć znaczenie (koło 2011 roku, jak tak dalej pójdzie z tempem konwersji).</p>
]]></content:encoded>
			<wfw:commentRss>http://pique.pl/2008/07/17/ie-png-fix-wersja-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>min-width w Internet Explorer przy pomocy expression</title>
		<link>http://pique.pl/2006/11/08/min-width-w-internet-explorer-przy-pomocy-expression/</link>
		<comments>http://pique.pl/2006/11/08/min-width-w-internet-explorer-przy-pomocy-expression/#comments</comments>
		<pubDate>Wed, 08 Nov 2006 12:11:57 +0000</pubDate>
		<dc:creator>Krzysztof Danek</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[bugi]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://pique.pl/2006/11/08/min-width-w-internet-explorer-przy-pomocy-expression/</guid>
		<description><![CDATA[Krótka uwaga na temat różnicy w <code>expression</code> dla <abbr title="Internet Explorer">IE</abbr> działającego w trybie standardów. <a href="http://pique.pl/2006/11/08/min-width-w-internet-explorer-przy-pomocy-expression/">Czytaj dalej <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Jeden z projektów, nad którym obecnie pracuję wymaga zastosowania właściwości <code>min-width</code>. Istnieje kilka rozwiązań tego problemu, jedne mniej, inne bardziej intuicyjne. Ze względu na pozycjonowanie absolutne, minusowe marginesy i sporą ilość floatowanych elementów postanowiłem, zamiast czysto CSSowego rozwiązania , zastosować <code>expression</code>. Wszystkie przykłady, które znalazłem w Internecie, sprowadzają się do następującego wyrażenia:</p>
<pre><code>body { width:expression(document.body.clientWidth &lt; 750? "750px": "auto" ); }</code></pre>
<p>Proste, nie? Nie byłem jednak zbyt zdziwiony, gdy to nie zadziałało&hellip;</p>
<p>Na całe szczęście po raz kolejny z pomocą przyszedł niezastąpiony <a href="http://www.quirksmode.org/">Peter-Paul Koch</a>. W artykule <a href="http://www.quirksmode.org/js/doctypes.html">document.body and doctype switching</a> znalazłem następujący fragment: </p>
<blockquote cite="http://www.quirksmode.org/js/doctypes.html"><p>If you use a DOCTYPE that puts Explorer 6 in standards compliant mode, some properties of <code>document.body</code> are reassigned to <code>document.documentElement</code>.
</p></blockquote>
<p>Jednym słowem &#8211; jeśli używacie DOCTYPE to minimalną szerokość w IE przy pomocy <code>expression</code> można uzyskać następująco:</p>
<pre><code>body { width:expression(document.documentElement.clientWidth &lt; 750? "750px": "auto" ); }</code></pre>
<p><strong>Uwaga</strong>: Internet Explorer w wersji 5 będzie jednak działał tylko dla pierwszej wersji jak rozumiem. Jeśli musicie wspierać tą przeglądarkę, to proponuję zastosować osobny arkusz dla tej wersji IE i użyć <a href="http://msdn.microsoft.com/workshop/author/dhtml/overview/ccomment_ovw.asp">komentarzy warunkowych</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pique.pl/2006/11/08/min-width-w-internet-explorer-przy-pomocy-expression/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Testowanie obsługi selektorów CSS w przeglądarkach</title>
		<link>http://pique.pl/2006/10/13/testowanie-obslugi-selektorow-css-w-przegladarkach/</link>
		<comments>http://pique.pl/2006/10/13/testowanie-obslugi-selektorow-css-w-przegladarkach/#comments</comments>
		<pubDate>Fri, 13 Oct 2006 06:48:28 +0000</pubDate>
		<dc:creator>Krzysztof Danek</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[selektory CSS]]></category>

		<guid isPermaLink="false">http://pique.pl/2006/10/13/testowanie-obslugi-selektorow-css-w-przegladarkach/</guid>
		<description><![CDATA[<a href="http://rakaz.nl/">Niels Leenheer</a> stworzył <a href="http://www.css3.info/selectors-test/test.html">zbiór testów</a> sprawdzających obsługę selektorów CSS w przeglądarkach internetowych. <a href="http://pique.pl/2006/10/13/testowanie-obslugi-selektorow-css-w-przegladarkach/">Czytaj dalej <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>W serwisie <a href="http://www.css3.info/">CSS3 Info</a> zamieszczono <a href="http://www.css3.info/selectors-test/">zbiór testów</a> napisanych w JavaScript przez <a href="http://rakaz.nl/">Nielsa Leenheera</a>. Pozwalają one określić, jakie selektory <abbr title="Cascading Style Sheets">CSS</abbr> obsługuje nasza przeglądarka. </p>
<p>Poniżej krótkie zestawienie dla przeglądarek, które udało mi się przetestować do tej pory.</p>
<table summary="Obsługiwane selektory CSS w przeglądarkach internetowych">
<thead>
<tr>
<th scope="col">Przeglądarka</th>
<th scope="col">Selektory <sup><a href="#selektory">[1]</a></sup></th>
<th scope="col">Testy <sup><a href="#testy">[2]</a></sup></th>
</tr>
</thead>
<tbody>
<tr>
<td>Internet Explorer 6.0</td>
<td>10</td>
<td>243</td>
</tr>
<tr>
<td>Internet Explorer 7.0 RC1</td>
<td>13</td>
<td>272</td>
</tr>
<tr>
<td>Opera 9.01</td>
<td>24</td>
<td>290</td>
</tr>
<tr>
<td>Safari 2.0.3</td>
<td>28</td>
<td>299</td>
</tr>
<tr>
<td>Firefox 1.5.0.5</td>
<td>36</td>
<td>315</td>
</tr>
</tbody>
</table>
<p><sup><em id="selektory">[1]</em></sup> &#8211; ilość selektorów obsługiwanych ze wszystkich 43 badanych<br />
<sup><em id="testy">[2]</em></sup> &#8211; ilość testów zaliczonych z 513 wszystkich testów</p>
<p>Jak widać Firefox 1.5 zdecydowanie prowadzi, co nie było dla mnie wielkim zaskoczeniem. Niestety, zmartwił mnie poziom obsługi oferowany przez najnowszą wersję <abbr title="Internet Explorer">IE</abbr>&hellip;</p>
<p>Poniżej trochę bardziej szczegółowy rozkład:</p>
<table summary="Szczegółowy spis obsługiwanych selektorów" class="support">
<colgroup>
<col></col>
<col class="browser"></col>
<col class="browser"></col>
<col class="browser"></col>
<col class="browser"></col>
<col class="browser"></col>
</colgroup>
<thead>
<tr>
<th scope="col">Selektor</th>
<th scope="col">IE6</th>
<th scope="col">IE7</th>
<th scope="col">Opera 9</th>
<th scope="col">Safari 2</th>
<th scope="col">Firefox 1.5</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">*</th>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">E</th>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">.class</th>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">#id</th>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">E F</th>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">E > F</th>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">E + F</th>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">E[attribute]</th>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">E[attribute=value]</th>
<td>nie</td>
<td class="yes">tak</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">E[attribute~=value]</th>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">E[attribute|=value]</th>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:first-child</th>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:link</th>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:visited</th>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:lang()</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:before</th>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">::before</th>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:after</th>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">::after</th>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:first-letter</th>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">::first-letter</th>
<td class="yes">tak</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:first-line</th>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">::first-line</th>
<td class="yes">tak</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">E[attribute^=value]</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">E[attribute$=value]</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">E[attribute*=value]</th>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">E ~ F</th>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
<td>nie</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:root</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:last-child</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:only-child</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:nth-child()</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
</tr>
<tr>
<th scope="row">:nth-last-child()</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
</tr>
<tr>
<th scope="row">:first-of-type</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
</tr>
<tr>
<th scope="row">:last-of-type</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
</tr>
<tr>
<th scope="row">:only-of-type</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
</tr>
<tr>
<th scope="row">:nth-of-type()</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
</tr>
<tr>
<th scope="row">:nth-last-of-type()</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
</tr>
<tr>
<th scope="row">:empty</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:not()</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:target</th>
<td>nie</td>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:enabled</th>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td>nie</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:disabled</th>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td>nie</td>
<td class="yes">tak</td>
</tr>
<tr>
<th scope="row">:checked</th>
<td>nie</td>
<td>nie</td>
<td class="yes">tak</td>
<td>nie</td>
<td class="yes">tak</td>
</tr>
</tbody>
</table>
<p>Do powyższego zestawienia trzeba dodać pewien komentarz. Brak obsługi nie oznacza całkowitego braku wsparcia dla danego selektora w konkretnej przeglądarce. Oznacza to, że nie przeszedł on jednego lub kilku z kilkudziesięciu testów, sprawdzających szczególne przypadki zastosowania. Najlepiej samemu przeprowadzić testy i przeczytać szczegółowe komentarze przy każdym z nich.</p>
]]></content:encoded>
			<wfw:commentRss>http://pique.pl/2006/10/13/testowanie-obslugi-selektorow-css-w-przegladarkach/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Wygląd czy struktura &#8211; od czego zacząć budowę strony?</title>
		<link>http://pique.pl/2006/08/01/wyglad-czy-struktura-od-czego-zaczac-budowe-strony/</link>
		<comments>http://pique.pl/2006/08/01/wyglad-czy-struktura-od-czego-zaczac-budowe-strony/#comments</comments>
		<pubDate>Tue, 01 Aug 2006 20:38:33 +0000</pubDate>
		<dc:creator>Krzysztof Danek</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[struktura]]></category>
		<category><![CDATA[wygląd]]></category>

		<guid isPermaLink="false">http://pique.pl/2006/08/01/wyglad-czy-struktura-od-czego-zaczac-budowe-strony/</guid>
		<description><![CDATA[<a href="http://www.autisticcuckoo.net/about/toolman.php">Tommy Olsson</a> <a href="http://accessites.org/gbcms_xml/news_page.php?id=19">opisał dwa przeciwstawne podejścia do tworzenia stron internetowych</a> - wizualne, polegające na przejściu od projektu graficznego do szablonu i strukturalne, zakładające proces produkcji o stworzenia prawidłowej struktury strony. Zgadzam się z nim całkowicie, że metoda strukturalna zapewnia tworzenie lepszego kodu <abbr title="Hypertext Markup Language">HTML</abbr>, ale niestety w rzeczywistości wiążą się z nią konkretne wyzwania. <a href="http://pique.pl/2006/08/01/wyglad-czy-struktura-od-czego-zaczac-budowe-strony/">Czytaj dalej <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Jestem właśnie po lekturze świetnego artykułu <a href="http://accessites.org/gbcms_xml/news_page.php?id=19">Visual vs. Structural</a>, którego autorem jest <a href="http://www.autisticcuckoo.net/about/toolman.php">Tommy Olsson</a>, twórca nieaktywnego już niestety bloga <a href="http://www.autisticcuckoo.net/">The Autistic Cuckoo</a>. </p>
<p>Artykuł opisuje dwie przeciwstawne metody tworzenia stron internetowych:</p>
<ol>
<li>Podejście wizualne &ndash; budowę zaczyna się od stworzenia projektu graficznego, następnie tworzy się szablony <abbr title="Hypertext Markup Languague">HTML</abbr>, a na koniec dodaje właściwą treść</li>
<li>Podejście strukturalne &ndash; treść strony przetwarza się na kod HTML, główny nacisk kładąc na sensowną kolejność i znaczenie tworzonych elementów, a dopiero później dodaje się do niego warstwę graficzną</li>
</ol>
<p>Całym sercem opowiadam się za tym drugim rozwiązaniem z kilku powodów:</p>
<ul>
<li>Otrzymany kod HTML jest dużo bardziej przejrzysty i sensowny dzięki skupieniu się na strukturze, a nie na detalach graficznych. Oczywiście, wraz z budowaniem warstwy prezentacyjnej pojawia się konieczność dodania kolejnych elementów, jednak mogą one zostać lepiej rozmieszczone i ich ilość jest z zasady mniejsza. Ponadto łatwiej określać nazwy klas i identyfikatorów dla elementów (a to wcale nie taka oczywista kwestia), ponieważ widzimy, <strong>co konkretnie zawiera</strong> dany kontener.</li>
<li>Część klientów, zamawiających stronę internetową ma bardzo mgliste pojęcie o jej zawartości. Przygotowanie szablonów na pierwszym etapie projektowania pozwala zapobiec przykrym niespodziankom, gdyż klienci w tym momencie widzą dokładnie, co znajdzie się na stronie. Dużo prościej wprowadzić poprawki w treści i funkcjonalności w kodzie HTML, niż przerabiać i ciąć od nowa sporą część projektu graficznego.</li>
<li>Programiści są szczęśliwsi &ndash; od razu widać czy dana podstrona będzie wymagała osobnego modułu, czy też można wykorzystać któryś z obecnie istniejących. Wprowadzanie zmian w połowie projektu jest <strong>zawsze</strong> bardziej czasochłonne i kosztowe, niż gdyby były one uwzględnione od samego początku.</li>
</ul>
<p>Niestety, w codziennej pracy napotykam wiele przeszkód, uniemożliwiających takie rozwiązanie:</p>
<ul>
<li>Przygotowanie treści jest zajęciem czasochłonnym i wymaga od klienta zaangażowania i świadomości rezultatu, który chce się osiągnąć. Z tym w 80% przypadków nie jest za dobrze.</li>
<li>Dobrzy graficy, znający się na tworzeniu <em>stron internetowych</em> to skarb. Ci, potrafiący przygotować projekt uwzględniając gotową strukturę (opisaną w HTMLu) są prawdziwą rzadkością i przeważnie już pracują w wielkich agencjach.</li>
<li>Najlepiej sprzedaje się projekt graficzny, bo on <em>przemawia</em> do klienta.</li>
<li>Poza smutnym działem produkcyjnym nikogo to nie interesuje i ciężko wymusić całkowitą reorganizację sposobu pracy i kontaktów z klientem.</li>
</ul>
<p>Jak można zauważyć &ndash; istnieją pewne problemy, które wynikają jednak nie z wad samej metody, a raczej z niedoskonałości rzeczywistości, w której musimy pracować. Mimo to mam nadzieję, że ten sposób szybko się przyjmie gdyż zdecydowanie ułatwia pracę zarówno kodera jak i programisty.</p>
]]></content:encoded>
			<wfw:commentRss>http://pique.pl/2006/08/01/wyglad-czy-struktura-od-czego-zaczac-budowe-strony/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

