<?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>Vivee - wordpress, webmastering, grafika i fotografia &#187; XHTML/CSS</title>
	<atom:link href="http://vivee.info/category/tutoriale/webmaster/xhtmlcss/feed/" rel="self" type="application/rss+xml" />
	<link>http://vivee.info</link>
	<description>Blog o wordpress, webmasteringu, grafice i fotografii.</description>
	<lastBuildDate>Sat, 01 Jan 2011 22:14:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Jak za pomocą js poprawić wygląd formularzy</title>
		<link>http://vivee.info/2010/06/03/jak-za-pomoca-js-poprawic-wyglad-formularzy/</link>
		<comments>http://vivee.info/2010/06/03/jak-za-pomoca-js-poprawic-wyglad-formularzy/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 23:02:29 +0000</pubDate>
		<dc:creator>palmiak</dc:creator>
				<category><![CDATA[Skrypty client-side]]></category>
		<category><![CDATA[XHTML/CSS]]></category>
		<category><![CDATA[formularze]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[niceforms]]></category>

		<guid isPermaLink="false">http://vivee.info/?p=2036</guid>
		<description><![CDATA[Tworząc strony dość często trzeba powojować z formularzami. Niestety dość często się zdarza współpraca z grafikiem, który o htmlu to za dużo nie wie, a wizje formularzy ma dość... finezyjne (np. ostylowany button przy input type="file"). Wtedy możemy albo zacząć ostro kombinować (background, js, pełna przezroczstość... po prostu cuda) albo powiedzieć, że się nie da. [...]]]></description>
			<content:encoded><![CDATA[<p>Tworząc strony dość często trzeba powojować z formularzami. Niestety dość często się zdarza współpraca z grafikiem, który o htmlu to za dużo nie wie, a wizje formularzy ma dość... finezyjne (np. ostylowany button przy input type="file"). Wtedy możemy albo zacząć ostro kombinować (background, js, pełna przezroczstość... po prostu cuda) albo powiedzieć, że się nie da. Ostatecznie pozostaje nam użyć <strong>Niceforms</strong>, czyli skryptu, w którym autor ostro pokombinował za nas.<span id="more-2036"></span></p>
<p class="insp">
<a href="http://pliki.vivee.info/users/palmiak/niceforms/niceforms.html"><img src="http://pliki.vivee.info/demo.jpg" alt="demo" /></a>
</p>
<h2>Jak to działa?</h2>
<p>Dla usera - po prostu banalnie. Całość ogranicza się do dopisania linijki (załączenie skryptu) oraz dopisania <code>class="niceform"</code>. Dodatkowo jeżeli chcemy zmienić wygląd formatek należy zedytować pliczek psd załączony do archiwum i zapisać obrazki.</p>
<p>Pod maską już się dzieje o wiele więcej rzeczy. Najprościej mówiąc wszystko działa na zasadzie ukrycia pola formularza, utworzenia nowego obiektu, który służy głównie do wyglądania oraz przekazywania wartości wpisywanej/wyklikiwanej w nasz nowy twór do ukrytego już pola.</p>
<p>Taki niestety urok stylowania formularzy i stąd tak kombinacje.</p>
<h2>Prosty formularzyk</h2>
<p>Najpierw będziemy bazować na tym co otrzymujemy z Niceforms.</p>
<p>Nasz formularzyk będzie banalnym polem do wpisania jakiegoś słowa.</p>
<p>Po pierwsze pobieramy Niceforms ze strony autora: <a href="http://www.emblematiq.com/lab/niceforms/download/">www.emblematiq.com</a>.</p>
<p>W sekcji head dopisujemy:</p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;script.html"><span class="kw2">&lt;script</span></span></a> <span class="kw3">language</span><span class="sy0">=</span><span class="st0">&quot;javascript&quot;</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;niceforms.js&quot;</span>&gt;&lt;<span class="sy0">/</span>script&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;link.html"><span class="kw2">&lt;link</span></span></a> <span class="kw3">rel</span><span class="sy0">=</span><span class="st0">&quot;stylesheet&quot;</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/css&quot;</span> <span class="kw3">media</span><span class="sy0">=</span><span class="st0">&quot;all&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;niceforms-default.css&quot;</span> <span class="sy0">/</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp;</div>
<p>Następnie w body piszemy już formularz właściwy:</p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;form.html"><span class="kw2">&lt;form</span></span></a> <span class="kw3">action</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;niceform&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;fieldset&amp;gt;.html"><span class="kw2">&lt;fieldset&gt;</span></span></a></span><br />
&nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;legend&amp;gt;.html"><span class="kw2">&lt;legend&gt;</span></span></a></span>Formularz do napisania czegoś<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/legend&amp;gt;.html"><span class="kw2">&lt;/legend&gt;</span></span></a></span><br />
&nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;dl&amp;gt;.html"><span class="kw2">&lt;dl&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; <span class="sc2">&lt;dt&gt;&lt;label <span class="kw3">for</span><span class="sy0">=</span><span class="st0">&quot;napisz_cos&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Napisz coś<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>label&gt;&lt;<span class="sy0">/</span>dt&gt;</span><br />
&nbsp; &nbsp; &nbsp; <span class="sc2">&lt;dd&gt;&lt;input <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;napisz_cos&quot;</span> <span class="sy0">/</span>&gt;&lt;<span class="sy0">/</span>dd&gt;</span><br />
&nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/dl&amp;gt;.html"><span class="kw2">&lt;/dl&gt;</span></span></a></span><br />
&nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;dl&amp;gt;.html"><span class="kw2">&lt;dl&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; <span class="sc2">&lt;dt&gt;&lt;input <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;submit&quot;</span> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;submit&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;submit&quot;</span> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">&quot;Wyślij&quot;</span> <span class="sy0">/</span>&gt;&lt;<span class="sy0">/</span>dt&gt;</span><br />
&nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/dl&amp;gt;.html"><span class="kw2">&lt;/dl&gt;</span></span></a></span><br />
&nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/fieldset&amp;gt;.html"><span class="kw2">&lt;/fieldset&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/form&amp;gt;.html"><span class="kw2">&lt;/form&gt;</span></span></a></span><br />
&nbsp;</div>
<p>Najważniejsze jest to <code>class="niceform"</code>. I <a href="http://pliki.vivee.info/users/palmiak/niceforms/demo.html">tak oto wygląda</a> najprostsza wersja naszego formularza. </p>
<p>Załączone demo prezentujące wszystkie uroki Niceforms wygląda zaś <a href="http://pliki.vivee.info/users/palmiak/niceforms/niceforms.html">następująco</a>.</p>
<h2>A gdybyśmy chcieli zmienić grafikę?</h2>
<p>Potrzebować będziemy Photoshopa by otworzyć pliczek <strong>nf-standard-blue.psd</strong>. W nim zawarte są wszystkie grafiki związane z formularzem. Dodatkowo przygotowane są linie do cięcia, więc wystarczy wybrać zapisz dla web i zapisać same grafiki. Oczywiście można to zrobić po swojemu, tylko wtedy będzie troszkę więcej zabawy ze stylem. W sumie zabawy z PSem zostawiam Wam.</p>
<p>Opiszę teraz które klasy są używane do których elementów formularzy.</p>
<p><code>input type="text"</code> - NFText(robi za kontener w którym trzymane są kolejne elementy oraz to właśnie nim stylujemy tekst, który wpisujemy), NFTextCenter(odpowiada za rozciągającą się część tła - czyli środkową). NFTextLeft(odpowiada za lewą krawędź inputa), NFTextRight(odpowiada za prawą krawędź inputa)</p>
<p><code>input type="checkbox"</code> - NFCheck(odpowiada za ten buttonik czy coś jest zaznaczone czy nie)</p>
<p><code>input type="radio"</code> - NFRadio(odpowiada za ten buttonik czy coś jest zaznaczone czy nie)</p>
<p><code>input type="button"</code> - NFButton(środkowa część przycisku, rozszerzająca się w zależności od ilości tekstu), NFButtonLeft(lewa krawędź przycisku), NFButtonRight(prawa krawędź przycisku)</p>
<p><code>input type="file"</code> - NFFileButton(fragment udający guzik w file), NFFileNew(nowy input który udaje funkcjonalność lewej części file) dodadkowo wykorzystywane są tutaj NFText oraz NFTextLeft</p>
<p><code>textarea</code> - NFTextarea(tu wklepujemy zawartość), NFTextareaTop, NFTextareaBottom, NFTextareaTopLeft, NFTextareaTopRight, NFTextareaBottomLeft, NFTextareaBottomRight(poszczególne krawędzie pola), NFTextareaTopH, NFTextareaBottomH, NFTextareaTopLeftH, NFTextareaTopRightH, NFTextareaBottomLeftH, NFTextareaBottomRightH(poszczególne krawędzie po najeździe)</p>
<p><code>select</code> - NFSelect(kontener dla kolejnych elementów), NFSelectLeft(lewa część selecta - warto się przyjrzeć obrazkom, że zrozumieć jak to jest konstruowane), NFSelectRight(prawa część selecta), NFSelectOptions(czyli to co się pojawia po pliknięciu w selecta - tak naprawdę jest to ul)</p>
<p><code>select multiple="multiple"</code> - w sumie jest to prawie to co textarea, tylko nazwy zamiast NFTextarea mają na początku NFMultiSelect</p>
<p>Poza tymi klasami mamy kilka dodatkowych, których w większości przypadków ruszać nie należy:<br />
NFfocused - są nadawane elementom na których obecnie jest focus<br />
NFh - przesuwa tło by nadać mu pozycję 0 100% (używane w większości formatek)<br />
NFhr - przesuwa tło by nadać mu pozycję 100% 100% (używane przy select)<br />
NFhidden - ukrywa elementy, ale w taki sposób, że dalej są one funkcjonale (poprzez nadanie pełnej przezroczystości)</p>
<p>Mając opis klas, psd oraz gotowy wzór pozostaje tylko troszkę cierpliwości i powinno się udać. </p>
<p>Jeżeli nie będziecie zmieniać rozmiarów podmiana obrazków będzie bardzo szybkim procesem. W przeciwnym razie będzie trzeba troszkę podrasować arkusz stylu.</p>
<h2>Podsumowanie</h2>
<p>Jak widzicie stworzenie wymarzonych formularzy dzięki Niceforms jest w sumie prostym i w miarę przyjemnym procesem. Szkoda, że do osiągnięcia takich efektów potrzebne jest sporo tricków dziejących się pod maską. Pozostaję nam więc starać się edukować grafików ze szczególnie ułańską fantazją, żeby akurat przy formularzach troszkę odpuścili.</p>
<img src="http://vivee.info/?ak_action=api_record_view&id=2036&type=feed" alt="" /><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fvivee.info%2F2010%2F06%2F03%2Fjak-za-pomoca-js-poprawic-wyglad-formularzy%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://vivee.info/2010/06/03/jak-za-pomoca-js-poprawic-wyglad-formularzy/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>pHAML &#8211; inne spojrzenie na rozlazłego HTML&#8217;a</title>
		<link>http://vivee.info/2010/05/16/phaml-inne-spojrzenie-na-rozlazlego-htmla/</link>
		<comments>http://vivee.info/2010/05/16/phaml-inne-spojrzenie-na-rozlazlego-htmla/#comments</comments>
		<pubDate>Sun, 16 May 2010 01:02:42 +0000</pubDate>
		<dc:creator>palmiak</dc:creator>
				<category><![CDATA[Skrypty server-side]]></category>
		<category><![CDATA[XHTML/CSS]]></category>
		<category><![CDATA[haml]]></category>
		<category><![CDATA[phaml]]></category>

		<guid isPermaLink="false">http://vivee.info/?p=1971</guid>
		<description><![CDATA[Ostatnio chwaliłem się fajną zabawką do CSS, a mianowicie CSS Scaffold. Dziś zaś przyszła pora na zrobienie czegoś z HTML'em. HAML jest głównie znany osobom, które używają RoRa. Ja taką osobą nie jestem, więc przez długi czas omijałem temat szerokim łukiem. Jednak któregoś dnia szlag mnie trafił i postanowiłem coś w końcu zrobić, bo efekt [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio chwaliłem się fajną zabawką do CSS, a mianowicie CSS Scaffold. Dziś zaś przyszła pora na zrobienie czegoś z HTML'em. HAML jest głównie znany osobom, które używają RoRa. Ja taką osobą nie jestem, więc przez długi czas omijałem temat szerokim łukiem.<span id="more-1971"></span></p>
<p>Jednak któregoś dnia szlag mnie trafił i postanowiłem coś w końcu zrobić, bo efekt mieszania php i HTML'a na dłuższą metę jest tragiczny. Człowiek się gubi gdzie się pętle zaczynają, gdzie kończą i ogólnie jest bajzel. Okazało się, że ktoś był na tyle miły, żeby przeportować HAMLa na php i tak oto powstał pHAML. W porównaniu z oryginałem są pewne różnice, jednak to co najważniejsze zostało zachowane.</p>
<h2>Pierwsze starcie</h2>
<p> Dzięki pHAML kod ulega dość imponującemu skróceniu. Dla przykładu zobaczmy różnicę między w 'Hello world':</p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc0">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;html&amp;gt;.html"><span class="kw2">&lt;html&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;head&amp;gt;.html"><span class="kw2">&lt;head&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;title&amp;gt;.html"><span class="kw2">&lt;title&gt;</span></span></a></span>hello<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/title&amp;gt;.html"><span class="kw2">&lt;/title&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/head&amp;gt;.html"><span class="kw2">&lt;/head&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;body&amp;gt;.html"><span class="kw2">&lt;body&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;p&amp;gt;.html"><span class="kw2">&lt;p&gt;</span></span></a></span>Hello world<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/p&amp;gt;.html"><span class="kw2">&lt;/p&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/body&amp;gt;.html"><span class="kw2">&lt;/body&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/html&amp;gt;.html"><span class="kw2">&lt;/html&gt;</span></span></a></span><br />
&nbsp;</div>
<div class="html dean_ch" style="white-space: nowrap;">
!!! Strict<br />
%html<br />
&nbsp; &nbsp; %head<br />
&nbsp; &nbsp; &nbsp; &nbsp; %title hello<br />
&nbsp; &nbsp; %body<br />
&nbsp; &nbsp; &nbsp; &nbsp; %p hello world<br />
&nbsp;</div>
<p>Przeanalizujmy linijka po linijce.<br />
<code>!!! Strict</code> to nic innego jak doctype (koniec kopiowania tego cholerstwa za każdym razem)<br />
<code>%html %head etc</code> - po prostu tagi, tyle że zamiast ich zamykać używamy wcięć.</p>
<p>Na pierwszy rzut wygląda to dziwnie, ale chwila wprawy i zaczyna być fajnie.</p>
<h2>Parametry</h2>
<p>Przekazywanie parametrów odbywać się może na kilka sposobów. Najbardziej uniwersalnym jest:</p>
<div class="html dean_ch" style="white-space: nowrap;">
%p{class=&quot;jaka_klasa jakas_inna_klasa&quot; id=&quot;unikalny_id&quot; style=&quot;color:red&quot;}<br />
&nbsp;</div>
<p>Jak się zapewne domyślacie w rezultacie otrzymamy:</p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;p.html"><span class="kw2">&lt;p</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;jaka_klasa jakas_inna_klasa&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;unikalny_id&quot;</span> <span class="kw3">style</span><span class="sy0">=</span><span class="st0">&quot;color:red&quot;</span>&gt;&lt;<span class="sy0">/</span>p&gt;</span><br />
&nbsp;</div>
<p>Klasy i idy możemy jednak przekazywać w troszkę krótszej formie:</p>
<div class="html dean_ch" style="white-space: nowrap;">
%p.jaka_klasa.jakas_inna_klasa#unikalny_id{style=&quot;color:red&quot;}<br />
&nbsp;</div>
<p>Po prostu po kropkach wymieniamy klasy a po # id.</p>
<p>Pewnym wyjątkiem jest div, gdzie nie trzeba pisać nazwy taga:</p>
<div class="html dean_ch" style="white-space: nowrap;">
.jaka_klasa.jakas_inna_klasa#unikalny_id{style=&quot;color:red&quot;}<br />
&nbsp;</div>
<p>jest równoznaczne z:</p>
<div class="html dean_ch" style="white-space: nowrap;">
%div.jaka_klasa.jakas_inna_klasa#unikalny_id{style=&quot;color:red&quot;}<br />
&nbsp;</div>
<h2>Kilka przykładów na potwierdzenie, że HAML fajny jest</h2>
<p>Do myków, które mi się strasznie podobają należą na pewno listy:</p>
<div class="html dean_ch" style="white-space: nowrap;">
%ul<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %li raz<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %li dwa<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %li trzy<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %li<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %ul<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %li trzy jeden<br />
&nbsp;</div>
<p>W końcu wygląda to czytelnie, szczególnie zagnieżdżenia.</p>
<p>Bardzo przyjemnie wyglądają też tabele:</p>
<div class="html dean_ch" style="white-space: nowrap;">
%table<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %tr<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %th id<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %th imię<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %th nazwisko<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %tr<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %td 1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %td maciek<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %td kowalski<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %tr<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %td 2<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %td andrzej<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %td nowak<br />
&nbsp;</div>
<h2>Znaki specjalne</h2>
<p><code>\</code> - wyświetla wiersz dosłownie taki jaki jest.<br />
<code>&lt;&lt;&lt;</code> oraz <code>&gt;&gt;&gt;</code> - wyświetla zawartość dokładnie taką jaką jest znajdującą się między tymi znakami<br />
<code>/</code> - zamienia wiersz na typowy htmlowy komentarz<br />
<code>//</code> - komentarz, ale niewidzoczny w htmlu</p>
<h2>A jak tu php wrzucić?</h2>
<p>Najprościej mówiąc - za pomocą myślnika:</p>
<div class="html dean_ch" style="white-space: nowrap;">
- for($x=1; $<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">=</span><span class="nu0">1</span> ;$x++ <span class="br0">&#123;</span></span><br />
<span class="sc2"> &nbsp; &nbsp;%p hello</span><br />
<span class="sc2">- <span class="br0">&#125;</span></span><br />
&nbsp;</div>
<p>to nic innego jak:</p>
<div class="php dean_ch" style="white-space: nowrap;">
<span class="kw2">&lt;?php</span> <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$x</span>=<span class="nu0">1</span>; $<span class="sy0">&lt;</span>=<span class="nu0">1</span> ;<span class="re0">$x</span>++ <span class="br0">&#123;</span> <span class="kw2">?&gt;</span><br />
<span class="sy0">&lt;</span>p<span class="sy0">&gt;</span>hello<span class="sy0">&lt;/</span>p<span class="sy0">&gt;</span><br />
<span class="kw2">&lt;?php</span> <span class="br0">&#125;</span> <span class="kw2">?&gt;</span><br />
&nbsp;</div>
<p>Jednak różnica jeśli chodzi o czytelność dość spora.</p>
<h2>Wywoływanie</h2>
<p>Pokazałem już jak pisanie w HAMLu wygląda, teraz czas to jakoś uruchomić. Najpierw pobieramy ze strony twórcy odpowiednie <a href="http://sourceforge.net/projects/phaml/">archiwum</a>. Następny krok to rozpakowanie zipa.</p>
<p>Kiedy już wszystko mamy przygotowane tworzymy sobie plik np test.php a w nim piszemy:</p>
<div class="php dean_ch" style="white-space: nowrap;"><span class="kw2">&lt;?php</span> <span class="kw1">include</span><span class="br0">&#40;</span><span class="st0">'class.pHAML.php'</span><span class="br0">&#41;</span>;<br />
<span class="re0">$template</span> =<span class="st0">'!!! Strict<br />
%html<br />
&nbsp; &nbsp; %head<br />
&nbsp; &nbsp; &nbsp; &nbsp; %title hello<br />
&nbsp; &nbsp; %body<br />
&nbsp; &nbsp; &nbsp; &nbsp; - for($i=0;$i&lt;=10;$i++){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %p<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - echo $i.&quot;&lt;br/&gt;&quot;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; - }<br />
'</span>;<br />
<span class="re0">$pHAML</span> = <span class="kw2">new</span> HAMLatin<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="re0">$content</span> = <span class="re0">$pHAML</span>-<span class="sy0">&gt;</span><span class="me1">render</span><span class="br0">&#40;</span><span class="re0">$template</span><span class="br0">&#41;</span>;<br />
<span class="re0">$content</span> = <span class="re0">$pHAML</span>-<span class="sy0">&gt;</span><span class="me1">renderPHP</span><span class="br0">&#40;</span><span class="re0">$content</span><span class="br0">&#41;</span>;<br />
<a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$content</span>;<br />
&nbsp;</div>
<p>Całą treść przypisujemy sobie do jakiejś zmiennej a potem przekazujemy jako parametry dla render i renderPHP.</p>
<p>Jeżeli uzywamy tylko htmla, nie jest potrzebna linijka <code>$content = $pHAML->renderPHP($content);</code>.</p>
<p>Zachęcam do zabawy, bo wywoływanie tego można zrobić na wiele wygodniejszych sposobów.</p>
<h2>Drobne bugi</h2>
<p>Wersja dostępna na <a href="http://phaml.sourceforge.net/">phaml.sourceforge.net</a> ma w sumie dwie wady. Jedna to taka, że wszystkie tagi traktuje jako podwójne, a druga, że stosuje notację htmlową, a nie xhtmlową.</p>
<p>Na szybko poprawiłem te dwie rzeczy i tagi pojedyncze zamyka poprawnie, a kwestię html/xhtml rozwiązałem poprzez dopisanie zmiennej $is_xhtml. Uprzedzam, że były to poprawki na szybko lecz nie zauważyłem żeby coś nie działało/działało źle. Plik do pobrania <a href="http://pliki.vivee.info/users/palmiak/phaml/class.pHAML_091.zip">stąd</a>.</p>
<h2>Podsumowanie</h2>
<p>Muszą przyznać, że (p)HAML jest fajnym wynalazkiem. Strasznie upraszcza widok HTMLa. Szkoda jednak, że pod PHP nie ukazała się żadna porządna i ciągle rozwijana implementacja (ta prezentowana tutaj nie sprawia już wrażenie rozwijanej) Pod tym względem muszę przyznać, że jest to coś czego programistom od Ruby'ego można pozazdrościć.</p>
<p>A Wy jakie znacie i polecacie substytuty zwykłego (x)HTML'a?</p>
<img src="http://vivee.info/?ak_action=api_record_view&id=1971&type=feed" alt="" /><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fvivee.info%2F2010%2F05%2F16%2Fphaml-inne-spojrzenie-na-rozlazlego-htmla%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://vivee.info/2010/05/16/phaml-inne-spojrzenie-na-rozlazlego-htmla/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>CSS Scaffold &#8211; czyli CSS po ludzku</title>
		<link>http://vivee.info/2010/04/23/css-scaffold-czyli-css-po-ludzku/</link>
		<comments>http://vivee.info/2010/04/23/css-scaffold-czyli-css-po-ludzku/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 09:18:25 +0000</pubDate>
		<dc:creator>palmiak</dc:creator>
				<category><![CDATA[Skrypty server-side]]></category>
		<category><![CDATA[XHTML/CSS]]></category>

		<guid isPermaLink="false">http://vivee.info/?p=1864</guid>
		<description><![CDATA[Arkusze stylu pisuję dość często - taka praca. W sumie nawet to przyjemne. Kłopoty pojawiają się gdy zaglądam po dłużym okresie czasu i dochodzę do wniosku, że jestem zupełnie zagubiony i po prostu dopisuję jakiegoś ida na końcu. I tak się pojawia bałagan. Próbowałem pisać style wieloma metodami, niestety problem w pewnym momencie zawsze się [...]]]></description>
			<content:encoded><![CDATA[<p>Arkusze stylu pisuję dość często - taka praca. W sumie nawet to przyjemne. Kłopoty pojawiają się gdy zaglądam po dłużym okresie czasu i dochodzę do wniosku, że jestem zupełnie zagubiony i po prostu dopisuję jakiegoś ida na końcu. I tak się pojawia bałagan. Próbowałem pisać style wieloma metodami, niestety problem w pewnym momencie zawsze się pojawiał, aż do odkrycia <strong>CSS Scaffold</strong>.<span id="more-1864"></span></p>
<p><strong>CSS Scaffold</strong>, jak opisuje autor, jest CSSowym frameworkiem napisanym w PHP. Tyle, że w przeciwieństwie do innych CSSowych frameworków (960, Blueprint) zmiast ograniczać rozszerza możliwości styli. Brzmi fajnie? Ba - jest fajne, jest po prostu bardzo fajne.</p>
<h2>Wymagania i instalacja</h2>
<p>Jedyne czego będziemy potrzebować to PHP 5+. </p>
<p>Instalacja może być dla niektórych troszkę upierdliwa. W sumie jednak ogranicza się do pobrania najnowszej wersji ze <a href="http://github.com/anthonyshort/csscaffold/downloads">strony</a>, rozpakowania oraz przekopiowania z archiwum katalogu (<strong>katalogu</strong>, a nie zawartości) scaffold do katalogu w którym będziemy trzymać arkusze stylu. Czasem(zależne od serwera) trzeba katalogom cache i logs nadać prawa 777.</p>
<p>W praktyce układ katalogów powinien wyglądać następująco:</p>
<p class="insp">
<img src="http://pliki.vivee.info/users/palmiak/scaffold/scaffold_pliki.png" alt="CSS Scaffold - czyli CSS po ludzku" />
</p>
<p>Osoby które chcą, żeby adresy do CSSów wyglądały normalnie muszą jeszcze w katalogu w którym trzymają CSS utworzyć plik .htaccess a w nim wkleić</p>
<div class="php dean_ch" style="white-space: nowrap;">&nbsp;<span class="sy0">&lt;</span>IfModule mod_rewrite.c<span class="sy0">&gt;</span><br />
RewriteEngine &nbsp; on<br />
RewriteCond &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">%</span><span class="br0">&#123;</span>REQUEST_FILENAME<span class="br0">&#125;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -f<br />
RewriteCond &nbsp; &nbsp; <span class="sy0">%</span><span class="br0">&#123;</span>REQUEST_URI<span class="br0">&#125;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\.css$<br />
RewriteRule &nbsp; &nbsp; ^<span class="br0">&#40;</span>.+<span class="br0">&#41;</span>$ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;scaffold<span class="sy0">/</span>index.php?f=<span class="sy0">%</span><span class="br0">&#123;</span>REQUEST_URI<span class="br0">&#125;</span><span class="sy0">&amp;%</span><span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span><br />
<span class="sy0">&lt;/</span>IfModule<span class="sy0">&gt;</span></div>
<p>Żeby zrobić próbę czy wszystko działa należy w naszym katalogu z CSSami (dla przykładu będzie to katalog css) utworzyć plik test.css a w nim napisać (zagnieżdzenie jest poprawne - dojdziemy do tego):</p>
<div class="css dean_ch" style="white-space: nowrap;">body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="re2">:red</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="re2">:blue</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
<p>i wywołać w przeglądarce albo adres_strony/css/scaffold/index.php?f=css/test.css albo, jeżeli użyliśmy regułki w .htaccess, adres_strony/css/test.css. Jeżeli przywita Was komunikat, że nie może znaleźć pliku pomajstrujcie przy ścieżce.</p>
<p>Jeżeli jednak wszystko zadziałało ok to powinniście zobaczyć następujący styl:</p>
<div class="css dean_ch" style="white-space: nowrap;">body<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span> <span class="kw2">red</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p>body a<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span> <span class="kw1">blue</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>Bazując na naszym obrazku i zakładając, że nasz adres to test.pl ścieżką do stylu będzie albo http://test.pl/css/scaffold/index.php?f=css/style.css lub http://test.pl/css/style.css.</p>
<p>Jeżeli wszystko działa na naszej stronie wklejamy:
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;link.html"><span class="kw2">&lt;link</span></span></a> <span class="kw3">rel</span><span class="sy0">=</span><span class="st0">&quot;stylesheet&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;css/scaffold/index.php?f=css/style.css&quot;</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/css&quot;</span> <span class="sy0">/</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span> <br />
&nbsp;</div>
<p>lub</p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;link.html"><span class="kw2">&lt;link</span></span></a> <span class="kw3">rel</span><span class="sy0">=</span><span class="st0">&quot;stylesheet&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;css/style.css&quot;</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/css&quot;</span> <span class="sy0">/</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span> <br />
&nbsp;</div>
<p>Jeżeli wolicie możecie użyć ścieżek absolutnych.</p>
<p>Na koniec drobne ale. Jeżeli nie używacie .htaccess i planujecie używać pierwszej wersji to w przypadku gdy nasza strona znajduje się na tym test.pl w katalogu moja_stronka to ścieżka do stylu będzie wyglądać następująco http://test.pl/moja_stronka/css/scaffold/index.php?f=moja_stronka/css/style.css</p>
<h2>Zagnieżdżenia</h2>
<p>Jak już zauważyliście w poprzednim przykładzie możemy zagnieżdżać kolejne regułki. Dla przykładu kod na listę nieuporządkowaną z linkami i bez kropek.</p>
<div class="css dean_ch" style="white-space: nowrap;">ul <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">list-style</span><span class="re2">:none</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; li <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">5px</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-decoration</span><span class="re2">:none</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;<span class="re2">:hover</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-weight</span><span class="re2">:bold</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
<p>wypluje to nam oczywiście:</p>
<div class="css dean_ch" style="white-space: nowrap;">ul<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">list-style</span><span class="sy0">:</span> <span class="kw2">none</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p>ul li<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">5px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p>ul li a<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-decoration</span><span class="sy0">:</span> <span class="kw2">none</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p>ul li a<span class="re2">:hover</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-weight</span><span class="sy0">:</span> <span class="kw2">bold</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<h2>Stałe</h2>
<p>To jest jedna z tych funkcji za które bardzo polubiłem CSS Scaffold. Bardzo często się zdarza, że klient sobie wymyśli, że kolor czcionki, który to użyliśmy w wielu miejscach jest jednak do bani i chce inny. Znajdź/zastąp i jedziemy, ale tu mozna prościej. Jeżeli używamy jednego koloru to zdefinijmy go jako stałą i najwyżej poprawiajmy w jednym miejscu.</p>
<p>Wystarczy w naszym CSS napisać:</p>
<div class="css dean_ch" style="white-space: nowrap;"><span class="co1">@constants{</span><br />
kolor_tekstu<span class="sy0">:</span> <span class="re0">#ccc</span><span class="sy0">;</span><br />
kolor_ramki<span class="sy0">:</span> <span class="kw2">red</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>a następnie gdy chcemy skorzystać:</p>
<div class="css dean_ch" style="white-space: nowrap;">
body <span class="br0">&#123;</span><br />
<span class="kw1">color</span><span class="sy0">:</span>$kolor_tekstu<span class="sy0">;</span><br />
<span class="kw1">border</span><span class="re2">:<span class="re3">1px</span></span> <span class="kw2">solid</span> $kolor_ramki<span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
&nbsp;</div>
<h2>Mixins</h2>
<p>Czasem zamiast jednego koloru byśmy chcieli wstawiać pewne stałe fragmenty kodu. Nic trudnego:</p>
<div class="css dean_ch" style="white-space: nowrap;">
=test <span class="br0">&#123;</span><br />
<span class="kw1">color</span><span class="re2">:red</span><span class="sy0">;</span><br />
<span class="kw1">font-weight</span><span class="re2">:bold</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>Żeby teraz ten kod wkleić wystarczy do jakiejś naszej regułki dopisać:</p>
<div class="css dean_ch" style="white-space: nowrap;">
body <span class="br0">&#123;</span><br />
+test<span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>W rezultacie otrzymamy:</p>
<div class="css dean_ch" style="white-space: nowrap;">body<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span> <span class="kw2">red</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-weight</span><span class="sy0">:</span> <span class="kw2">bold</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>Prawdziwa siła tkwi jednak w mozliwości parametryzacji. Jeżeli na stronie wszystkie nasze bordery są tego samego stylu i wielkości a tylko kolor się różni to wystarczy nam:</p>
<div class="css dean_ch" style="white-space: nowrap;">=ramka<span class="br0">&#40;</span>$kolor<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border</span><span class="re2">:<span class="re3">1px</span></span> <span class="kw2">solid</span> $kolor<span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>A wywołamy to następująco:
<div class="css dean_ch" style="white-space: nowrap;"><span class="re0">#test1</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; +ramka<span class="br0">&#40;</span><span class="kw2">red</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
&nbsp;<br />
<span class="re0">#test2</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; +ramka<span class="br0">&#40;</span><span class="kw1">blue</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>W rezultacie otrzymamy:
<div class="css dean_ch" style="white-space: nowrap;"><span class="re0">#test1</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">solid</span> <span class="kw2">red</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#test2</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">solid</span> <span class="kw1">blue</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>Możlwe jest jeszcze ustalenie wartości domyślnej:
<div class="css dean_ch" style="white-space: nowrap;">=ramka<span class="br0">&#40;</span>$kolor=<span class="kw1">black</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border</span><span class="re2">:<span class="re3">1px</span></span> <span class="kw2">solid</span> $kolor<span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>Wtedy wywołanie bez parametru spowoduje automatycnze użycie czarnego.</p>
<h2>Liczenie</h2>
<p>Ta funkcjonalność jest może troszkę mniej szpanerska, ale czasem bardzo przydatna. Jeżeli mamy div o szerokości 100px i zaczynamy dodawać padding to musimy ciągle poprawiać szerokość (width+padding=100). Scaffold policzy to za nas:</p>
<div class="css dean_ch" style="white-space: nowrap;">div <span class="br0">&#123;</span><br />
<span class="kw1">padding</span><span class="re2">:0</span> <span class="re3">5px</span><span class="sy0">;</span><br />
<span class="kw1">width</span><span class="re2">:calc</span><span class="br0">&#40;</span><span class="nu0">100</span>-<span class="nu0">2</span>*<span class="nu0">5</span><span class="br0">&#41;</span><span class="kw2">px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>Nic nie szkodzi nam na przeszkodzie, żeby użyć w środku stałych, czy użyć parametru.</p>
<h2>Jeżeli...</h2>
<p>Na koniec jeszcze jedna ciekawa zabawka czyli instrukcja if. Piszemy mixin (jak ktoś ma pomysł na odpowiednik to bardzo zachęcam) o nazwie default_div który ma tam sobie jakieś właściwości oraz parametr <code>round</code>, który przyjmuje true lub false. W zależności od <code>round</code> doklejamy kilka regułek lub nie:</p>
<div class="css dean_ch" style="white-space: nowrap;">=default_div<span class="br0">&#40;</span>$round=false<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="re2">:<span class="re3">10px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="re2">:<span class="re3">2px</span></span><span class="sy0">;</span><br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">@if($round === true) {</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; +border-radius<span class="br0">&#40;</span><span class="re3">5px</span><span class="br0">&#41;</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
<p>border-radius to już taki gotowy mixin, który zajmuje się zaokrągleniami.</p>
<h2>Cache</h2>
<p>Kiedy już skończymy tworzenie naszego stylu pozostaje nam włączyć cache (bo po ciągle ma być generowany na nowo ten sam plik) - żeby to zrobić wystarczy otworzyć plik config.php i przestawić <code>define('SCAFFOLD_PRODUCTION',false);</code> na <code>define('SCAFFOLD_PRODUCTION',true);</code>.</p>
<h2>Czy to wszystko?</h2>
<p>Nie. Oczywiście, że nie. CSS Scaffold posiada także sporo ciekawych opcji a'propos gridów, wiele ciekawych mixinów, flagi, zastępowanie tekstu obrazkami (bardzo fajnie zrobiona funkcja) oraz wiele innych. Do tego mamy jeszcze możliwość dopisywania własnych rzeczy.</p>
<p>Oczywiście trzeba sobie zdawać sprawę, że takie podejście do styli ma swoje wady - każdy nasz plik ze stylem jest obrabiany pzez PHP, wystarczy, że admin nam zrobi prezent w postaci niespodziewanego upgrade'u do wersji w której CSS Scaffold przestanie działać.</p>
<p>Dodatkowo osoba, której przekażemy taką stronę może się zdziwić jak zobaczy co jest w arkuszu.</p>
<p>Zawsze też istnieje możliwość olania projektu przez autora. W obecnej chwili wszystko zdaje się działać stabilnie jednak, jak już wspominałem, przy nowych wersjach PHP teoretycznie mogą się zacząć dziać cuda.</p>
<p>Jest to też pewne dodatkowe obciążenie po stronie serwera, jednak sprawnie działający cache zapewnie rozwiązuje ten problem (przyznaję, iż nie testowałem na stronie o dużym ruchu).</p>
<p>Mimo wszystko polecam spróbować - dla mnie jest to ogromne ułatwienia.</p>
<img src="http://vivee.info/?ak_action=api_record_view&id=1864&type=feed" alt="" /><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fvivee.info%2F2010%2F04%2F23%2Fcss-scaffold-czyli-css-po-ludzku%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://vivee.info/2010/04/23/css-scaffold-czyli-css-po-ludzku/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Budujemy stronę internetową przewijaną w poziomie!</title>
		<link>http://vivee.info/2010/01/12/budujemy-strone-internetowa-przewijana-w-poziomie/</link>
		<comments>http://vivee.info/2010/01/12/budujemy-strone-internetowa-przewijana-w-poziomie/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 21:51:22 +0000</pubDate>
		<dc:creator>agressiva</dc:creator>
				<category><![CDATA[Skrypty client-side]]></category>
		<category><![CDATA[Webmaster]]></category>
		<category><![CDATA[XHTML/CSS]]></category>
		<category><![CDATA[horizontal]]></category>
		<category><![CDATA[horizontal scrolling website]]></category>
		<category><![CDATA[horizontal website]]></category>
		<category><![CDATA[projektowanie stron www]]></category>
		<category><![CDATA[strona pozioma]]></category>
		<category><![CDATA[strony www]]></category>

		<guid isPermaLink="false">http://vivee.info/?p=1402</guid>
		<description><![CDATA[Przeglądając w ostatnim czasie kilka serwisów o tematyce projektowania stron www natknęłam się na ranking najciekawszych projektów stron www przewijanych w poziomie. Strony takie stały się w ostatnim czasie bardzo popularne. Najczęściej służą jako portfolio graficzne, fotograficzne. Mimo swojej ograniczonej struktury dają nam całkiem spore pole do popisu. Wszystko zależy od naszej wyobraźni graficznej. Przedstawię [...]]]></description>
			<content:encoded><![CDATA[<p>Przeglądając w ostatnim czasie kilka serwisów o tematyce projektowania stron www natknęłam się na ranking najciekawszych projektów <strong>stron www przewijanych w poziomie</strong>.<br />
Strony takie stały się w ostatnim czasie bardzo popularne. Najczęściej służą jako portfolio graficzne, fotograficzne. Mimo swojej ograniczonej struktury dają nam całkiem spore pole do popisu. Wszystko zależy od naszej wyobraźni graficznej.<br />
Przedstawię Wam jedną z technik projektowania takich stron...<br />
<span id="more-1402"></span></p>
<p class="insp">
<a class="button" href="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/"><img src="http://pliki.vivee.info/demo.jpg" alt="demo" /></a>
</p>
<h2>HTML</h2>
<p>Stronka, którą przygotowałam w celu zademonstrowania Wam tej techniki ma bardzo prostą konstrukcję HTML. Najważniejsze <code>divy</code> to te oznaczone klasą <code>box</code>. To właśnie one ustawione są na naszej stronie jeden za drugim, narzuconą mają określoną szerokość oraz margin z prawej strony aby zachować między nimi odpowiednią odległość.  </p>
<p>Ogólna struktura przedstawia się następująco:</p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;page&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span></p>
<p><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;h1.html"><span class="kw2">&lt;h1</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;title&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Horizontal Scrolling Website <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;span&amp;gt;.html"><span class="kw2">&lt;span&gt;</span></span></a></span>tutorial od <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;a.html"><span class="kw2">&lt;a</span></span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://vivee.info&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>vivee.info<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>span&gt;&lt;<span class="sy0">/</span>h1&gt;</span><br />
&nbsp; <br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;menu&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul&amp;gt;.html"><span class="kw2">&lt;ul&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#o_mnie&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>o mnie<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#oferta&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>oferta<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#webdesign&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>webdesign<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#fotografia&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>fotografia<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#linki&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>linki<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#kontakt&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>kontakt<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;end&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
&nbsp; <br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;content&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;box&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;o_mnie&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;h2&amp;gt;.html"><span class="kw2">&lt;h2&gt;</span></span></a></span>O mnie<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/h2&amp;gt;.html"><span class="kw2">&lt;/h2&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span> &nbsp; &nbsp;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;box&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;oferta&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;h2&amp;gt;.html"><span class="kw2">&lt;h2&gt;</span></span></a></span>Oferta<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/h2&amp;gt;.html"><span class="kw2">&lt;/h2&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span> &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;box&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;webdesign&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span> &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;h2&amp;gt;.html"><span class="kw2">&lt;h2&gt;</span></span></a></span>Webdesign<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/h2&amp;gt;.html"><span class="kw2">&lt;/h2&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span> &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;box&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;fotografia&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;h2&amp;gt;.html"><span class="kw2">&lt;h2&gt;</span></span></a></span>Fotografia<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/h2&amp;gt;.html"><span class="kw2">&lt;/h2&gt;</span></span></a></span> &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;box&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;linki&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span> &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;h2&amp;gt;.html"><span class="kw2">&lt;h2&gt;</span></span></a></span>Linki<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/h2&amp;gt;.html"><span class="kw2">&lt;/h2&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span> &nbsp; &nbsp;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;box&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;kontakt&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span> &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;h2&amp;gt;.html"><span class="kw2">&lt;h2&gt;</span></span></a></span>Kontakt<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/h2&amp;gt;.html"><span class="kw2">&lt;/h2&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; <br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;end&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
&nbsp; <br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
&nbsp;</div>
<p>To co zamieścimy w divach <code>box</code> zależy tylko i wyłącznie od nas. Jak widać ze wersji demo ja postanowiłam podzielić stronkę na kilka działów, ale nie koniecznie trzeba tak robić. </p>
<h2>CSS</h2>
<p>Najważniejszą kwestią w stylowaniu naszej poziomej strony jest nadanie <code>&lt;body&gt;</code> odpowiedniej szerokości (takiej, w której zmieści się cała zawartość strony) - niestety jest to technika "na sztywno", ale połączeniu z wyfloatowanymi divami o klasie <code>box</code> sprawia, że wszystko układa się w płaszczyźnie horyzontalnej.<br />
W naszym przypadku <code>&lt;body&gt;</code> ma nadaną szerokość 5650px. </p>
<p>Oto wszystkie najbardziej kluczowe elementy w CSS:</p>
<div class="css dean_ch" style="white-space: nowrap;">
body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="re2">:url</span><span class="br0">&#40;</span>flightplan-l-<span class="nu0">1920</span><span class="re1">.gif</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span> <span class="kw2">fixed</span> &nbsp;<span class="kw2">center</span> <span class="kw2">center</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="re2">:<span class="re3">5650px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-family</span><span class="re2">:Georgia</span>, <span class="st0">&quot;Times New Roman&quot;</span>, Times, <span class="kw2">serif</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#page</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">float</span><span class="re2">:left</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="re2">:<span class="re3">10px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="re2">:<span class="re3">0px</span></span> <span class="nu0">0</span> <span class="nu0">0</span> <span class="re3">0px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">position</span><span class="re2">:relative</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p>h1<span class="re0">#title</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-size</span><span class="re2">:<span class="re3">46px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#FFF</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="re2">:<span class="re3">20px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="re2">:<span class="re3">100px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="re2">:<span class="re3">800px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">position</span><span class="re2">:fixed</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p>h1<span class="re0">#title</span> span <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">display</span><span class="re2">:block</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-size</span><span class="re2">:<span class="re3">15px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="re2">:0</span> <span class="nu0">0</span> <span class="nu0">0</span> <span class="re3">525px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">line-height</span><span class="re2">:<span class="re3">8px</span></span><span class="sy0">;</span>&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="br0">&#125;</span></p>
<p>h1<span class="re0">#title</span> span a <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#e3e0d5</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p>h1<span class="re0">#title</span> span a<span class="re2">:hover</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#eceae1</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="re2">:<span class="re3">32px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="re2">:<span class="re3">80px</span></span> <span class="nu0">0</span> <span class="nu0">0</span> <span class="re3">15px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">position</span><span class="re2">:fixed</span><span class="sy0">;</span> <br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> ul <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">list-style-type</span><span class="re2">:none</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> ul li <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">display</span><span class="re2">:inline</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> ul li a <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-size</span><span class="re2">:<span class="re3">12px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="re2">:0</span> <span class="re3">5px</span> <span class="nu0">0</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="re2">:<span class="re3">6px</span></span> <span class="re3">4px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">display</span><span class="re2">:block</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">float</span><span class="re2">:left</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#afa991</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span><span class="re0">#3c3a30</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-weight</span><span class="re2">:bold</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border-right</span><span class="re2">:<span class="re3">3px</span></span> <span class="kw2">solid</span> <span class="re0">#817b61</span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border-bottom</span><span class="re2">:<span class="re3">3px</span></span> <span class="kw2">solid</span> <span class="re0">#817b61</span><span class="sy0">;</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> ul li a<span class="re2">:hover</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#e3e0d5</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border-right</span><span class="re2">:<span class="re3">3px</span></span> <span class="kw2">solid</span> <span class="re0">#8c8772</span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border-bottom</span><span class="re2">:<span class="re3">3px</span></span> <span class="kw2">solid</span> <span class="re0">#8c8772</span><span class="sy0">;</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#content</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="re2">:<span class="re3">130px</span></span> <span class="nu0">0</span> <span class="nu0">0</span> <span class="re3">15px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="re1">.box</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="re2">:<span class="re3">800px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="re2">:<span class="re3">15px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">float</span><span class="re2">:left</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-size</span><span class="re2">:<span class="re3">12px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">line-height</span><span class="re2">:<span class="re3">19px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-align</span><span class="re2">:justify</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="re2">:url</span><span class="br0">&#40;</span>tlo<span class="re1">.png</span><span class="br0">&#41;</span> <span class="kw2">repeat</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="kw2">auto</span> !important<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">min-height</span><span class="sy0">:</span> <span class="re3">300px</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">300px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="re2">:0</span> <span class="re3">40px</span> <span class="nu0">0</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; -moz-border-radius<span class="re2">:<span class="re3">5px</span></span><span class="sy0">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; -webkit-border-radius<span class="re2">:<span class="re3">5px</span></span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; border-radius<span class="re2">:<span class="re3">5px</span></span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp;<br />
<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>Pozostałe ostylowane elementy htmla można podejrzeć w pliku <a href="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/style.css">style.css</a>.</p>
<h2>Przewiń do... czyli zastosowanie Horizontal Tiny Scrolling</h2>
<p>Dla ułatwienia przewijania naszej strony zastosowałam skrypt <a href="http://lab.centralscrutinizer.it/the-tiny-scrollings/"><strong>Horizontal Tiny Scrolling</strong></a>. Pozwala on automatycznie przewinąć stronę do boxa dzięki kliknięciu w odpowiedni link w menu.<br />
Jak to działa?<br />
Cały plugin składa się tylko z jednego pliku <a href="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/thw.js">thw.js</a> i nie wymaga żadnej konfiguracji z naszej strony.<br />
Jedyną sprawą o jakiej musimy pamiętać to forma linków w menu oraz id divów do których te linki będą nas kierować. Należy pamiętać, że w <code>href=""</code> oraz w <code>id=""</code> diva do które będzie kierować musi znaleźć się taka sama wartość. Na przykładzie niżej jest to <strong>#oferta</strong>.<br />
Przykład:<br />
Tak wygląda link w menu </p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#oferta&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>oferta<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp;</div>
<p>Div do którego będzie nas przenosił:</p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;box&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;oferta&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;h2&amp;gt;.html"><span class="kw2">&lt;h2&gt;</span></span></a></span>Oferta<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/h2&amp;gt;.html"><span class="kw2">&lt;/h2&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span> &nbsp; <br />
&nbsp;</div>
<p>Jest to cała filozofia korzystania z <strong>Tiny Scrolling</strong>, ponadto skrypt ten zapewnia bezproblemowe przewijanie strony za pomocą scrolla w myszy komputerowej.</p>
<h2>Na koniec... trochę inspiracji</h2>
<p class="insp">
<a href="http://www.ifekt.net/"><img src="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/www/01.jpg" alt="Budujemy stronę internetową przewijaną w poziomie!" /></a>
</p>
<p class="insp">
<a href="http://www.graphic-evidence.co.uk/"><img src="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/www/02.jpg" alt="Budujemy stronę internetową przewijaną w poziomie!" /></a>
</p>
<p class="insp">
<a href="http://www.hasrimy.com/"><img src="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/www/03.jpg" alt="Budujemy stronę internetową przewijaną w poziomie!" /></a>
</p>
<p class="insp">
<a href="http://www.thehorizontalway.com/"><img src="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/www/04.jpg" alt="Budujemy stronę internetową przewijaną w poziomie!" /></a>
</p>
<p class="insp">
<a href="http://deanoakley.com/"><img src="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/www/05.jpg" alt="Budujemy stronę internetową przewijaną w poziomie!" /></a>
</p>
<p class="insp">
<a href="http://frontenddesignconference.com/"><img src="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/www/06.jpg" alt="Budujemy stronę internetową przewijaną w poziomie!" /></a>
</p>
<p class="insp">
<a href="http://vanityclaire.com/"><img src="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/www/07.jpg" alt="Budujemy stronę internetową przewijaną w poziomie!" /></a>
</p>
<p class="insp">
<a href="http://www.ericj.se/"><img src="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/www/08.jpg" alt="Budujemy stronę internetową przewijaną w poziomie!" /></a>
</p>
<p class="insp">
<a href="http://www.charliegentle.co.uk/"><img src="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/www/09.jpg" alt="Budujemy stronę internetową przewijaną w poziomie!" /></a>
</p>
<p class="insp">
<a href="http://ladio.ru/flash/en/index.html"><img src="http://pliki.vivee.info/users/agressiva/horizontal_scrolling/www/10.jpg" alt="Budujemy stronę internetową przewijaną w poziomie!" /></a></p>
<img src="http://vivee.info/?ak_action=api_record_view&id=1402&type=feed" alt="" /><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fvivee.info%2F2010%2F01%2F12%2Fbudujemy-strone-internetowa-przewijana-w-poziomie%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://vivee.info/2010/01/12/budujemy-strone-internetowa-przewijana-w-poziomie/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Menu przesuwane</title>
		<link>http://vivee.info/2010/01/06/menu-przesuwane/</link>
		<comments>http://vivee.info/2010/01/06/menu-przesuwane/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 13:20:38 +0000</pubDate>
		<dc:creator>prz-emo</dc:creator>
				<category><![CDATA[XHTML/CSS]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[menu]]></category>

		<guid isPermaLink="false">http://vivee.info/?p=1582</guid>
		<description><![CDATA[Często zastanawiasz się jak zrobić obrazkowe menu, aby szybko się ładowało i zajmowało jak najmniej miejsca? Zastosuj do niego CSS i tylko jeden plik graficzny. Na czym to polega? Każdy element wczytuje tylko fragment obrazka – tego samego. Dlatego raz załadowany plik jest ciągle "przesuwany". Zacznijmy od przygotowania pliku graficznego. Będzie on się składał z [...]]]></description>
			<content:encoded><![CDATA[<p>Często zastanawiasz się jak zrobić obrazkowe menu, aby szybko się ładowało i zajmowało jak najmniej miejsca? Zastosuj do niego CSS i tylko jeden plik graficzny.<span id="more-1582"></span></p>
<p>Na czym to polega? Każdy element wczytuje tylko fragment obrazka – tego samego. Dlatego raz załadowany plik jest ciągle "przesuwany".</p>
<p>Zacznijmy od przygotowania pliku graficznego. Będzie on się składał z "potrójnego menu", mianowicie: tworzymy nowy plik o wysokości trzykrotnie większej niż docelowe menu. Na samej górze umiejscowiłem samo tło, bez napisów. Niżej znajdują się linkami(napisy), a na samym dole<br />
- hovery (napis + podkreślenie). Efekt:</p>
<p class="insp">
<a href="http://pliki.vivee.info/users/palmiak/menu_przesuwane/menu.png"><img src="http://pliki.vivee.info/users/palmiak/menu_przesuwane/menu_m.png" alt="" /></a>
</p>
<h2>HTML</h2>
<p>Nasz kod oprzemy na liście. W tym celu tworzymy następującą strukturę:</p>
<div class="html dean_ch" style="white-space: nowrap;"><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul.html"><span class="kw2">&lt;ul</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;menu&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;I.J. Paderewski&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>I.J. Paderewski<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Centrum&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Centrum<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Muzeum&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Muzeum<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Noclegi&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Noclegi<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Aktualności&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Aktualności<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Kalendarz&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Kalendarz<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Sponsorzy&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Sponsorzy<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Wydawnictwa&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Wydawnictwa<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Kontakt&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Kontakt<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span></div>
<p>Dodatkowo każdy element listy będzie posiadał inaczej przesunięte tło, dlatego dodajemy do każdego li classę:</p>
<div class="html dean_ch" style="white-space: nowrap;"><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul.html"><span class="kw2">&lt;ul</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;menu&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men1”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;I.J. Paderewski&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>I.J. Paderewski<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men2”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Centrum&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Centrum<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men3”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Muzeum&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Muzeum<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men4”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Noclegi&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Noclegi<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men5”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Aktualności&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Aktualności<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men6”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Kalendarz&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Kalendarz<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men7”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Sponsorzy&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Sponsorzy<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men8”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Wydawnictwa&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Wydawnictwa<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men9”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Kontakt&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Kontakt<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span></div>
<p>Nasz html jest gotowy, przejdźmy więc do CSS który jest tutaj kluczowym elementem.</p>
<h2>CSS</h2>
<p>Osobiście często na samym początku dodaję kilka właściwości, które później ułatwiają pisanie kodu:</p>
<div class="css dean_ch" style="white-space: nowrap;">* <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-decoration</span><span class="sy0">:</span> <span class="kw2">none</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-family</span><span class="sy0">:</span> tahoma<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background-repeat</span><span class="sy0">:</span> <span class="kw2">no-repeat</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-size</span><span class="sy0">:</span> <span class="re3">12px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#dbd786</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>Samemu menu dodamy standardowe style:</p>
<div class="html dean_ch" style="white-space: nowrap;">#menu {<br />
&nbsp; &nbsp; &nbsp; &nbsp; list-style: none;<br />
&nbsp; &nbsp; &nbsp; &nbsp; display: block;<br />
&nbsp; &nbsp; &nbsp; &nbsp; clear: both;<br />
&nbsp; &nbsp; &nbsp; &nbsp; width: 879px;<br />
&nbsp; &nbsp; &nbsp; &nbsp; height: 45px;<br />
&nbsp; &nbsp; &nbsp; &nbsp; background-image: url('images/menu.png');<br />
&nbsp; &nbsp; &nbsp; &nbsp; padding: 0 36px 0 25px; <br />
}</p>
<p>#menu li {<br />
&nbsp; &nbsp; &nbsp; &nbsp; display: block;<br />
&nbsp; &nbsp; &nbsp; &nbsp; float: left;<br />
}</p>
<p>#menu li a {<br />
&nbsp; &nbsp; &nbsp; &nbsp; display: block; <br />
&nbsp; &nbsp; &nbsp; &nbsp; height: 45px;<br />
&nbsp; &nbsp; &nbsp; &nbsp; font-size: 11px;<br />
}</div>
<p>Jak widać, nie ma nic specjalnego, poza tym, iż ustaliłem ogólne wartości dla każdego elementu listy oraz linków. Menu otrzymało jako tło obrazek bez żadnych parametrów przesunięcia, ponieważ domyślnie nie jest on wcale przesunięty. Czas na ustawienie tła i przypisanie go do poszczególnych class.</p>
<p>Musimy wyświetlić tylko zaznaczony na obrazku fragment pliku:</p>
<p class="insp">
<img src="http://pliki.vivee.info/users/palmiak/menu_przesuwane/link.png" alt="" />
</p>
<p>Dlatego, podajemy w CSS, do <code>a</code> w elemencie o id <code>menu</code> i class <code>.menu1</code>:
<ul>
<li>szerokość fragmentu</li>
<li>obrazek, który będzie tłem</li>
<li>przesunięcie obrazka</li>
</ul>
<p>*opcjonalnie można dodać inne parametry, w moim przypadku jest to prawy margines</p>
<div class="html dean_ch" style="white-space: nowrap;">#menu .men1 a { <br />
&nbsp; &nbsp; &nbsp; &nbsp; width: 118px; <br />
&nbsp; &nbsp; &nbsp; &nbsp; background-image: url('../images/menu.png');<br />
&nbsp; &nbsp; &nbsp; &nbsp; background-position: -25px -45px; <br />
&nbsp; &nbsp; &nbsp; &nbsp; margin-right: 21px;<br />
}</div>
<p>Krótkie wyjaśnienie:  <code>background-position</code> określa, o ile tło ma być przesunięte względem lewej i górnej krawędzi, czyli w lewo i w dół. U nas natomiast, musimy zrobić na odwrót – obrazek przemieszczamy w górę i w prawo – stąd podajemy wartości ujemne. Atrybuty dla tła, możemy także zapisać w skróconej formie:<br />
<code>background: url('../images/menu.png') -25px -45px;</code></p>
<p>Podobnie postępujemy w wypadku hovera, którym jest fragment niżej:</p>
<p class="insp">
<img src="http://pliki.vivee.info/users/palmiak/menu_przesuwane/hover.png" alt="" />
</p>
<p>Nasz kod wygląda tak:</p>
<div class="css dean_ch" style="white-space: nowrap;"><span class="re0">#menu</span> <span class="re1">.men1</span> a<span class="re2">:hover</span> &nbsp;<span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">25px</span> -<span class="re3">90px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>Nie musimy tutaj określać już nic, poza przesunięciem i obrazkiem tła. Analogicznie postępujemy z każdym kolejnym linkiem, tworząc taki oto kod css:</p>
<div class="css dean_ch" style="white-space: nowrap;"><span class="re0">#menu</span> <span class="re1">.men1</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">118px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">25px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">21px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men1</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men1</span> a<span class="re1">.active</span> &nbsp;<span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">25px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men2</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">64px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">164px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">21px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men2</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men2</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">164px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men3</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">63px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">249px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">21px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men3</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men3</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">249px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men4</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">56px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">333px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">19px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men4</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men4</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">333px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men5</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">90px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">408px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men5</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men5</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">408px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men6</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">78px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">518px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men6</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men6</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">518px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men7</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">78px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">616px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">22px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men7</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men7</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">616px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men8</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">106px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">716px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">21px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men8</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men8</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">716px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men9</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">61px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">843px</span> -<span class="re3">45px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men9</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men9</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">843px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
&nbsp;</div>
<p>Pozostają nam 2 problemy. Dodaliśmy tekst w kodzie html, i jest on wyświetlany na naszych obrazkach. Ukryjemy go, dodając do li wcięcie – o dowolnej wartości. Ja na wszelki wypadek podaję bardzo duże, w tym przypadku będzie to -30000px.<br />
<code>text-indent: -30000px;</code></p>
<p>Natomiast drugim problemem są nieładnie wyglądające ramki tworzące się wokół linków podczas kliknięcia i przytrzymania odnośnika. Niektórzy posługujący się samą klawiaturą do przeglądania stron widzą dzięki nim gdzie się znajdują – tutaj jednak psują one całe piękno menu. Usuniemy je zatem, za pomocą<br />
outline: none; </p>
<p>Dodatkowo, jeśli chcemy, aby zaznaczyć użytkownikowi przeglądającemu stronę, gdzie się znajduje, możemy dodać classę odpowiedzialną za to. W kodzie html wygląda to tak:</p>
<div class="html dean_ch" style="white-space: nowrap;"><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men1”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">class</span><span class="sy0">=</span>”active” <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;I.J. Paderewski&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>I.J. Paderewski<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span></div>
<p>W CSS musimy tylko dodać do każdej definicji hovera dopisać <code>#menu classa a.active,</code> np.</p>
<p><code>#menu .men1 a:hover, #menu men1 a.active</code></p>
<p>W rezultacie czego otrzymujemy gotowe menu. Całość:</p>
<p>HTML:</p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul.html"><span class="kw2">&lt;ul</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;menu&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men1”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">class</span><span class="sy0">=</span>”active” <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;I.J. Paderewski&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>I.J. Paderewski<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men2”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Centrum&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Centrum<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men3”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Muzeum&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Muzeum<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men4”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Noclegi&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Noclegi<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men5”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Aktualności&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Aktualności<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men6”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Kalendarz&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Kalendarz<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men7”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Sponsorzy&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Sponsorzy<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men8”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Wydawnictwa&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Wydawnictwa<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span>”men9”&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;Kontakt&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Kontakt<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span></div>
<p>CSS:</p>
<div class="css dean_ch" style="white-space: nowrap;">* <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-decoration</span><span class="sy0">:</span> <span class="kw2">none</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-family</span><span class="sy0">:</span> tahoma<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background-repeat</span><span class="sy0">:</span> <span class="kw2">no-repeat</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-size</span><span class="sy0">:</span> <span class="re3">12px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#dbd786</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">list-style</span><span class="sy0">:</span> <span class="kw2">none</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">clear</span><span class="sy0">:</span> <span class="kw2">both</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">879px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">45px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background-image</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span> <span class="re3">36px</span> <span class="nu0">0</span> <span class="re3">25px</span><span class="sy0">;</span> <br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> li <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-indent</span><span class="sy0">:</span> -<span class="re3">30000px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> li a <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">45px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">outline</span><span class="sy0">:</span> <span class="kw2">none</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-size</span><span class="sy0">:</span> <span class="re3">11px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men1</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">118px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">25px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">21px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men1</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men1</span> a<span class="re1">.active</span> &nbsp;<span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">25px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men2</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">64px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">164px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">21px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men2</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men2</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">164px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men3</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">63px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">249px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">21px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men3</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men3</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">249px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men4</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">56px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">333px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">19px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men4</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men4</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">333px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men5</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">90px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">408px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men5</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men5</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">408px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men6</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">78px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">518px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men6</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men6</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">518px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men7</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">78px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">616px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">22px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men7</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men7</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">616px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men8</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">106px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">716px</span> -<span class="re3">45px</span><span class="sy0">;</span> <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">21px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men8</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men8</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">716px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></p>
<p><span class="re0">#menu</span> <span class="re1">.men9</span> a <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">61px</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">843px</span> -<span class="re3">45px</span><span class="sy0">;</span><span class="br0">&#125;</span><br />
<span class="re0">#menu</span> <span class="re1">.men9</span> a<span class="re2">:hover</span>, <span class="re0">#menu</span> <span class="re1">.men9</span> a<span class="re1">.active</span> <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'../images/menu.png'</span><span class="br0">&#41;</span> -<span class="re3">843px</span> -<span class="re3">90px</span><span class="sy0">;</span><span class="br0">&#125;</span></div>
<p>Efekt końcowy: <a href="http://paderewski.prz-emo.com">http://paderewski.prz-emo.com</a></p>
<p>Sam sposób można zastosować w wielu przypadkach, np. jeśli mamy linki którymi są ikonki. Podobny sposób stosuje np. Allegro, ale to zostawiam Wam samym do sprawdzenia <img src='http://vivee.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Dziękuję za uwagę i życzę miłego kodowania <img src='http://vivee.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<img src="http://vivee.info/?ak_action=api_record_view&id=1582&type=feed" alt="" /><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fvivee.info%2F2010%2F01%2F06%2Fmenu-przesuwane%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://vivee.info/2010/01/06/menu-przesuwane/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Menu akordeonowe z odrobiną CSS3</title>
		<link>http://vivee.info/2009/07/06/menu-akordeonowe-z-odrobina-css3/</link>
		<comments>http://vivee.info/2009/07/06/menu-akordeonowe-z-odrobina-css3/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 20:18:48 +0000</pubDate>
		<dc:creator>agressiva</dc:creator>
				<category><![CDATA[Skrypty client-side]]></category>
		<category><![CDATA[Webmaster]]></category>
		<category><![CDATA[XHTML/CSS]]></category>
		<category><![CDATA[akordeon]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[menu akordeonowe]]></category>
		<category><![CDATA[menu rozwijane]]></category>

		<guid isPermaLink="false">http://vivee.info/?p=1044</guid>
		<description><![CDATA[W tym artykule dowiecie się w jaki sposób stworzyć menu akordeonowe, które funkcjonuje m.in. na stronie www.apple.com. Na tej samej zasadzie działa również moje portfolio, gdzie każda zakładka działa jak osobny dział na stronie (www.waterdesign.pl). Krok 1 - Struktura html naszej rozwijanej listy Całe menu akordeonowe oparte jest na liście zagnieżdżonej oraz divach, w których [...]]]></description>
			<content:encoded><![CDATA[<p>W tym artykule dowiecie się w jaki sposób stworzyć menu akordeonowe, które funkcjonuje m.in. na stronie <a href="http://www.apple.com/downloads/">www.apple.com</a>. Na tej samej zasadzie działa również moje portfolio, gdzie każda zakładka działa jak osobny dział na stronie (<a href="http://www.waterdesign.pl">www.waterdesign.pl</a>).<br />
<span id="more-1044"></span></p>
<p class="insp">
<a href="http://pliki.vivee.info/acordeon/"><img src="http://pliki.vivee.info/demo.jpg" alt="demo" /></a>
</p>
<h2>Krok 1 - Struktura html naszej rozwijanej listy</h2>
<p>Całe menu akordeonowe oparte jest na liście zagnieżdżonej oraz divach, w których zamieszczane są pozycje drugiego zagłębienia menu oraz ewentualna treść nie będąca listą. </p>
<p>Pojedyncza zakładka od strony htmlowej w naszym przykładzie wygląda następująco:</p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul&amp;gt;.html"><span class="kw2">&lt;ul&gt;</span></span></a></span></p>
<p><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;kategoria&quot;</span>&gt;&lt;div <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;naglowek&quot;</span>&gt;&lt;a <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;link rss&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Subscribe RSS<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul.html"><span class="kw2">&lt;ul</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;fade&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li&amp;gt;.html"><span class="kw2">&lt;li&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul&amp;gt;.html"><span class="kw2">&lt;ul&gt;</span></span></a></span><br />
<span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://pl.wikipedia.org/wiki/RSS&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>RSS - Wikipedia<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp;<span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://vivee.info/2009/02/15/jak-wyizolowac-liczbe-subskrybentow-rss-korzystajac-z-feedburnera/&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>RSS - korzystanie z feedburnera<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp;<span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://dobreprogramy.pl/index.php?dz=1&amp;t=95&amp;Czytniki+RSS&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Czytniki RSS<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span> &nbsp; <br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/li&amp;gt;.html"><span class="kw2">&lt;/li&gt;</span></span></a></span> &nbsp; <br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/li&amp;gt;.html"><span class="kw2">&lt;/li&gt;</span></span></a></span></p>
<p><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span><br />
&nbsp;</div>
<p><strong>Wygląd:</strong></p>
<p class="picture"><a href="http://pliki.vivee.info/acordeon/1.jpg"><img src="http://pliki.vivee.info/acordeon/1m.jpg" alt="Full of colours" /></a></p>
<p>Pierwsza pozycja w menu (<code>li.kategoria</code>) jest zawsze widoczna. Elementem, który dzięki funkcji javascript będzie chowany, a po kliknieciu na <code>li.kategoria</code> będzie ukazywany jest <code>ul.fade</code>. </p>
<p>Całkowity kod html naszej pokazówki przestawia się tak jak widać to poniżej:</p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;page&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul&amp;gt;.html"><span class="kw2">&lt;ul&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;kategoria&quot;</span>&gt;&lt;div <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;naglowek&quot;</span>&gt;&lt;a <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;link rss&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Subscribe RSS<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul.html"><span class="kw2">&lt;ul</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;fade&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li&amp;gt;.html"><span class="kw2">&lt;li&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul&amp;gt;.html"><span class="kw2">&lt;ul&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://pl.wikipedia.org/wiki/RSS&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>RSS - Wikipedia<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://vivee.info/2009/02/15/jak-wyizolowac-liczbe-subskrybentow-rss-korzystajac-z-feedburnera/&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>RSS - korzystanie z feedburnera<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://dobreprogramy.pl/index.php?dz=1&amp;t=95&amp;Czytniki+RSS&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Czytniki RSS<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span> &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/li&amp;gt;.html"><span class="kw2">&lt;/li&gt;</span></span></a></span> &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/li&amp;gt;.html"><span class="kw2">&lt;/li&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;kategoria&quot;</span>&gt;&lt;div <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;naglowek&quot;</span>&gt;&lt;a <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;link facebook&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Facebook<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul.html"><span class="kw2">&lt;ul</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;fade&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li&amp;gt;.html"><span class="kw2">&lt;li&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul&amp;gt;.html"><span class="kw2">&lt;ul&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://www.facebook.com/&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Facebook - Main Page<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://www.facebook.com/&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Facebook - Rejestracja<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://www.facebook.com/pages/create.php&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Facebook - Stwórz swoją stronę<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span> &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/li&amp;gt;.html"><span class="kw2">&lt;/li&gt;</span></span></a></span> &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/li&amp;gt;.html"><span class="kw2">&lt;/li&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;kategoria&quot;</span>&gt;&lt;div <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;naglowek&quot;</span>&gt;&lt;a <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;link technorati&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Technorati<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul.html"><span class="kw2">&lt;ul</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;fade&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li&amp;gt;.html"><span class="kw2">&lt;li&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul&amp;gt;.html"><span class="kw2">&lt;ul&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://technorati.com/&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Technorati - Main Page<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://technorati.com/technology/&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Technorati - Technology<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://technorati.com/technology/it/&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Technorati - IT<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/li&amp;gt;.html"><span class="kw2">&lt;/li&gt;</span></span></a></span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/li&amp;gt;.html"><span class="kw2">&lt;/li&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;kategoria&quot;</span>&gt;&lt;div <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;naglowek&quot;</span>&gt;&lt;a <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;link twitter&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Twitter<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul.html"><span class="kw2">&lt;ul</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;fade&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li&amp;gt;.html"><span class="kw2">&lt;li&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul&amp;gt;.html"><span class="kw2">&lt;ul&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://twitter.com/&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Twitter - Main Page<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;https://twitter.com/signup&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Twitter - Join<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;https://twitter.com/viveeinfo&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Vivee na Twitterze<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/li&amp;gt;.html"><span class="kw2">&lt;/li&gt;</span></span></a></span> &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/li&amp;gt;.html"><span class="kw2">&lt;/li&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li.html"><span class="kw2">&lt;li</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;kategoria&quot;</span>&gt;&lt;div <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;naglowek&quot;</span>&gt;&lt;a <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;link vimeo&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Vimeo<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul.html"><span class="kw2">&lt;ul</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;fade&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;li&amp;gt;.html"><span class="kw2">&lt;li&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;ul&amp;gt;.html"><span class="kw2">&lt;ul&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://vimeo.com/&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Vimeo - Main Page<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://vimeo.com/join&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Vimeo - Join<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;li&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://vimeo.com/upload/video&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>Vimeo - Upload<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>li&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span> &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/li&amp;gt;.html"><span class="kw2">&lt;/li&gt;</span></span></a></span> &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/li&amp;gt;.html"><span class="kw2">&lt;/li&gt;</span></span></a></span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </p>
<p><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/ul&amp;gt;.html"><span class="kw2">&lt;/ul&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
&nbsp;</div>
<p>Niektóre dodatkowe klasy w htmlu zostały tutaj wprowadzone celowo w celu upiększeń poszczególnych zakładek pierwszego poziomu. Także na klasy typu <code>"twitter"</code>, <code>"vimeo"</code>, itp w swoich wersjach menu akordeonowego nie musicie zwracać uwagi (chyba, że tak jak tutaj chcecie aby każda zakładka miała inny kolor, ikonkę, itp).</p>
<h2>Upiększanie menu, czyli struktura CSS</h2>
<p>Jak łatwo jest się domyślić każdy kod CSS, który decydować będzie o wyglądzie może być inny. </p>
<div class="css dean_ch" style="white-space: nowrap;">
* <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="re2">:0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="re2">:0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
img <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border</span><span class="re2">:0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span><span class="re0">#f4f3ef</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-align</span><span class="re2">:center</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="re0">#page</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="re2">:<span class="re3">800px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-align</span><span class="re2">:left</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="re2">:0</span> <span class="kw2">auto</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="re0">#page</span> ul <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">list-style-type</span><span class="re2">:none</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="re2">:100</span>%<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="re2">:<span class="re3">20px</span></span> <span class="nu0">0</span> <span class="nu0">0</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
ul ul <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="re2">:url</span><span class="br0">&#40;</span>img/tlo<span class="re1">.png</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="re2">:0</span>!important<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
li <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font</span><span class="re2">:<span class="re3">22px</span></span> <span class="st0">&quot;Trebuchet MS&quot;</span>, Tahoma, Arial, Helvetica, <span class="kw2">sans-serif</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">word-spacing</span><span class="re2">:<span class="re3">3px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">vertical-align</span><span class="re2">:middle</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
div<span class="re1">.text</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="re2">:<span class="re3">780px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="re2">:<span class="re3">10px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">line-height</span><span class="re2">:<span class="re3">20px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-align</span><span class="re2">:justify</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font</span><span class="re2">:<span class="re3">11px</span></span> Tahoma, Arial, Helvetica, <span class="kw2">sans-serif</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">letter-spacing</span><span class="re2">:<span class="re3">1px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#7a7a7a</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="re2">:url</span><span class="br0">&#40;</span><span class="kw2">text</span><span class="re1">.png</span><span class="br0">&#41;</span> <span class="kw2">repeat-x</span> <span class="kw1">top</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; -moz-border-radius<span class="sy0">:</span> <span class="re3">5px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; -webkit-border-radius<span class="sy0">:</span> <span class="re3">5px</span><span class="sy0">;</span> &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; border-radius<span class="sy0">:</span> <span class="re3">5px</span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
div<span class="re1">.text</span> p <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="re2">:0</span> <span class="nu0">0</span> <span class="re3">10px</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span> &nbsp; &nbsp; &nbsp; </p>
<p>div<span class="re1">.text</span> ul <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">list-style-type</span><span class="re2">:none</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p>div<span class="re1">.text</span> ul li <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font</span><span class="re2">:<span class="re3">12px</span></span> Helvetica, Tahoma, Arial, Geneva, <span class="kw2">sans-serif</span>!important<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="re2">:<span class="re3">2px</span></span> <span class="nu0">0</span>!important<span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p>div<span class="re1">.text</span> ul li a <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#585858</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-weight</span><span class="re2">:bold</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-decoration</span><span class="re2">:none</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p>div<span class="re1">.text</span> ul li a<span class="re2">:hover</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#08a2b9</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="re1">.kategoria</span> a<span class="re1">.link</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">display</span><span class="re2">:block</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="re2">:<span class="re3">780px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="re2">:<span class="re3">22px</span></span> <span class="nu0">0</span> <span class="re3">5px</span> <span class="re3">20px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font</span><span class="re2">:<span class="re3">22px</span></span> <span class="st0">&quot;Trebuchet MS&quot;</span>, Tahoma, Arial, Helvetica, <span class="kw2">sans-serif</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">font-weight</span><span class="re2">:bold</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#fafafa</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-decoration</span><span class="re2">:none</span><span class="sy0">;</span> &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="re2">:0</span> <span class="nu0">0</span> <span class="re3">2px</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; -moz-border-radius<span class="sy0">:</span> <span class="re3">5px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; -webkit-border-radius<span class="sy0">:</span> <span class="re3">5px</span><span class="sy0">;</span> &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; border-radius<span class="sy0">:</span> <span class="re3">5px</span><span class="sy0">;</span> &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="re2">:<span class="re3">47px</span></span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-shadow</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="re3">1px</span> <span class="re3">1px</span> <span class="re0">#5d5d5d</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span> &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="re1">.kategoria</span> a<span class="re1">.link</span><span class="re2">:hover</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#ffffff</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-decoration</span><span class="re2">:none</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> &nbsp; &nbsp; &nbsp; <br />
&nbsp;</div>
<p>Całkowita szerokość zakładek i zawartości, która się pojawia po kliknięciu na nie uzależiona jest od od diva w jakim się znajduje czyli od diva <code>#page</code>. Ma on nadaną konkretną szerokość i wyśrodkowany jest on względem okna przeglądarki.</p>
<h2>Odrobina CSS3</h2>
<p>CSS3 niestety na obecną chwilę nie jest jeszcze obsługiwany przez wszystkie przeglądarki internetowe. Te, które radzą sobie z nim całkiem sprawnie to:</p>
<ul>
<li>Firefox (od wersji 3 w górę)</li>
<li>Google Chrome</li>
<li>Safari</li>
<li>Opera (wersja 9.64 obsługuje zaledwie kilka możliwości jakie daje nam CSS3)</li>
</ul>
<p>W menu akordeonowym zostały wykorzystane takie efekty jak:<br />
1. <strong>Cień pod napisem</strong> </p>
<div class="css dean_ch" style="white-space: nowrap;">
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-shadow</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="re3">1px</span> <span class="re3">1px</span> <span class="re0">#5d5d5d</span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp; <br />
&nbsp;</div>
<p>2. <strong>Zaokrąglone rogi</strong></p>
<div class="css dean_ch" style="white-space: nowrap;">
&nbsp; &nbsp; &nbsp; &nbsp; -moz-border-radius<span class="sy0">:</span> <span class="re3">5px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; -webkit-border-radius<span class="sy0">:</span> <span class="re3">5px</span><span class="sy0">;</span> &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; border-radius<span class="sy0">:</span> <span class="re3">5px</span><span class="sy0">;</span> &nbsp; &nbsp; <br />
&nbsp;</div>
<p class="picture"><a href="http://pliki.vivee.info/acordeon/2.jpg"><img src="http://pliki.vivee.info/acordeon/2m.jpg" alt="Full of colours" /></a></p>
<p>Efekt końcowy zabawy htmlowo-cssowej podejrzeć można w wersji <a href="http://pliki.vivee.info/acordeon/">Demo</a></p>
<h2> jQuery</h2>
<p>Do w pełni działajacych zakładek brakuje nam jeszcze podłączenie odpowiednich skryptów JS.<br />
W sekcji <code><head> </head></code> należy zamieścić odnośnik do jQuery:</p>
<div class="html dean_ch" style="white-space: nowrap;"><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;script.html"><span class="kw2">&lt;script</span></span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;http://code.jquery.com/jquery-latest.js&quot;</span>&gt;&lt;<span class="sy0">/</span>script&gt;</span> </div>
<p>oraz skrypt, z funkcją dzięki której zakładki zachowują się zgodnie z naszymi założeniami.</p>
<div class="html dean_ch" style="white-space: nowrap;"><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;script.html"><span class="kw2">&lt;script</span></span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;js/menu.js&quot;</span>&gt;&lt;<span class="sy0">/</span>script&gt;</span> </div>
<p>Nasz skrypt, który decyduje o pojawianiu się i znikaniu zawartości wygląda następująco:</p>
<div class="javascript dean_ch" style="white-space: nowrap;">
&nbsp;$<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.ready<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;ul.fade&quot;</span><span class="br0">&#41;</span>.not<span class="br0">&#40;</span><span class="st0">&quot;:first&quot;</span><span class="br0">&#41;</span>.hide<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;a.link&quot;</span><span class="br0">&#41;</span>.click<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;.fade:visible&quot;</span><span class="br0">&#41;</span>.hide<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>this<span class="br0">&#41;</span>.parent<span class="br0">&#40;</span><span class="br0">&#41;</span>.<a href="http://www.php.net/next"><span class="kw3">next</span></a><span class="br0">&#40;</span><span class="st0">'.fade'</span><span class="br0">&#41;</span>.fadeIn<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
&nbsp;<span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
&nbsp;</div>
<p>gdzie:</p>
<div class="javascript dean_ch" style="white-space: nowrap;">$<span class="br0">&#40;</span><span class="st0">&quot;ul.fade).not(&quot;</span>:first<span class="st0">&quot;).hide();</span></div>
<p>Po wczytaniu skryptu ukrywa nam wszystkie podtreści zakładek poza pierwszą, która zawsze będzie pokazana i tym samym sugeruje userom, że kliknięcie w następną zakładkę pokaże się jej zawartość.</p>
<div class="javascript dean_ch" style="white-space: nowrap;">$<span class="br0">&#40;</span><span class="st0">&quot;.fade:visible&quot;</span><span class="br0">&#41;</span>.hide<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
<p>Zagnieżdżone <code>ul</code> o klasie <code>.fade</code> będzie ukazywane po wcześniejszym kliknięciu na <code>a.link</code>.<br />
Nadanie klasy pojawiającemu się <code>ul</code> dodatkowo zabezpiecza nas przed sytuacją kiedy w treści mamy następne <code>ul</code> i nie chcemy aby one dziedziczyły to zachowanie. </p>
<p>Został również zastosowany efekt <code>fadeIn</code> dla pojawiających się zawartości menu. </p>
<div class="javascript dean_ch" style="white-space: nowrap;">$<span class="br0">&#40;</span>this<span class="br0">&#41;</span>.parent<span class="br0">&#40;</span><span class="br0">&#41;</span>.<a href="http://www.php.net/next"><span class="kw3">next</span></a><span class="br0">&#40;</span><span class="st0">'.fade'</span><span class="br0">&#41;</span>.fadeIn<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
<p>Więcej o fade'ach przeczytać możecie w artykule: <a href="http://vivee.info/2007/12/04/fadein-fadeout-fadeto-czyli-o-pojawianiu-sie-i-znikaniu/">"FadeIn, fadeOut, fadeTo – czyli o pojawianiu się i znikaniu"</a>.</p>
<p>Jeżeli chcemy aby zawartość pojawiała się nam po najeździe na zakładkę, a nie dopiero po kliknięciu należy w tym fragmencie js'a </p>
<div class="javascript dean_ch" style="white-space: nowrap;">$<span class="br0">&#40;</span><span class="st0">&quot;a.link&quot;</span><span class="br0">&#41;</span>.click<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
<p>podmienić <code>click</code> na <code>hover</code>:</p>
<div class="javascript dean_ch" style="white-space: nowrap;">$<span class="br0">&#40;</span><span class="st0">&quot;a.link&quot;</span><span class="br0">&#41;</span>.hover<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
<p>Hover sprawi, że menu to zachowywać się będzie identycznie jak to zamieszczone na <a href="http://www.apple.com/downloads/">www.apple.com</a>.</p>
<p>Jeszcze jednym efektem dla urozmaicenia wyglądu tego menu jest zwiększenie krycia po najechaniu kursorem na <code>.kategoria a.link</code>.</p>
<div class="javascript dean_ch" style="white-space: nowrap;">
$<span class="br0">&#40;</span><span class="st0">&quot;.kategoria a.link&quot;</span><span class="br0">&#41;</span>.fadeTo<span class="br0">&#40;</span><span class="st0">&quot;fast&quot;</span>, .8<span class="br0">&#41;</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
$<span class="br0">&#40;</span><span class="st0">&quot;.kategoria a.link&quot;</span><span class="br0">&#41;</span>.hover<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>this<span class="br0">&#41;</span>.fadeTo<span class="br0">&#40;</span><span class="st0">&quot;fast&quot;</span>, <span class="nu0">1</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>,<span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>this<span class="br0">&#41;</span>.fadeTo<span class="br0">&#40;</span><span class="st0">&quot;fast&quot;</span>, .8<span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><span class="br0">&#41;</span>; &nbsp; &nbsp; <br />
&nbsp;</div>
<p>Tym sposobem tak oto wygląda całkowity kod JS, który przyczynia się do ozywienia menu akordeonowego:</p>
<div class="javascript dean_ch" style="white-space: nowrap;">
&nbsp;$<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.ready<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;ul.fade&quot;</span><span class="br0">&#41;</span>.not<span class="br0">&#40;</span><span class="st0">&quot;:first&quot;</span><span class="br0">&#41;</span>.hide<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;a.link&quot;</span><span class="br0">&#41;</span>.click<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;.fade:visible&quot;</span><span class="br0">&#41;</span>.hide<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>this<span class="br0">&#41;</span>.parent<span class="br0">&#40;</span><span class="br0">&#41;</span>.<a href="http://www.php.net/next"><span class="kw3">next</span></a><span class="br0">&#40;</span><span class="st0">'.fade'</span><span class="br0">&#41;</span>.fadeIn<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</p>
<p>$<span class="br0">&#40;</span><span class="st0">&quot;.kategoria a.link&quot;</span><span class="br0">&#41;</span>.fadeTo<span class="br0">&#40;</span><span class="st0">&quot;fast&quot;</span>, .8<span class="br0">&#41;</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
$<span class="br0">&#40;</span><span class="st0">&quot;.kategoria a.link&quot;</span><span class="br0">&#41;</span>.hover<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>this<span class="br0">&#41;</span>.fadeTo<span class="br0">&#40;</span><span class="st0">&quot;fast&quot;</span>, <span class="nu0">1</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>,<span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>this<span class="br0">&#41;</span>.fadeTo<span class="br0">&#40;</span><span class="st0">&quot;fast&quot;</span>, .8<span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><span class="br0">&#41;</span>;</p>
<p><span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
&nbsp;</div>
<p>W taki sposób przestawia się tworzenie akoreonowego menu,<br />
mamy nadzieje, że artykuł ten okaże się dla Was pomocny.</p>
<img src="http://vivee.info/?ak_action=api_record_view&id=1044&type=feed" alt="" /><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fvivee.info%2F2009%2F07%2F06%2Fmenu-akordeonowe-z-odrobina-css3%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://vivee.info/2009/07/06/menu-akordeonowe-z-odrobina-css3/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Zapomnij o IE6!</title>
		<link>http://vivee.info/2009/06/17/zapomnij-o-ie6/</link>
		<comments>http://vivee.info/2009/06/17/zapomnij-o-ie6/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 11:11:55 +0000</pubDate>
		<dc:creator>JaRo</dc:creator>
				<category><![CDATA[Webmaster]]></category>
		<category><![CDATA[XHTML/CSS]]></category>

		<guid isPermaLink="false">http://vivee.info/?p=946</guid>
		<description><![CDATA[Internet Explorer 6 – czyli popularnie zmora webmasterów. Wielu z Was ma już zapewne dość ‘użerania się’ z ie6, który mimo upływu czasu, aktualizacji i nowych lepszych wersji nie odszedł wcale w zapomnienie. Według Ranking.pl aż 31.6% polskich internautów wciąż korzysta z Internet Explorer 6. Osobiście postanowiłem zerwać stosunki z wyżej wymienionym delikwentem i zmusić [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Internet Explorer 6</strong> – czyli popularnie zmora webmasterów.</p>
<p>Wielu z Was ma już zapewne dość ‘użerania się’ z ie6, który mimo upływu czasu, aktualizacji i nowych lepszych wersji nie odszedł wcale w zapomnienie. Według <a href="http://www.ranking.pl/Newsletter/pl/2008-06-26/#_link22">Ranking.pl</a> aż 31.6% polskich internautów wciąż korzysta z Internet Explorer 6.<br />
<span id="more-946"></span></p>
<p class="insp">
<a href="http://pliki.vivee.info/if_ie6/"><img src="http://pliki.vivee.info/demo.jpg" alt="demo" /></a> <a href="http://pliki.vivee.info/if_ie6/ie6.zip"><img src="http://pliki.vivee.info/download.jpg" alt="pobierz" /></a>
</p>
<p>Osobiście postanowiłem zerwać stosunki z wyżej wymienionym delikwentem i zmusić odwiedzających moją stronę do zmiany przeglądarki na nowszą, lepsza (niepotrzebne skreślić).</p>
<p>Zrobiłem to w bardzo prosty sposób <img src='http://vivee.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Każdą osobę posiadającą Internet Explorer 6 w momencie wejścia na moją stronę spotka miła niespodzianka...</p>
<p class="picture"><a href="http://vivee.info/" title="Get Recent Comments"><img src="http://pliki.vivee.info/ie6/preview.jpg" alt="Zapomnij o IE6!" /></a></p>
<p>I takim sposobem internauta musi (jeżeli oczywiście chce obejrzeć moją stronę) uaktualnić lub zmienić przeglądarkę.</p>
<p>Jak to wygląda od strony kodu?</p>
<p><strong>1.</strong> Pierwszym krokiem jest umieszczenie w źródle naszej strony odpowiednich <a href="http://vivee.info/2009/01/11/haki-css-i-komentarze-warunkowe-dla-niepokornego-internet-explorera">komentarzy warunkowych</a>.</p>
<p>Poniższy kod umieszczamy w sekcji &lt;head&gt; i co ważne koniecznie poniżej stylu naszej strony!</p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2"><span class="coMULTI">&lt;!--[if !IE 6 ]&gt;&lt;!--&gt;</span></span></div>
<p>Poniższy kod umieszczamy przed tuż przed zamknięciem <code>&lt;/body&gt;</code>.</p>
<div class="html dean_ch" style="white-space: nowrap;">
<span class="sc2"><span class="coMULTI">&lt;!--&lt;![endif]--&gt;</span></span><br />
<span class="sc2"><span class="coMULTI">&lt;!--[if IE 6]&gt;</span></span></p>
<p><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;center&amp;gt;.html"><span class="kw2">&lt;center&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;img.html"><span class="kw2">&lt;img</span></span></a> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;if_ie_6/img1.gif&quot;</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span> <span class="sy0">/</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span></p>
<p><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;img.html"><span class="kw2">&lt;img</span></span></a> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;if_ie_6/img2.gif&quot;</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span> <span class="sy0">/</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span></p>
<p><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;img.html"><span class="kw2">&lt;img</span></span></a> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;if_ie_6/img3.gif&quot;</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span> <span class="sy0">/</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span></p>
<p>
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;a.html"><span class="kw2">&lt;a</span></span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://www.google.pl/chrome&quot;</span>&gt;&lt;img <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;if_ie_6/chrome.gif&quot;</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;Google Chrome&quot;</span> <span class="kw3">border</span><span class="sy0">=</span><span class="st0">&quot;0&quot;</span> <span class="sy0">/</span>&gt;&lt;<span class="sy0">/</span>a&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;a.html"><span class="kw2">&lt;a</span></span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://www.mozilla-europe.org/pl/firefox&quot;</span>&gt;&lt;img <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;if_ie_6/ff.gif&quot;</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;Firefox&quot;</span> <span class="kw3">border</span><span class="sy0">=</span><span class="st0">&quot;0&quot;</span> <span class="sy0">/</span>&gt;&lt;<span class="sy0">/</span>a&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;a.html"><span class="kw2">&lt;a</span></span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://www.microsoft.com/poland/windows/downloads/ie/getitnow.mspx&quot;</span>&gt;&lt;img <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;if_ie_6/ie.gif&quot;</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;Internet Explorer&quot;</span> <span class="kw3">border</span><span class="sy0">=</span><span class="st0">&quot;0&quot;</span> <span class="sy0">/</span>&gt;&lt;<span class="sy0">/</span>a&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;a.html"><span class="kw2">&lt;a</span></span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://pl.opera.com&quot;</span>&gt;&lt;img <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;if_ie_6/opera.gif&quot;</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;Opera&quot;</span> <span class="kw3">border</span><span class="sy0">=</span><span class="st0">&quot;0&quot;</span> <span class="sy0">/</span>&gt;&lt;<span class="sy0">/</span>a&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/center&amp;gt;.html"><span class="kw2">&lt;/center&gt;</span></span></a></span></p>
<p><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a>!<span class="br0">&#91;</span>endif<span class="br0">&#93;</span>--<span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span></div>
<p><strong>2.</strong> Drugim naszym krokiem jest umieszczenie w stylu (w body) naszej strony kodu - wymuszającego w Internet Explorer 6 odpowiednie tło - w naszym przypadku będzie to kolor biały, a więc:</p>
<div class="html dean_ch" style="white-space: nowrap;">_background-color: #fff;</div>
<p>Znak '_' przed background tyczy się tylko ie6 i tylko ta przeglądarka potrafi go odczytać (taki mały hack).<br />
Pozostaje nam tylko umieścić grafikę na serwerze i oczekiwać spamu na swojej skrzynce mailowej z pretensjami od wiernych użytkowników ie6 <img src='http://vivee.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Jeżeli nie posiadasz Internet Explorer 6 to możesz w prosty sposób sprawdzić działanie powyższego kodu używając IE Tester'a<br />
- do pobrania <a href="http://www.my-debugbar.com/wiki/IETester/HomePage">tutaj</a>.</p>
<img src="http://vivee.info/?ak_action=api_record_view&id=946&type=feed" alt="" /><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fvivee.info%2F2009%2F06%2F17%2Fzapomnij-o-ie6%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://vivee.info/2009/06/17/zapomnij-o-ie6/feed/</wfw:commentRss>
		<slash:comments>72</slash:comments>
		</item>
		<item>
		<title>Tworzenie prostej strony za pomocą wtyczki Edit Css</title>
		<link>http://vivee.info/2009/04/22/tworzenie-prostej-strony-za-pomoca-wtyczki-edit-css/</link>
		<comments>http://vivee.info/2009/04/22/tworzenie-prostej-strony-za-pomoca-wtyczki-edit-css/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 21:05:14 +0000</pubDate>
		<dc:creator>pafeu</dc:creator>
				<category><![CDATA[Webmaster]]></category>
		<category><![CDATA[XHTML/CSS]]></category>

		<guid isPermaLink="false">http://vivee.info/?p=852</guid>
		<description><![CDATA[Chciałbym wam zaprezentować bardzo przydatną wtyczkę do przeglądarki Mozilla Firefox, EditCss. Jest to zwykły edytor Css lecz wkomponowany w pasku przeglądarki. Dzięki niemu możemy pisać style w czasie rzeczywistym – czyli gdy zaczynamy wpisywać style od razu widzimy rezultaty w oknie z dokumentem. Wtyczka jest darmowa oraz wygodna. Można ją pobrać z https://addons.mozilla.org/pl/firefox/addon/179. Tworzymy dokument [...]]]></description>
			<content:encoded><![CDATA[<p>Chciałbym wam zaprezentować bardzo przydatną wtyczkę do przeglądarki Mozilla Firefox, EditCss. Jest to zwykły edytor Css lecz wkomponowany w pasku przeglądarki. Dzięki niemu możemy pisać style w czasie rzeczywistym – czyli gdy zaczynamy wpisywać style od razu widzimy rezultaty w oknie z dokumentem.</p>
<p class="insp">
<a href="http://pliki.vivee.info/editcss/editcsssite.rar"><img src="http://pliki.vivee.info/download.jpg" alt="pobierz" /></a>
</p>
<p><span id="more-852"></span></p>
<p>Wtyczka jest darmowa oraz wygodna. Można ją pobrać z <a href="https://addons.mozilla.org/pl/firefox/addon/179">https://addons.mozilla.org/pl/firefox/addon/179</a>.</p>
<p><object width="531" height="398"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4274755&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4274755&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="531" height="398"></embed></object></p>
<h2>Tworzymy dokument html</h2>
<p>Aby zacząć parce z EditCss, należy najpierw stworzyć „fundament” strony, czyli tworzyć pewien układ strony, zrobimy to przy pomocy divów.</p>
<blockquote><p>Div, inaczej blok – jest to zwykły prostokąt, któremu można nadać margines, kolor wypełnienia, obramowania, tło itd.</p></blockquote>
<p>Głównym divem, w którym wszystko będzie się znajowało to Container, następnie stronę podzieliłem na pięć części, Top, Cytat, Content-left (treść w lewej kolumnie), Content-right (treść w prawej kolumnie) oraz Footer.</p>
<p>Struktura strony wygląda następująco:</p>
<div class="html dean_ch" style="white-space: nowrap;"><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;container&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;top&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;logo&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;slogan&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;cytat&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;content-left&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;header-left&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;author-left&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;content-text&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span></p>
<p>
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;content-right&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;header-right&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;author-right&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;content-text&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;footer&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;author&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span></div>
<h2>css</h2>
<p>Wszystko jest ukazane na filmie oraz w <a href="http://pliki.vivee.info/editcss/editcsssite.rar">pliku źródłowym</a>. Chciałbym jedynie wypisać kilka solucji na pewne problemy, które się dość często zdarzają przy opisywaniu divów.</p>
<ul>
<li>Na przykładzie footera (w filmie można zauważyć ten problem), gdy nasz footer idzie na górę ponad wszystkie inne divy, należy zastosować w nim parametr "clear: both".</li>
<li>Jeśli jakiś element który znajduje się w divie wychodzi za jego granicę, stosujemy parametr "overflow: hidden", który ucina element za granicą diva.</li>
<li>Aby wyśrodkować stronę należy głównemu blokowi (w naszym przypadku "container") przypisać "margin: 0 auto". Są oczywiście inne sposoby na to jednak ten mnie nigdy nie zawiódł.</li>
<li>Pamiętaj aby nie ustawiać wysokości (height) dla bloków, które będą służyły jako treść, gdyż może być problem gdy zapełnimy diva zbyt dużą ilością tekstu.</li>
</ul>
<img src="http://vivee.info/?ak_action=api_record_view&id=852&type=feed" alt="" /><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fvivee.info%2F2009%2F04%2F22%2Ftworzenie-prostej-strony-za-pomoca-wtyczki-edit-css%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://vivee.info/2009/04/22/tworzenie-prostej-strony-za-pomoca-wtyczki-edit-css/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Efekt graficznego podświetlenia w jQuery i Prototype z Scriptaculous</title>
		<link>http://vivee.info/2009/02/10/efekt-graficznego-podswietlenia-w-jquery-i-prototype-z-scriptaculous/</link>
		<comments>http://vivee.info/2009/02/10/efekt-graficznego-podswietlenia-w-jquery-i-prototype-z-scriptaculous/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 00:09:48 +0000</pubDate>
		<dc:creator>m1chu</dc:creator>
				<category><![CDATA[Skrypty client-side]]></category>
		<category><![CDATA[XHTML/CSS]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[highlighter]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[podświetlenie]]></category>
		<category><![CDATA[product]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[scriptaculous]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://vivee.info/?p=620</guid>
		<description><![CDATA[Jedni nie korzystają z nich wcale, niektórzy tylko po to aby zwiększyć funkcjonalność tworzonych przez siebie stron, a u jeszcze innych zauważalny jest przepych tego typu rozwiązań. Biblioteki programistyczne języka JavaScript, bo o ich wykorzystaniu tu mowa to źródło bardzo różnorodnych, nie tylko funkcjonalnych, ale także estetycznych efektów. Sieć aż kipi od dobrych i słabych, [...]]]></description>
			<content:encoded><![CDATA[<p>Jedni nie korzystają z nich wcale, niektórzy tylko po to aby zwiększyć funkcjonalność tworzonych przez siebie stron, a u jeszcze innych zauważalny jest przepych tego typu rozwiązań. Biblioteki programistyczne języka JavaScript, bo o ich wykorzystaniu tu mowa to źródło bardzo różnorodnych, nie tylko funkcjonalnych, ale także estetycznych efektów. Sieć aż kipi od dobrych i słabych, lepiej oraz słabiej wytłumaczonych przykładów użycia możliwości <a href="http://mootools.net/" title="MooTools">MooTools</a>, <a href="http://jquery.com/" title="jQuery">jQuery</a>, <a href="http://www.prototypejs.org/" title="Prototype">Prototype</a> z <a href="http://script.aculo.us/" title="Scriptaculous">Scriptaculous</a>, czy innych mniej powszechnych frameworków.</p>
<p>Jednym z takich efektów jest możliwość stworzenia animowanego, graficznego podświetlenia pojawiającego się np. nad grafiką wywołującą animację. Interaktywność taka została opisana na <a href="http://utnij.eu/product-highlighter-mootools/" title="Product highlighter with MooTools">NetTuts</a> z wykorzystaniem MooTools. My osiągniemy taki wynik dzięki zastosowaniu jQuery (w jednym przykładzie) oraz dodatkowo także za pomocą Prototype wraz z Scriptaculous (w drugim przykładzie).</p>
<p><span id="more-620"></span></p>
<p class="picture" style="font-size: 10px;"><object type="application/x-shockwave-flash" width="538" height="352" data="http://www.vimeo.com/moogaloop.swf?clip_id=3136566&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA"><param name="quality" value="best" /><param name="allowfullscreen" value="true" /><param name="scale" value="showAll" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=3136566&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA" /><img src="http://farm1.static.flickr.com/190/3263308689_e6578263b5_o.png" alt="Oczekiwany efekt" style="height: 366px;" /></object><br />Oczekiwany efekt.</p>
<h2>Krok 1: Za co się chwycić na początku...</h2>
<p>Na początek musisz wiedzieć w jakim celu potrzebny jest Ci prezentowany w tym artykule efekt. Menu? Wyświetlanie dodatkowych informacji w graficznej liście produktów? Czy może szybki, animowany splash? Wybór jest Twój i podług niego będziesz musiał zaopatrzyć się w dodatkowe, niezbędne elementy do wykonania podświetlenia.</p>
<p>Chodzi tu mianowicie o grafiki, których musi być dwa razy więcej niż elementów podatnych na działanie mechanizmu. Powiedzmy, jeżeli chcemy w pięcioelementowym menu zastosować w każdym zdarzenie po najechaniu myszką zgodne z przesłaniem tego artykułu to potrzebujemy dziesięciu grafik. Pięć opisujących przyciski menu i drugie tyle będące "treścią" pojawiającą się po podświetleniu.</p>
<p>Po uporaniu się z wizualną częścią problemu oraz strony internetowej możemy ruszyć krok dalej.</p>
<h2>Krok 2: Zaopatrujemy się w jQuery i/lub Prototype i Scriptaculous!</h2>
<p><strong>jQuery</strong> to aktualnie najpopularniejsza biblioteka. I najłatwiej ją skatalogować w czeluścia własnego projektu. Wystarczy ze <a href="http://jquery.com/" title="jQuery">strony głównej</a> pobrać wersję <strong>1.3.1 production/Minified</strong> i umieścić ją w obrębie plików tworzonego przez nas przykładu (niezbędny będzie tylko plik <strong>jquery-1.3.1.min.js</strong>).</p>
<p>Z <strong>Prototype</strong> sprawa jest ciut bardziej skomplikowana, bo prócz standardowego frameworka musimy pobrać także dodatkowy interfejs w postaci <strong>Scriptaculous</strong>, dzięki któremu uzyskamy dostęp do efektu pozwalającego na dynamiczne zmienianie właściwości CSS elementów strony. Ściągamy więc <a href="http://utnij.eu/prototype-download/" title="Prototype">wersję 1.6.0.3 pierwszej biblioteki</a>, oraz paczkę z <a href="http://utnij.eu/scriptaculous-download/" title="Scriptaculous">wersją 1.8.2 drugiej</a>. Z obydwu wyodrębniamy pliki i w ramach folderu tworzonego przez nas projektu umieszczamy tylko <strong>prototype.js</strong> oraz <strong>effects.js</strong> (z drugiego archiwum).</p>
<p>W przypadku tego artykułu umownie pliki związane z frameworkami będą znajdować się w podkatalogu <strong>javascript</strong> folderu głównego. Obydwa przykłady (dotyczące, jeden <strong>jQuery</strong>, a drugi <strong>Prototype z Scriptaculous</strong>) będą oczywiście wykonywane w osobnych plikach znajdujących się w dwóch różnych katalogach.</p>
<p class="picture" style="font-size: 10px;"><img src="http://farm1.static.flickr.com/243/3263426717_b9e39151ce_o.png" alt="Rozdzielenie implementacji przykładów na dwa katalogi" style="height: 280px;" /><br />Przykładowe rozdzielenie implementacji przykładów na dwa katalogi. W naszym przypadku pliki <strong>.js</strong> znajdują się dodatkowo w podkatalogu <strong>javascript</strong>.</p>
<h2>Krok 3: Tworzymy strukturę XHTML</h2>
<p>Atutem naszego rozwiązania jest kompatybilność z serwowaniem dokumentu XHTML w postaci <code>application/xhtml+xml</code>, czego bardzo często brakuje w przypadku efektów opartych na bibliotekach JS. Z racji tego także, że i w przypadku <strong>Prototype</strong> i <strong>jQuery</strong> struktura strony pozostaje niezmienna to obojętnie który framework wykorzystujesz poniższe tłumaczenie i partie kodu będą prawidłowe.</p>
<p>Z powodu tego w jaki sposób będziemy wysyłać treść strony posłużymy się małą częścią kodu PHP, a co za tym idzie plik korzystający z naszego mechanizmu musi mieć też takie rozszerzenie (no chyba, że serwer jest inaczej skonfigurowany, ale to już problematyka do rozwiązania na inny temat).</p>
<div class="php dean_ch" style="white-space: nowrap;"><span class="kw2">&lt;?php</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span> <a href="http://www.php.net/stristr"><span class="kw3">stristr</span></a><span class="br0">&#40;</span><span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">'HTTP_ACCEPT'</span><span class="br0">&#93;</span>, <span class="st0">'application/xhtml+xml'</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="co1">// jeżeli przeglądarka obsługuje application/xhtml+xml</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Content-Type: application/xhtml+xml; charset=utf-8&quot;</span><span class="br0">&#41;</span>; <span class="co1">// wysłanie odpowiednich nagłówków</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">'&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;'</span>.<span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">'&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1//EN&quot;'</span>.<span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">'&quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&quot;&gt;'</span>.<span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="kw1">else</span> <span class="co1">// wysłanie dokumentu jako text/html dla przeglądarek nie obsługujących typu zawartości pliku z powyższego warunku, np. dla IE</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Content-Type: text/html; charset=utf-8&quot;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">'&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;'</span>.<span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">'&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;'</span>.<span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="kw2">?&gt;</span></div>
<p>Poniżej dodajemy uniwersalny układ strony. Ważnym ułatwieniem jest możliwość tworzenia odnośników z elementów graficznych podatnych mechanizmowi, a także fakt, że nie korzystamy w nim z tagów <code>img</code>, a efektu zbliżonego do <a href="http://m1chu.eu/webmastering/efekt-rollover-w-css-bez-przeladowywania-obrazka" title="Efekt rollover">sliding-doors</a> w celu wyświetlania obrazów.</p>
<div class="xhtml dean_ch" style="white-space: nowrap;"><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;html.html"><span class="kw2">&lt;html</span></span></a> <span class="kw3">lang</span><span class="sy0">=</span><span class="st0">&quot;pl&quot;</span> xml:<span class="kw3">lang</span><span class="sy0">=</span><span class="st0">&quot;pl&quot;</span> xmlns<span class="sy0">=</span><span class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;head&amp;gt;.html"><span class="kw2">&lt;head&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;meta.html"><span class="kw2">&lt;meta</span></span></a> <span class="kw3">http-equiv</span><span class="sy0">=</span><span class="st0">&quot;Content-type&quot;</span> <span class="kw3">content</span><span class="sy0">=</span><span class="st0">&quot;&lt;?php print ( stristr($_SERVER['HTTP_ACCEPT'], 'application/xhtml+xml') ? 'application/xhtml+xml' : 'text/html' ); // typ zawartości zależny do możliwości przeglądarki użytkownika ?&gt;</span></span>; charset=utf-8&quot; /&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;meta.html"><span class="kw2">&lt;meta</span></span></a> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;Description&quot;</span> <span class="kw3">content</span><span class="sy0">=</span><span class="st0">&quot;Product highlighter - tworzenie dynamicznych opisów produktów - m1chu.eu&quot;</span> <span class="sy0">/</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;meta.html"><span class="kw2">&lt;meta</span></span></a> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;Keywords&quot;</span> <span class="kw3">content</span><span class="sy0">=</span><span class="st0">&quot;product, highlighter&quot;</span> <span class="sy0">/</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;title&amp;gt;.html"><span class="kw2">&lt;title&gt;</span></span></a></span>Product highlighter<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/title&amp;gt;.html"><span class="kw2">&lt;/title&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;style.html"><span class="kw2">&lt;style</span></span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/css&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span>@import url('stylesheet.css');<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/style&amp;gt;.html"><span class="kw2">&lt;/style&gt;</span></span></a></span> <span class="sc2"><span class="coMULTI">&lt;!-- arkusz stylów --&gt;</span></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/head&amp;gt;.html"><span class="kw2">&lt;/head&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;body&amp;gt;.html"><span class="kw2">&lt;body&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;siteContainer&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;highlightsContainer&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span> <span class="sc2"><span class="coMULTI">&lt;!-- zbiór grafik wyświetlanych przy najechaniu kursorem --&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;highlights&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;highlight1&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;highlights&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;highlight2&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;highlights&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;highlight3&quot;</span>&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;pageContainer&quot;</span><span class="sy0"><a href="http://december.com/html/4/element/&amp;gt;.html"><span class="kw2">&gt;</span></span></a></span> <span class="sc2"><span class="coMULTI">&lt;!-- zbiór grafik podatnych na efekt --&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;pages&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;page1&quot;</span>&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://m1chu.eu/&quot;</span>&gt;&lt;<span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;pages&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;page2&quot;</span>&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://vivee.info/&quot;</span>&gt;&lt;<span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;div.html"><span class="kw2">&lt;div</span></span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;pages&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;page3&quot;</span>&gt;&lt;a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://utnij.eu/&quot;</span>&gt;&lt;<span class="sy0">/</span>a&gt;&lt;<span class="sy0">/</span>div&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/div&amp;gt;.html"><span class="kw2">&lt;/div&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/body&amp;gt;.html"><span class="kw2">&lt;/body&gt;</span></span></a></span><br />
<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/html&amp;gt;.html"><span class="kw2">&lt;/html&gt;</span></span></a></span></div>
<h2>Krok 4: Stylizujemy strukturę strony za pomocą CSS</h2>
<p>Posługując się metodami <a href="http://m1chu.eu/2009/01/08/pozycjonujemy-za-pomoca-kaskadowego-arkusza-stylow-css/" title="Pozycjonowanie za pomocą CSS">pozycjonowania elementów</a> dostępnymi w kaskadowym arkuszu stylów możemy operując na elementach o identyfikatorach <code>siteContainer</code>, <code>pageContainer</code>, <code>highlightsContainer</code> oraz <code>divach</code> potomnych ułożyć i wystylizować wygląd, w tym położenie jak na wyżej zamieszczonym filmiku (screenie) obrazującym wykonanie zadania z tego artykułu.</p>
<p>Do wszystkich bloków kodu CSS odwołujących się do tagów zawierających identyfikatory grafik zostały dodane także właściwości <code>background</code> z adresem pliku tła.</p>
<p>W naszym przypadku poniższy kod zapisujemy do pliku <strong>stylesheet.css</strong>.</p>
<div class="css dean_ch" style="white-space: nowrap;"><span class="coMULTI">/* ustawienia domyślne dla ciała strony (w poprawnie wysyłanym XHTML jest to html+body, a nie tylko body) */</span><br />
html, body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">0px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">0px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#000</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'bg.png'</span><span class="br0">&#41;</span> <span class="kw2">repeat-x</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#siteContainer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">150px</span> <span class="kw2">auto</span> <span class="re3">0px</span> <span class="kw2">auto</span><span class="sy0">;</span> <span class="coMULTI">/* marginesy - wyśrodkowanie poziome */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">573px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">345px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span> <span class="coMULTI">/* relatywna pozycja, kontener */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">transparent</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'container.png'</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span> <span class="kw1">top</span> <span class="kw1">left</span><span class="sy0">;</span> <br />
<span class="br0">&#125;</span> &nbsp; &nbsp; &nbsp; <br />
<span class="re0">#pageContainer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span> <span class="coMULTI">/* pozycja względem #siteContainer */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">z-index</span><span class="sy0">:</span> <span class="nu0">5</span><span class="sy0">;</span> <span class="coMULTI">/* ponad ciałem strony i pod #highlightsContainer */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">top</span><span class="sy0">:</span> <span class="re3">128px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">left</span><span class="sy0">:</span> <span class="re3">0px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="re0">#highlightsContainer</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span> <span class="coMULTI">/* pozycja względem #siteContainer */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">z-index</span><span class="sy0">:</span> <span class="nu0">10</span><span class="sy0">;</span> <span class="coMULTI">/* ponad pozostałymi elementami */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">left</span><span class="sy0">:</span> <span class="re3">178px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">top</span><span class="sy0">:</span> <span class="re3">30px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="coMULTI">/* ustawienie w linii wraz z zmianą wyglądu kursora */</span><br />
<span class="re0">#pageContainer</span> &gt; div <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">cursor</span><span class="sy0">:</span> <span class="kw2">pointer</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="coMULTI">/* rozmiary klikalnych divów potomnych znajdujących się w kontenerze listy grafik podatnych na działanie mechanizmu */</span><br />
<span class="re0">#pageContainer</span> &gt; div a <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">178px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">178px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="re0">#page1</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">19px</span><span class="sy0">;</span> <span class="coMULTI">/* prawy margines - odstęp od kolejnego diva */</span><br />
<span class="br0">&#125;</span><br />
<span class="re0">#page1</span> a <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'icon_1.png'</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span><span class="sy0">;</span> <span class="coMULTI">/* tło grafiki podatnej na działanie efektu */</span><br />
<span class="br0">&#125;</span><br />
<span class="re0">#page2</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span> <span class="coMULTI">/* prawy margines - odstęp od kolejnego diva */</span><br />
<span class="br0">&#125;</span> &nbsp; &nbsp; &nbsp; <br />
<span class="re0">#page2</span> a <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'icon_2.png'</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span><span class="sy0">;</span> <span class="coMULTI">/* tło grafiki podatnej na działanie efektu */</span><br />
<span class="br0">&#125;</span><br />
<span class="re0">#page3</span> a <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'icon_3.png'</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span><span class="sy0">;</span> <span class="coMULTI">/* tło grafiki podatnej na działanie efektu */</span><br />
<span class="br0">&#125;</span></p>
<p><span class="coMULTI">/* rozmiary wszystkich potomków typu div kontenera zawierającego podświetlenia */</span><br />
<span class="re0">#highlightsContainer</span> &gt; div <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">222px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">101px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="coMULTI">/* pliki tła w pojawiających się podświetleniach */</span><br />
<span class="re0">#highlight1</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">transparent</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'highlights_1.png'</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="re0">#highlight2</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">transparent</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'highlights_2.png'</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="re0">#highlight3</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">transparent</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'highlights_3.png'</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<h2>Krok 5a: Dodajemy jQuery do dokumentu</h2>
<p>Tego, czego zabrakło dotychczasowo w naszym dokumencie to załączenie bibliotek oraz pliku <strong>.js</strong> w którym będzie znajdować się kod animujący pożądany przez nas efekt.</p>
<p>Dla <strong>jQuery</strong> w sekcji <code>head</code> należy dodać pliki <strong>jquery-1.3.1.min.js</strong> oraz <strong>product-highlighter.js</strong> (który umownie będzie zawierał dodatkowy kod).</p>
<div class="xhtml dean_ch" style="white-space: nowrap;">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;script.html"><span class="kw2">&lt;script</span></span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;javascript/jquery-1.3.1.min.js&quot;</span>&gt;&lt;<span class="sy0">/</span>script&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;script.html"><span class="kw2">&lt;script</span></span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;javascript/product-highlighter.js&quot;</span>&gt;&lt;<span class="sy0">/</span>script&gt;</span></div>
<h2>Krok 5b: Dodajemy Prototype z Scriptaculous do dokumentu</h2>
<p>Tym razem musimy dodać jeden plik więcej. Bibliotekę (<strong>prototype.js</strong>), jej dodatkowy interfejs, a dokładniej plik zawierający obiekt <strong>Effect</strong> (<strong>effects.js</strong>) oraz jak w powyższym przypadku plik z naszym kodem animacji (<strong>product-highlighter.js</strong>).</p>
<div class="xhtml dean_ch" style="white-space: nowrap;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;script.html"><span class="kw2">&lt;script</span></span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;javascript/prototype.js&quot;</span>&gt;&lt;<span class="sy0">/</span>script&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;script.html"><span class="kw2">&lt;script</span></span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;javascript/effects.js&quot;</span>&gt;&lt;<span class="sy0">/</span>script&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;script.html"><span class="kw2">&lt;script</span></span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;javascript/product-highlighter.js&quot;</span>&gt;&lt;<span class="sy0">/</span>script&gt;</span></div>
<h2>Krok 6a: Implementujemy kod animacji z użyciem jQuery</h2>
<p>Jak to bywa w przypadku tego frameworka, aby jakieś zdarzenie działało poprawnie powinno się je umieszczać w funkcji <code>$(document).ready()</code>, której zawartość zostanie załadowana w momencie załadowania drzewa dokumentu.</p>
<div class="javascript dean_ch" style="white-space: nowrap;">$<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.ready<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>kod<span class="br0">&#93;</span><br />
<span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
<p>W <strong>[</strong><strong>kod]</strong> musimy przypisać (do tablicy) wg. klasy wszystkie grafiki wyświetlane podczas podświetlenia, ustawić parametry podstawowe CSS oraz stworzyć sprawdzanie w pętli, czy dana grafika o klasie <code>.pages</code> nie jest najechana przez kursor i w zależności o danego trybu (<em>kursor na/kursor poza</em>) wykonać pożądaną animacji (<em>wyłonienie dodatkowego tła / zanikanie dodatkowego tła</em>).</p>
<p>Poniższy kod umieszczamy w pliku <strong>product-highlighter.js</strong>.</p>
<div class="javascript dean_ch" style="white-space: nowrap;">$<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.ready<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// tablica elementów o klasie .highlights</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> highlights = $<span class="br0">&#40;</span><span class="st0">'.highlights'</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// ustawienie pełnej przezroczystości elementów pojawiających się w czasie najechania myszką na obiekty podatne efektowi oraz widzialności ich kontenera</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">'.highlights'</span><span class="br0">&#41;</span>.css<span class="br0">&#40;</span><span class="st0">'opacity'</span>, <span class="nu0">0</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">'#highlightsContainer'</span><span class="br0">&#41;</span>.css<span class="br0">&#40;</span><span class="st0">'visibility'</span>, <span class="st0">'visible'</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// sprawdzanie każdego elementu podatnego mechanizmowi</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">'.pages'</span><span class="br0">&#41;</span>.<a href="http://www.php.net/each"><span class="kw3">each</span></a><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// jeżeli na danym elemencie znajduje się kursor</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>this<span class="br0">&#41;</span>.mouseover<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// wykonanie animacji grafiki wyłanianej i przypisanej do najechanego elementu (margines o 15px w górę i brak przezroczystości w czasie 0,5 sekundy)</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>highlights<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span>.animate<span class="br0">&#40;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; opacity: <span class="nu0">1</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; marginTop: <span class="st0">'-15px'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>, <span class="nu0">500</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>.mouseout<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="co1">// jeżeli na danym elemencie nie znajduje się już kursor</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>highlights<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span>.animate<span class="br0">&#40;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; opacity: <span class="nu0">0</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; marginTop: <span class="st0">'-0px'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>, <span class="nu0">500</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
<p>Należy jeszcze wyjaśnić dokładniej w jaki sposób działa <code>$(highlights[i]).animate()</code>. Mianowicie przy każdej iteracji pętli <code>$('.pages').each()</code> przekazuje ona do parametru <code>function(i)</code> aktualny numer elementu na którym się znajduje. Ponieważ w id <code>pageContainer</code> znaczniki potomne muszą być posegregowane i musi być ich tyle samo co obiektów graficznych w <code>highlightsContainer</code> to jeżeli kursor znajduje się na pierwszym podatnym na efekt obrazie to w podświetleniu wyłania się także pierwsza grafika. Wszystko to dzięki wyłuskaniu jej z tablicy <code>highlights</code> poprzez parametr <code>i</code>.</p>
<h2>Krok 6b: Implementujemy kod animacji z użyciem Prototype z Scriptaculous</h2>
<p>Podobnie w <strong>Prototype</strong> obserwujemy zdarzenie, ale tym razem załadowania całej strony w celu późniejszej obserwacji aktywności kursora na wybranych elementach aktywnych. Można oczywiście podobnie jak w poprzednim podpunkcie wykonać obserwacje zdarzeń wraz z załadowanie DOM (drzewa dokumentu) poprzez użycie <code>document.observe('dom:loaded', function() {})</code>. To tylko kwestia osobistego wyboru.</p>
<div class="javascript dean_ch" style="white-space: nowrap;">Event.observe<span class="br0">&#40;</span>window, <span class="st0">'load'</span>, <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>kod<span class="br0">&#93;</span><br />
<span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
<p>Dalsze postępowanie jest adekwatne do tego opisanego w przypadku zastosowania <strong>jQuery</strong>. Z tymże, tablicę elementów o danej klasie pobiera się poprzez podwójny znak dolara (<code>$$</code>), a najechanie oraz zjechanie kursorem poza zadany obszar rozpoznaje się także poprzez obiekt <code>Event</code> i metodę <code>observe()</code>. Do animacji służy funkcja <code>Morph</code> instancji <code>Effect</code> z pliku <code>effects.js</code> interfejsu <strong>Scriptaculous</strong >.</p>
<div class="javascript dean_ch" style="white-space: nowrap;">Event.observe<span class="br0">&#40;</span>window, <span class="st0">'load'</span>, <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> highlights = $$<span class="br0">&#40;</span><span class="st0">'.highlights'</span><span class="br0">&#41;</span>; <span class="co1">// utworzenie tablicy</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; $$<span class="br0">&#40;</span><span class="st0">'.highlights'</span><span class="br0">&#41;</span>.invoke<span class="br0">&#40;</span><span class="st0">'setStyle'</span>, <span class="br0">&#123;</span> opacity: <span class="nu0">0</span> <span class="br0">&#125;</span><span class="br0">&#41;</span>; <span class="co1">// ustawienie stylu przezroczystości</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $$<span class="br0">&#40;</span><span class="st0">'#highlightsContainer'</span><span class="br0">&#41;</span>.invoke<span class="br0">&#40;</span><span class="st0">'setStyle'</span>, <span class="br0">&#123;</span> visibility: <span class="st0">'visible'</span> <span class="br0">&#125;</span><span class="br0">&#41;</span>; <span class="co1">// widzialność kontenera</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; $$<span class="br0">&#40;</span><span class="st0">'.pages'</span><span class="br0">&#41;</span>.<a href="http://www.php.net/each"><span class="kw3">each</span></a><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>v, i<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="co1">// pętla</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Event.observe<span class="br0">&#40;</span>v, <span class="st0">'mouseover'</span>, <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="co1">// zdarzenie wykonywane w momencie pojawienia się kursora na elemencie</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">new</span> Effect.Morph<span class="br0">&#40;</span>highlights<span class="br0">&#91;</span>i<span class="br0">&#93;</span>, <span class="br0">&#123;</span> <span class="co1">// animacja</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; style: <span class="st0">'opacity: 1; margin-top: -15px;'</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; duration: <span class="nu0">0.5</span> <span class="co1">// czas 0,5 sekundy</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Event.observe<span class="br0">&#40;</span>v, <span class="st0">'mouseout'</span>, <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="co1">// zdarzenie wykonywane w momencie wyjechania kursorem poza element</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">new</span> Effect.Morph<span class="br0">&#40;</span>highlights<span class="br0">&#91;</span>i<span class="br0">&#93;</span>, <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; style: <span class="st0">'opacity: 0; margin-top: 0px;'</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; duration: <span class="nu0">0.5</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
<p>Tym razem do funkcji w <code>$$('.pages').each()</code> przekazywane są dwa parametry: <code>v</code> i <code>i</code>. Pierwszy z nich jest odpowiednikiem <code>this</code> i wskazuje na aktualnie przetwarzany element tablicy znaczników o klasie <code>.pages</code>. Drugi to numer pokazujący który z kolei tag jest aktualnie sprawdzany. Inaczej pisząc jego zadanie jest równoznaczne do działania parametru <code>i</code> w przykładzie z <strong>jQuery</strong>.</p>
<h2>Demonstracja wyników...</h2>
<p>Stworzyłem dwa gotowe przykłady, których analiza pozwoli Wam jeszcze bardziej zrozumieć jak stworzyć ten efekt. <a href="http://use.m1chu.eu/examples/-jquery/product-highlighter/" title="Product Highlighter - jQuery"><strong>Pierwszy</strong></a>, za pomocą jQuery. <a href="http://use.m1chu.eu/examples/-prototype/product-highlighter/" title="Product Highlighter - Prototype z Scriptaculous"><strong>Drugi</strong></a>, za pomocą Prototype z Scriptaculous.</p>
<p>Jeżeli chcecie dowiedzieć się więcej o tych bibliotekach to zapraszam do ich dokumentacji (<a href="http://www.prototypejs.org/api" title="API Prototype">Prototype</a>, <a href="http://docs.jquery.com/Main_Page" title="API jQuery">jQuery</a>).</p>
<p style="font-size: 9px;">copyright &copy; 2008-2009, <strong>m1chu</strong></p>
<p style="font-size: 9px;">udostępnione na licencji <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="CC">CC</a> dla <strong>vivee.info</strong> i <strong>m1chu.eu</strong></p>
<img src="http://vivee.info/?ak_action=api_record_view&id=620&type=feed" alt="" /><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fvivee.info%2F2009%2F02%2F10%2Fefekt-graficznego-podswietlenia-w-jquery-i-prototype-z-scriptaculous%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://vivee.info/2009/02/10/efekt-graficznego-podswietlenia-w-jquery-i-prototype-z-scriptaculous/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Haki CSS i komentarze warunkowe dla niepokornego Internet Explorera</title>
		<link>http://vivee.info/2009/01/11/haki-css-i-komentarze-warunkowe-dla-niepokornego-internet-explorera/</link>
		<comments>http://vivee.info/2009/01/11/haki-css-i-komentarze-warunkowe-dla-niepokornego-internet-explorera/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 18:48:28 +0000</pubDate>
		<dc:creator>m1chu</dc:creator>
				<category><![CDATA[XHTML/CSS]]></category>
		<category><![CDATA[comment]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[expressions]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[ie7]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jscript]]></category>
		<category><![CDATA[komentarze]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[warunkowe]]></category>

		<guid isPermaLink="false">http://vivee.info/?p=396</guid>
		<description><![CDATA[Dla zwykłego użytkownika Internet Explorer to po prostu pierwsza linia dostępu do Internetu. Nie każdy z nich wie jednak, że jest to linia stosunkowo mało bezpieczna i niestabilna. Wiele mówi się o istniejących już od wielu lat i ciągle rozwijanych alternatywach. I pomimo, że sporo osób skusiło się już na wymianę używanej przeglądarki to rynek [...]]]></description>
			<content:encoded><![CDATA[<p>Dla zwykłego użytkownika <strong>Internet Explorer</strong> to po prostu pierwsza linia dostępu do Internetu. Nie każdy z nich wie jednak, że jest to linia stosunkowo mało bezpieczna i niestabilna. Wiele mówi się o istniejących już od wielu lat i ciągle rozwijanych <a href="http://browsehappy.pl/" title="BrowseHappy - alternatywne przeglądarki!" onclick="this.target='_blank';">alternatywach</a>. I pomimo, że sporo osób skusiło się już na wymianę używanej przeglądarki to rynek nie tylko najnowszej, ale i starszych odsłon IE jest nadal prężny. Zbyt prężny, co najbardziej odbija się na twórcach witryn internetowych. Niepodporządkowanie się standardom powoduje, że często aby praca wychodząca spod ich ręki była prawidłowo interpretowana przez przeglądarkę Microsoftu trzeba użyć pewnego typu zamienników...</p>
<p><span id="more-396"></span></p>
<h2>Dlaczego dyskryminuję IE?</h2>
<p>Bo mam przez tą przeglądarkę więcej pracy. Pracy której by nie było, gdyby wielce wykształceni, po jeszcze większych pod względem stopnia prestiżu uczelniach programiści potrafili "sklepać" ten twór porządnie, wg. istniejących od wielu lat standardów. I nie tylko mi to przysparza nerwów. Wiem, wiem - za chwilę znajdzie się tutaj jakiś specjalista z ogromnej korporacji developerskiej który wytknie mi, że nie szanuję przez to swoich klientów. Ich akurat traktuję poważnie i poświęcam swój czas w takiej ilości, aby zrobić co ma być wykonane porządnie. W hobbistycznych projektach powiem dobitnie i szczerze... w pewnym stopniu lekceważę użytkowników tegoż browsera. Przynajmniej tych którzy świadomie go używają i co najmniej w wersjach niższych niż siódemka. Bo z całej serii chłamu którą wydała korporacja z Redmond tylko ostatnia, "stabilna" (z nazwy) wersja choć odrobinę pokrywa się z wyznaczonymi regułami. Użytkownikom wersji szóstej... współczuję, a ci którzy z premedytacją korzystają z jeszcze starszych odsłon nie zasługują nawet na to.</p>
<p>Żeby nie być gołosłownym wypadałoby podać kilka przyczyn moich ostrych słów.</p>
<ul>
<li>ilość wykrywanych luk i prędkość ich łatania jest niekiedy zastraszająco długa - przykładem są tutaj niektóre błędy opisane na <a href="http://utnij.eu/secunia_ie7/" title="Secunia - IE7" onclick="this.target='_blank';">Secunii (dla IE7 w tym przypadku)</a>.</li>
<li>fakt braku wsparcia dla wersji niższych niż szósta tej przeglądarki, a co za tym idzie niełatanie dziur wykrywanych w nich (niemiło byłoby wstać kiedyś rano i zobaczyć, że konto bankowe z którego korzystaliśmy dzień wcześniej poprzez przeglądarkę z Redmond jest puste, prawda?).</li>
<li>pomimo zrobienia kilku kroków w przód nadal MSIE jest jednym z wolniejszych tego typu rozwiązań.</li>
<li>jest wiele alternatyw takich jak <a href="http://utnij.eu/get_firefox/" title="Pobierz najnowszego Firefoxa" onclick="this.target='_blank';"><strong>Firefox</strong></a>, <a href="http://utnij.eu/get_opera/" title="Pobierz Operę" onclick="this.target='_blank';"><strong>Opera</strong></a> (<a href="http://m1chu.eu/2008/11/16/w-pogoni-za-doskonaleniem-synchronizacji-obslugi-poczty-i-rss-opera-96x/" title="Recenzja Opery 9.6x"><strong>recenzja Opery 9.6x</strong></a>), czy <a href="http://utnij.eu/get_safari/" title="Pobierz Safari" onclick="this.target='_blank';"><strong>Safari</strong></a>. Są one proste w obsłudze, wręcz intuicyjne, a dzięki zaimplementowanym, dodatkowym modułom, czy wtyczkom potrafią w znaczny sposób pomóc w surfowaniu po sieci.</li>
<li>alternatywne przeglądarki względnie poprawnie interpretują standardy sieciowe dotyczące wyświetlania stron przez co nigdy nie zobaczysz prawidłowo napisanej strony w niepoprawnie ułożonym stylu.</li>
</ul>
<p>To tylko namiastka różnic. W sieci znajduje się wiele artykułów pokazujących wyższość przeglądarek, jeszcze kilka lat temu niszowych od tej promowanej przez amerykańskiego giganta. Dlatego nawracajcie swoich znajomych, bo w tym wypadku naprawdę "pozornie inne" znaczy lepsze...</p>
<p class="picture" style="font-size: 10px;"><img src="http://farm4.static.flickr.com/3183/2986841231_56998c714d_o.png" alt="Ranking przeglądarek polskiej części internetu" style="height: 179px;" /></p>
<h2>Nie w jeden dzień Rzym zbudowano...</h2>
<p>Pomimo kilku słów mojej dezaprobaty, i wielu przeszłych lat negatywnych opinii innych ludzi nie da się oczywiście z dnia na dzień nawrócić wszystkich "niewiernych" :] Dlatego meritum dzisiejszego wpisu będzie tematyka komentarzy warunkowych i haków dla "zbuntowanej" przeglądarki.</p>
<p class="picture" style="font-size: 10px;"><img src="http://farm4.static.flickr.com/3201/3126136255_69a44689eb_o.png" alt="Różne typy komentarzy" style="height: 270px;" /><br />Różne typy komentarzy.</p>
<h2>Ukryte komentarze warunkowe</h2>
<p>Od wersji <strong>5</strong> Internet Explorer obsługuje ukryte (pozytywne) komentarze warunkowe (z angielskiego <em>downlevel-hidden (positive) conditional comments</em>). Obsługuje, ale tylko w wersji pod Windowsem (<em>IE/Win</em>), pod Macintoshem już nie (<em>IE/Mac</em>). W zależności od treści w nich zawartych są one widzialne lub nie przez daną przeglądarkę. Jest to szczególnie przydatne jeżeli dany element strony musimy inaczej opisać w IE, niż w jej zamiennikach. Za pewnie sami twórcy zorientowali się wtedy jaki dziki twór stworzyli i choć ciut chcieli się zrehabilitować pozwalając webmasterom chociażby w nadmiarowy sposób tworzyć strony zgodne z ich "dziełem".</p>
<div class="php dean_ch" style="white-space: nowrap;">
<span class="sy0">&lt;!</span>--<span class="br0">&#91;</span><span class="kw1">if</span> IE<span class="br0">&#93;</span><span class="sy0">&gt;</span><br />
kod pomiędzy tymi komentarzami zadziała tylko w odsłonach IE<br />
<span class="sy0">&lt;!</span><span class="br0">&#91;</span><span class="kw1">endif</span><span class="br0">&#93;</span>--<span class="sy0">&gt;</span></div>
<p>Oto przykład najprostszego zastosowania komentarzy. Można ją wykorzystać np. w sekcji <code>head</code> w celu zaimportowania arkusza stylów wykorzystywanego przez produkt z Doliny Krzemowej.</p>
<div class="code dean_ch" style="white-space: nowrap;">&lt;!--[if IE]&gt;<br />
&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;ie_only.css&quot; /&gt;<br />
&lt;![endif]--&gt;</div>
<p>Pierwszy komentarz można także stosownie modyfikować. Obowiązują tu elementy logiczne takie jak negacja, czy znane z systemów *nixowych operatory porównania. Ważnym jest także, aby wiedzieć, że komentarze te istnieją tylko w kodzie (X)HTML, więc jeśli posiadamy na stronie dla przykładu integralny arkusz stylów to nie możemy tychże warunków używać wewnątrz kodu CSS.</p>
<div class="code dean_ch" style="white-space: nowrap;">&lt;!-- dla IE 5: --&gt; &lt;!--[if IE 5]&gt;<br />
&lt;!-- dla IE niższego niż 6: --&gt; &lt;!--[if lt IE 6]&gt;<br />
&lt;!-- dla IE równego lub niższego od 7: --&gt; &lt;!--[if lte IE 7]&gt;<br />
&lt;!-- dla IE innego niż 5.5: --&gt; &lt;!--[if !IE 5.500]&gt;<br />
&lt;!-- dla IE równego lub wyższego niż 6: --&gt; &lt;!--[if gte IE 6]&gt;<br />
&lt;!-- dla IE wyższego niż 5: --&gt; &lt;!--[if gt IE 5]&gt;<br />
&lt;!-- dla IE różnego od 6: --&gt; &lt;!--[if !(IE 6)]&gt;<br />
&lt;!-- dla IE 5: --&gt; &lt;!--[if (IE 5)]&gt;<br />
&lt;!-- dla IE 6 i IE 7: --&gt; &lt;!--[if (gt IE 5)&amp;(lte IE 7)]&gt;<br />
&lt;!-- dla IE 5 lub IE 6: --&gt; &lt;!--[if (IE 5)|(IE 6)]&gt;</div>
<p>Jak można zobaczyć po czwartym przykładzie dozwolone jest używanie wartości <strong>"po przecinku"</strong>. Jest to tzw. wektor wersji (z angielskiego <em>version vector</em>) i trzeba w nim użyć 4rech znaków. W praktyce nie używa się tego prócz wersji <strong>5.500</strong>, gdyż różnice pomiędzy poszczególnymi, bardziej skrupulatnymi odsłonami są niewielkie.</p>
<p>Dozwolone są także łączenia warunków za pomocą znaku <strong>&#038;</strong> lub <strong>|</strong> oraz określanie wersji przeglądarki poprzez użycie nawiasów.</p>
<p class="picture" style="font-size: 10px;"><img src="http://farm4.static.flickr.com/3198/2986980751_da1c718df7_o.png" alt="Operatory porównania wraz z negacją" style="height: 279px;" /><br />Operatory porównania wraz z negacją.</p>
<p>Jest także jeszcze jedna konstrukcja ukrytych komentarzy która pozwala na wysyłanie partii kodu tylko do przeglądarek innych niż IE (a dokładniej ukrywa ona go przed Internet Explorerem). Początkowo miały to wykonywać komentarze odkryte (o których będzie w dalszej części artykułu), ponieważ jednak ingerują one w prawidłowość struktury HTML to można to zrobić poprzez następującą formę.</p>
<div class="code dean_ch" style="white-space: nowrap;">&lt;!--[if !IE]&gt;&lt;!--&gt;<br />
kod pomiędzy tymi komentarzami zadziała w przeglądarkach innych niż IE<br />
&lt;!--&lt;![endif]--&gt;</div>
<p>Posiłkując się ostatnim wersem możemy skonstruować kod który będzie wyświetlał różny tekst w zależności od rodzaju przeglądarki.</p>
<div class="code dean_ch" style="white-space: nowrap;">&lt;body&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Używasz <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;!--[if !IE]&gt;&lt;!--&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; diabelsko dobrej, alternatywnej przeglądarki!<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;!--&lt;![endif]--&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;!--[if lt IE 7]&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; archaicznego i dzurawego kodu insynującego miano przeglądarki <img src='http://vivee.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;![endif]--&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;!--[if IE 7]&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; przeglądarki która pretenduje do tego miana... z mizernym skutkiem :/<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;![endif]--&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/p&gt;<br />
&lt;/body&gt;</div>
<p>Co w rezultacie da (zauważ, że wynik będzie się różnił w zależności od używanej przez Ciebie przeglądarki):</p>
<p style="padding: 20px; background-color: #f6f7ee; border: 2px solid #DEDBD1;">Używasz: <strong><!--[if !IE]><!-->diabelsko dobrej, alternatywnej przeglądarki!<!--<![endif]--><!--[if lt IE 7]>archaicznego i dzurawego kodu insynującego miano przeglądarki <img src='http://vivee.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> <![endif]--><!--[if IE 7]>przeglądarki która pretenduje do tego miana... z mizernym skutkiem :/<![endif]--></strong></p>
<h2>Ciekawostka w postaci odkrytych komentarzy warunkowych</h2>
<p>Odkryte (negatywne) komentarze warunkowe (z angielskiego <em>downlevel-revealed (negative) conditional comments</em>) jak już wspomniałem miały służyć do ukrywania kodu bądź tekstu przed przeglądarkami IE lub przed ich konkretnymi wersjami (np. przed wersjami obsługującymi ukryte komentarze warunkowe, czyli <strong>>= 5.0</strong>). Ich użycie powoduje, że strona przestaje być prawidłowym dokumentem (X)HTML, dlatego nie zalecam ich stosowania.</p>
<div class="code dean_ch" style="white-space: nowrap;">&lt;![if !IE]&gt;<br />
kod pomiędzy tymi komentarzami zadziała w przeglądarkach innych niż IE<br />
&lt;![endif]&gt;</div>
<p>Zaleca się jednak używanie alternatywnej, już wspomnianej w poprzednim paragrafie techniki "pozytywnych komentarzy".</p>
<div class="code dean_ch" style="white-space: nowrap;">&lt;!--[if !IE]&gt;&lt;!--&gt;<br />
&lt;script src=&quot;ie_javascript.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br />
&lt;!--&lt;![endif]--&gt;</div>
<p>Anglojęzyczne tłumaczenie specyfiki komentarzy warunkowych można zaczerpnąć z <a href="http://utnij.eu/10a891e/" title="MSDN CC">MSDN</a>.</p>
<h2>Elementarz komentarzy warunkowych w JavaScript / JScript!</h2>
<p>Nie każdy wie, że od <strong>4rtej</strong> odsłony MSIE także komentarze warunkowe dostępne są w kodzie <strong>Javascript / JScript</strong>.</p>
<div class="javascript dean_ch" style="white-space: nowrap;"><span class="sy0">&lt;</span>script type=<span class="st0">&quot;text/javascript&quot;</span><span class="sy0">&gt;</span><br />
<span class="coMULTI">/*@cc_on<br />
Kod warunkowy<br />
@*/</span><br />
<span class="kw2">&lt;/script&gt;</span></div>
<p>W dyrektywę <code>/*@cc_on</code> i <code>@*/</code> wstawiamy kod warunkowy. Pierwsza fraza pochodzi od angielskiego <em>Conditional Compilation</em>, czyli po polsku kompilacja warunkowa.</p>
<p>Same warunki opierają się o dyrektywy <code>@if</code> (jeżeli), <code>@elif</code> (inaczej jeżeli), <code>@else</code> (ostatecznie jeżeli) i <code>@end</code> (ostateczna wytyczna). Same użycie instrukcji warunkowych nie pozwoli nam na sprawdzenie jakiej przeglądarki używa użytkownik. Należy po danej nazwie dyrektywy dodać <code>@*/</code> co spowoduje, że zostanie wykonana ona w przeglądarkach alternatywnych.</p>
<div class="javascript dean_ch" style="white-space: nowrap;"><span class="coMULTI">/*@cc_on<br />
&nbsp; &nbsp;@if (@_x86)<br />
&nbsp; &nbsp; &nbsp; document.write(&quot;Przeglądarka IE, 32bitowy procesor Intela&quot;)<br />
&nbsp; &nbsp;@else<br />
&nbsp; &nbsp; &nbsp; document.write(&quot;Przeglądarka IE, inny procesor&quot;);<br />
&nbsp; &nbsp;@end<br />
@*/</span></div>
<p>Nie umieściliśmy po pierwszym warunku podanego wyżej ciągu znaków, dlatego obydwa warunki zostaną wykonane w wypadku Internet Explorera. Można jednak zmusić skrypt do odniesienia się w przypadku <code>@else</code> tylko jeżeli nie korzystamy z IE.</p>
<div class="javascript dean_ch" style="white-space: nowrap;"><span class="coMULTI">/*@cc_on<br />
&nbsp; &nbsp;/*@if (@_x86)<br />
&nbsp; &nbsp; &nbsp; document.write(&quot;Przeglądarka IE, 32bitowy procesor Intela&quot;)<br />
&nbsp; &nbsp;@else @*/</span><br />
&nbsp; &nbsp; &nbsp; document.write<span class="br0">&#40;</span><span class="st0">&quot;Przeglądarka alternatywna, inny procesor&quot;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp;<span class="coMULTI">/*@end<br />
@*/</span></div>
<p>W tym wypadku część <code>document.write("Przeglądarka alternatywna, inny procesor");</code> została odkomentowana i zostanie wykonana w przypadku użycia alternatywnych browserów.</p>
<p>Można spytać w tym momencie: "w jaki sposób wykryć wersję Microsoftowskiej przeglądarki?". W dwóch wcześniejszych przykładach zawarłem warunki z argumentem tego typu: <code>@_x86</code>. Jest to jedna z wbudowanych, przedefiniowanych zmiennych których ogółem jest dwanaście (o tylu przynajmniej wiem, a jedną z nich celowo pominąłem z racji zwracania stałej wartości).</p>
<p class="picture" style="font-size: 10px;"><img src="http://farm4.static.flickr.com/3229/2988158568_e21601dd3c_o.png" alt="Predefiniowane zmienne kompilacji warunkowych" style="height: 980px;" /><br />Predefiniowane zmienne kompilacji warunkowych.</p>
<p>Dla przykładu wykorzystując wiedzę o tym, że wersja <strong>JScript 3.x</strong> była zaimplementowana w <strong>IE4</strong>, wersja <strong>4</strong> do <strong>5.5</strong> w <strong>IE5+</strong>, a <strong>5.6</strong> w <strong>IE6</strong> możemy poprzez użycie zmiennej <code>@_jscript_version</code> utworzyć odpowiednie komentarze warunkowe.</p>
<div class="javascript dean_ch" style="white-space: nowrap;"><span class="coMULTI">/*@cc_on<br />
&nbsp; &nbsp;/*@if (@_jscript_version &lt; 4)<br />
&nbsp; &nbsp; &nbsp; document.write(&quot;Internet Explorer 4&quot;);<br />
&nbsp; &nbsp;@elif (@_jscript_version &lt;= 5.5)<br />
&nbsp; &nbsp; &nbsp; document.write(&quot;Internet Explorer 5+&quot;);<br />
&nbsp; &nbsp;@elif (@_jscript_version == 5.6)<br />
&nbsp; &nbsp; &nbsp; document.write(&quot;Internet Explorer 6/7&quot;);<br />
&nbsp; &nbsp;@else @*/</span><br />
&nbsp; &nbsp; &nbsp; document.write<span class="br0">&#40;</span><span class="st0">&quot;Alternatywa <img src='http://vivee.info/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> &quot;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp;<span class="coMULTI">/*@end<br />
@*/</span></div>
<p>Ostatecznie jeżeli będziemy mieć taką potrzebę możemy posiłkować się użyciem własnych zmiennych, definiując je poprzez dyrektywę <code>@set</code>.</p>
<div class="javascript dean_ch" style="white-space: nowrap;"><span class="coMULTI">/*@cc_on<br />
&nbsp; &nbsp;@set zmiennax = 4;<br />
&nbsp; &nbsp;@set zmiennay = @_jscript_version;<br />
&nbsp; &nbsp;/*@if (@zmiennay != @zmiennax)<br />
&nbsp; &nbsp; &nbsp; document.write(&quot;To nie jest IE4!&quot;)<br />
&nbsp; &nbsp;@else<br />
&nbsp; &nbsp; &nbsp; document.write(&quot;IE4 <img src='http://vivee.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> &quot;);<br />
&nbsp; &nbsp;@end<br />
@*/</span></div>
<h2>Ciekawostka numer dwa - tag <em>comment</em></h2>
<p>Drugą ciekawostką dzisiejszego artykułu której nie powinno się stosować z tego samego powodu co poprzedniej jest tag <code>comment</code>. Nie jest to standardowy znacznik ani HTML-a, ani XHTML-a. IE potraktuje go jako zwykły komentarz. Inne przeglądarki powinny za to wyświetlić tekst znajdujący się w nim. Dodatkową różnicą jest fakt, że w tym wypadku i <strong>IE/Win</strong>, i <strong>IE/Mac</strong> tak samo wspierają tą "funkcjonalność", przez co tekst będzie niewidoczny w obydwu wersjach.</p>
<div class="html dean_ch" style="white-space: nowrap;"><span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;p&amp;gt;.html"><span class="kw2">&lt;p&gt;</span></span></a></span>To <span class="sc2">&lt;comment&gt;</span>nie<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;.html"><span class="kw2">&lt;</span></span></a><span class="sy0">/</span>comment&gt;</span> jest MSIE.<span class="sc2"><span class="sy0"><a href="http://december.com/html/4/element/&amp;lt;/p&amp;gt;.html"><span class="kw2">&lt;/p&gt;</span></span></a></span></div>
<p style="padding: 20px; background-color: #f6f7ee; border: 2px solid #DEDBD1;">To <comment><strong>nie</strong></comment> jest MSIE.</p>
<h2>Omijamy niedoskonałości interpretowania CSS przez MSIE (haki)</h2>
<p>Haki CSS to konstrukcje zmieszania różnorodnych znaków z regułami dostępnymi standardowo w arkuszach stylów. Nowoczesne przeglądarki takie konstrukcje w zależności od formy pominą lub zmodyfikują do prawidłowego stylu. IE ich nie ignoruje, po prostu na nich operuje. Nawet w siódmej odsłonie...</p>
<p>Standardowym hakiem jest użycie <code>*</code> przed daną dyrektywą CSS. Zadziała ona we wszystkich wersjach tej przeglądarki, poczynając od <strong>piątki</strong> i patrząc wzwyż.</p>
<div class="css dean_ch" style="white-space: nowrap;">p <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background-color</span><span class="sy0">:</span> <span class="re0">#fff</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; * <span class="kw1">background-color</span><span class="sy0">:</span> <span class="re0">#000</span><span class="sy0">;</span> <span class="coMULTI">/* zadziala tylko w 8 &gt; IE &gt; 4 */</span><br />
<span class="br0">&#125;</span></div>
<p>Krótko wyjaśniając. Wszystkim przeglądarkom obsługującym arkusze stylów zostanie przekazany <strong>biały</strong> kolor tła dla elementu <code>p</code>, z tymże dla Internet Explorera dodatkowo dyrektywa ta zostanie nadpisana tak, że w rezultacie kolor tego tła będzie w nim <strong>czarny</strong> (druga linijka).</p>
<div class="css dean_ch" style="white-space: nowrap;">* html <span class="re0">#id</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background-color</span><span class="sy0">:</span> <span class="re0">#ccc</span><span class="sy0">;</span> <span class="coMULTI">/* nada elementowi o identyfikatorze id tło o odcieniu szarym */</span><br />
<span class="br0">&#125;</span></div>
<p>Oto inny sposób użycia "gwiazdki". Sposób który działa tylko i wyłącznie na <strong>IE6</strong>.</p>
<div class="css dean_ch" style="white-space: nowrap;">*+html <span class="re0">#id</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background-color</span><span class="sy0">:</span> <span class="re0">#ccc</span><span class="sy0">;</span> <span class="coMULTI">/* nada elementowi o identyfikatorze id tło o odcieniu szarym */</span><br />
<span class="br0">&#125;</span></div>
<p>Jak przypomniał <strong>_wsl</strong> z <a href="http://www.webhosting.pl/Haki.CSS.i.komentarze.warunkowe.dla.niepokornego.Internet.Explorera" title="webhosting.pl">webhosting.pl</a>, aby wyselekcjonować właściwości w selektorze tylko dla <strong>IE7</strong> należy posłużyć się powyższa konstrukcją, która od poprzedniej różni się tylko <strong>plusem</strong> umieszczonym za znakiem gwiazdki. Obydwa powyższe przykłady są zgodne ze standardami CSS.</p>
<p>Jeśli na początku właściwości umieścimy znak <code>_</code> to ograniczymy renderowanie dla wersji <strong>5.5</strong> i <strong>6.0</strong>. Dodanie podkreślenia, bądź myślnika (co znane jest z używania rozszerzeń poszczególnych przeglądarek, opisywanych przeze mnie np. <a href="http://m1chu.eu/2008/04/09/wychodzimy-z-doby-doszczetnego-prymitywizmu-zaokraglanie-rogow-w-css/" title="Zaokrąglanie rogów CSS"><strong>tutaj</strong></a>) jest dozwolone wg. specyfikacji co znaczy, że użycie takiej formy dyrektywy nie pozbywa nas walidacji dokumentu CSS.</p>
<div class="css dean_ch" style="white-space: nowrap;">div<span class="re0">#special</span> p <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin-left</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; _margin-<span class="kw1">left</span><span class="sy0">:</span> <span class="re3">15px</span><span class="sy0">;</span> <span class="coMULTI">/* styl zadziała tylko w IE5.5 i IE6 */</span><br />
<span class="br0">&#125;</span></div>
<p>W podobny sposób poprzez użycie <strong>backslasha</strong> (<code></code>) wewnątrz właściwości możemy ograniczyć jej działanie do przeglądarek (!IE) z numerkami innymi niż <strong>5.x</strong> (czyli praktycznie zezwolić na działanie w każdej innej wersji i we wszystkich pozostałych browserach). Należy wiedzieć także, że hak ten nie zadziała jeżeli ukośnik wsteczny umieścimy na początku frazy.</p>
<div class="css dean_ch" style="white-space: nowrap;"><span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">250px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">500px</span><span class="sy0">;</span> <span class="coMULTI">/* tylko dla IE5.x szerokość nie zostanie nadpisana do 500px */</span><br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#withBorder</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">solid</span> <span class="re0">#ccc</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">5px</span> <span class="kw2">solid</span> <span class="re0">#ccc</span><span class="sy0">;</span> <span class="coMULTI">/* tylko dla IE5.x szerokość krawędzi nie zostanie nadpisana do 5px */</span><br />
<span class="br0">&#125;</span></div>
<p>Idąc za rozwiązaniem na <a href="http://utnij.eu/tantek_hacks/" title="Tantek">Tantek.com</a> możemy uzyskać powyższy wynik także poprzez następującą konstrukcję.</p>
<div class="css dean_ch" style="white-space: nowrap;"><span class="re1">.hack</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">800px</span><span class="sy0">;</span> <span class="coMULTI">/* dla IE5.x/Windows */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">voice-family</span><span class="sy0">:</span> <span class="st0">&quot;&quot;</span><span class="br0">&#125;</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span> <span class="coMULTI">/* selektor nie bedzie dalej przetwarzany dla powyzszego przykladu */</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">voice-family</span><span class="sy0">:</span> <span class="kw2">inherit</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">640px</span><span class="sy0">;</span> <span class="coMULTI">/* nadpisanie w alternatywach */</span><br />
<span class="br0">&#125;</span></div>
<p>Podatne na ten błąd wersje możemy oczywiście zmusić w inny sposób do prawidłowej interpretacji arkusza.</p>
<div class="css dean_ch" style="white-space: nowrap;">html&gt;body <span class="re1">.hack</span> <span class="br0">&#123;</span> <span class="coMULTI">/* bez spacji przy &gt; */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">640px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>Komuś może nasunąć się teraz pytanie, jak odróżnić już wspomniane przeze mnie tutaj wersje piątą na Macinthosha i Windowsa?</p>
<div class="css dean_ch" style="white-space: nowrap;"><span class="coMULTI">/* poczatek dla IE5/Mac */</span><br />
<span class="re0">#ieMac</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">50px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="coMULTI">/* koniec */</span> </div>
<p>Oto konstrukcja którą należy użyć, aby zaaprobować styl pod <strong>IE/Mac</strong>.</p>
<div class="css dean_ch" style="white-space: nowrap;"><span class="coMULTI">/* poczatek dla innych niz IE5/Mac */</span><span class="coMULTI">/*/<br />
#notIeMac {<br />
&nbsp; &nbsp; &nbsp; &nbsp; height: 150px;<br />
}<br />
/* */</span></div>
<p>A tak wyglądałoby to dla przeglądarek innych niż <strong>IE/Mac</strong>. Bardzo fajnie (w języku angielskim) jest to opisane na <a href="http://utnij.eu/ie5mac_bpf/" title="IE5/Mac Filter" onclick="this.target='_blank';">StopDesign</a>.</p>
<p>Co mogliście zauważyć większość z tych metod pomija siódme wydanie Internet Explorera. Developerzy tej wersji już dawno na swoim blogu <a href="http://utnij.eu/no_hacks_in_ie7/" title="MSDN Blog" onclick="this.target='_blank';">pisali, aby usunąć ze swoich stron haki</a>. W najnowszej wersji przeglądarki został zastosowany tryb zbliżonej kompatybilności z standardami, pewnie stąd te zalecenia. Nie mniej jednak grupa konstrukcji związanych z własnościami pozostała i po części została rozszerzona.</p>
<div class="css dean_ch" style="white-space: nowrap;"><span class="coMULTI">/* zbior hackow dla IE7 */</span><br />
html <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ` <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ~ <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ! <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">@ background: #cdcdcd;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; # <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $ <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; % <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ^ <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &amp; <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; * <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; = <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; + <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#93;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; | <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; , <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt; <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; . <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &gt; <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; / <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ? <span class="kw1">background</span><span class="sy0">:</span> <span class="re0">#cdcdcd</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>Znakami które sprawiają, że IE7 zaczyna interpretować regułę są więc praktycznie wszystkie dostępne spoza polskiego alfabetu na standardowej klawiaturze użytkownika. Co ciekawsze można je w specyficzny sposób łączyć co daje efekt równoznaczny z pojedynczą linią ostatniego przykładu z tymże dla poprzednich odsłon browsera.</p>
<div class="css dean_ch" style="white-space: nowrap;"><span class="re1">.zlaczone</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; `~!<span class="co1">@#$%^&amp;* background: #cdcdcd; /* &lt; IE 7 */</span><br />
<span class="br0">&#125;</span></div>
<p>We wszystkich wersjach obsługujących haki prócz siódmej (jej niestabilne odsłony są jednak jeszcze podatne na ten błąd) możemy do właściwości dodać <code>!important</code> o wyższym priorytecie niż zwykła reguła i nieobsługiwanym w takim wypadku przez wcześniej wymienione przeglądarki.</p>
<div class="css dean_ch" style="white-space: nowrap;">div<span class="re0">#dzialanieImportant</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">800px</span> !important<span class="sy0">;</span> <span class="coMULTI">/* inne */</span></p>
<p>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">640px</span><span class="sy0">;</span> <span class="coMULTI">/* IE5.x / IE6.x / IE7beta */</span><br />
<span class="br0">&#125;</span></div>
<h2>No i na finiszu zarys rozszerzenia <em>expressions</em></h2>
<p>Kiedy każda z powyższych metod zawodzi z ostateczną pomocą (pomijając rozwiązania zewnętrzne) przychodzi nam metoda zaawansowanego użytkowania haków z poziomu CSS, czyli rozszerzenie <strong>expressions</strong>.</p>
<p><strong>expressions</strong> (dynamiczne właściwości) - rozszerzenie przeglądarek IE (włącznie z siódmą odsłoną) pozwalające na używanie pseudokodu JavaScript (gdyż jest on ograniczony strukturą CSS, czego przykładem jest brak możliwości deklaracji zmiennych za pomocą <strong>var</strong>, czy używanie przecinków zamiast średników) na elementach arkusza stylów.</p>
<p><strong>Składnia:</strong></p>
<div class="css dean_ch" style="white-space: nowrap;">blok <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; własciwość<span class="sy0">:</span> expression<span class="br0">&#40;</span>JavaScript<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>Nie przeprowadzę tu wykładu na temat JavaScript, którego znajomość jest niezbędna do operowania na <em>expressions</em>. Podam jednak kilka przykładów obrazujących co może być parametrem tego rozszerzenia.</p>
<p>Elementarnymi słowami kluczowymi są <code>document</code> (będący obiektem) oraz <code>this</code> (będący referencją do aktualnie przetwarzanego obiektu). W pierwszym wypadku używając odpowiednich właściwości możemy na przykład ustawić absolutną pozycję danego elementu względem rozmiarów okna przeglądarki, bądź nadać stronie maksymalną, dozwoloną szerokość względem rozdzielczości ekranu użytkownika (czego nie da się zrobić w starszych odsłonach Internet Explorera z powodu nie obsługiwania przez nie dyrektyw <code>max-height</code>, <code>min-height</code>, <code>max-width</code> i <code>min-width</code>). Przedstawiam dwa przykłady, które tylko i wyłącznie mają zobrazować możliwości operowania JS-em w kodzie CSS.</p>
<div class="css dean_ch" style="white-space: nowrap;">div<span class="re0">#container</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">max-width</span><span class="sy0">:</span> <span class="re3">800px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* ponizej mamy dwa przyklady tzw. wyrazenia dynamicznego */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> expression<span class="br0">&#40;</span>document<span class="re1">.body</span><span class="re1">.clientWidth</span> &gt; <span class="nu0">800</span> ? <span class="st0">&quot;800px&quot;</span> <span class="sy0">:</span> <span class="st0">&quot;100%&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="coMULTI">/* ustawi 800px szerokosci jezeli szerokosc klienta jest wieksza niz 800px, w przeciwnym wypadku nastąpi skalowanie do tej wartosci */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">min-height</span><span class="sy0">:</span> <span class="re3">600px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> expression<span class="br0">&#40;</span>document<span class="re1">.body</span><span class="re1">.clientHeight</span> &lt; <span class="nu0">600</span> ? <span class="st0">&quot;100%&quot;</span> <span class="sy0">:</span> <span class="st0">&quot;600px&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="coMULTI">/* ustawi 100% wysokosci jezeli wysokosc klienta jest mniejsza niz 600px, w przeciwnym wypadku nastąpi skalowanie do tej wartosci */</span><br />
<span class="br0">&#125;</span></div>
<div class="css dean_ch" style="white-space: nowrap;">p<span class="re0">#logo</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">left</span><span class="sy0">:</span> expression<span class="br0">&#40;</span><span class="br0">&#40;</span>document<span class="re1">.body</span><span class="re1">.offsetWidth</span> - <span class="nu0">500</span><span class="br0">&#41;</span> + <span class="st0">&quot;px&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="coMULTI">/* ustalenie pozycji lewej wzgledem szerokosci okna przegladarki - dla XHTML nalezaloby posilkowac sie obiektem window */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">bottom</span><span class="sy0">:</span> expression<span class="br0">&#40;</span><span class="br0">&#40;</span>document<span class="re1">.body</span><span class="re1">.offsetHeight</span> - <span class="nu0">200</span><span class="br0">&#41;</span> + <span class="st0">&quot;px&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="coMULTI">/* ustalenie pozycji dolnej wzgledem wysokosci okna przegladarki - dla XHTML nalezaloby posilkowac sie obiektem window */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">color</span><span class="sy0">:</span> expression<span class="br0">&#40;</span>this<span class="re1">.parentNode</span><span class="re1">.lastChild</span><span class="re1">.style</span><span class="re1">.color</span> = <span class="st0">'#f0f0f0'</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="coMULTI">/* ustalenie koloru czcionki ostatniego potomka rodzica przetwarzanego elementu DOM */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3">300px</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">height</span><span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>W wypadku zmiany koloru skorzystaliśmy z konstrukcji odniesienia się do rodzica elementu (<code>parentNode</code>), po czym do ostatniego potomka tegoż rodzica (<code>lastChild</code>), by na koniec po prostu nadać pożądany kolor (<code>style.color</code>). </p>
<p>W wypadku stylów możemy nadać wartość własności także poprzez <code>setProperty()</code> zalecane przez W3C.</p>
<div class="css dean_ch" style="white-space: nowrap;"><span class="kw1">color</span><span class="sy0">:</span> expression<span class="br0">&#40;</span>this<span class="re1">.parentNode</span><span class="re1">.lastChild</span><span class="re1">.style</span><span class="re1">.setProperty</span><span class="br0">&#40;</span><span class="st0">&quot;color&quot;</span>, <span class="st0">&quot;#f0f0f0&quot;</span>, null<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="coMULTI">/* forma preferowana przez w3c */</span></div>
<p>Takich własności jest oczywiście więcej, a przykładami są:</p>
<ul>
<li>wspomniane <code>parentNode</code> - wskazuje na rodzica elementu w drzewie dokumentu,</li>
<li><code>childNodes</code> - tablica elementów potomnych, których istnienie można sprawdzić poprzez użycie metody <code>.hasChildNodes()</code> lub przez sprawdzenie jej długości argumentem <code>.length</code>. Do danych potomków odnosimy się jak do zwykłej tablicy, czyli np. <strong>3ci</strong> element odczytywalibyśmy w formie <code>element.childNodes[2];</code>,</li>
<li><code>firstChild</code> - pierwszy element potomny,</li>
<li><code>lastChild</code> - ostatni element potomny,</li>
<li><code>previousSibling</code> - poprzedni element,</li>
<li><code>nextSibling</code> - następny element,</li>
<li><code>nodeName</code> - nazwa aktualnego elementu,</li>
<li><code>nodeValue</code> - wartość aktualnego elementu.</li>
</ul>
<p class="picture" style="font-size: 10px;"><a href="http://farm4.static.flickr.com/3271/2996137314_982227421d_o.png" title="Własności DOM dla drzewa dokumentu" class="lightbox"><img src="http://farm4.static.flickr.com/3271/2996137314_44709a2649.jpg" alt="Własności DOM dla drzewa dokumentu" style="height: 279px;" /></a>Własności DOM dla drzewa dokumentu.</p>
<p>Korzystając z tego rozszerzenia należy to robić z reguły w osobnym arkuszu przeznaczonym tylko dla MSIE. Jeżeli robimy to jednak w arkuszu ogólnodostępnym to zaleca się poprzedzanie właściwości ciągiem <code>-ie</code> (podobnie jak dla przeglądarek fundacji Mozilla stosuje się <code>-moz</code>).</p>
<div class="css dean_ch" style="white-space: nowrap;">div<span class="re0">#practiceEval</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; -ie-noeval = expression<span class="br0">&#40;</span>p = document<span class="re1">.createElement</span><span class="br0">&#40;</span><span class="st0">&quot;p&quot;</span><span class="br0">&#41;</span>, this<span class="re1">.parentNode</span><span class="re1">.appendChild</span><span class="br0">&#40;</span>p<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; -ie-witheval = expression<span class="br0">&#40;</span>get_width = document<span class="re1">.body</span><span class="re1">.clientWidth</span>, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; eval<span class="br0">&#40;</span>if <span class="br0">&#40;</span> get_width &gt; <span class="nu0">800</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this<span class="re1">.appendChild</span><span class="br0">&#40;</span>document<span class="re1">.createTextNode</span><span class="br0">&#40;</span>get_width<span class="br0">&#41;</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
<p>I na koniec bardziej skomplikowany, finalny przykład. Pierwsza właściwość tworzy tag typu <code>p</code> i przenosi go na koniec zawartości rodzica. Ma on ukazać użycie <strong>przecinka</strong> zamiast <strong>średnika</strong> w wielolinijkowym kodzie. W <code>-ie-witheval</code> użyliśmy za to funkcji <code>eval()</code> dzięki której w jej parametrze mogą znajdować się wyrażenia zawierające takie elementy jak instrukcje warunkowe, czy wyłapywanie błędów. Nadal jednak niedozwolona jest deklaracja zmiennych z użyciem wyrażenia <code>var</code> oraz posługiwanie się średnikami w celu oddzielenia partii kodu.</p>
<h2>Wspomniałeś coś o rozwiązaniach zewnętrznych, to znaczy?</h2>
<p>Jednym z takich rozwiązań jest skrypt (o wielkości <strong>1kB</strong>!) <a href="http://utnij.eu/css_browser_selector/" title="CSS Browser Selector">CSS Browser Selector</a> który dzięki możliwości dodawania do właściwości nazw klasy określających przeglądarkę lub system ułatwia pisanie pod nie kodu arkusza stylów.</p>
<div class="css dean_ch" style="white-space: nowrap;"><span class="re1">.win</span><span class="re1">.ie5</span> <span class="re0">#test</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">5px</span> <br />
<span class="br0">&#125;</span></div>
<p>Powyższy kod ustawiony zostanie dla identyfikatora <strong>test</strong> i przeglądarki IE5 systemu Windows. Nadany zostanie oczywiście margines o szerokości pięciu pikseli.</p>
<p>Skrypt korzysta z JavaScriptu co może powodować, że nie zostanie on zaaplikowany każdemu użytkownikowi, albo zostanie to wykonane dopiero po załadowaniu DOM.</p>
<p>-----</p>
<p>Coś niezrozumiałego? Jakieś pytania? Zapraszam do komentowania.</p>
<p style="font-size: 9px;">copyright &copy; 2008-2009, <strong>m1chu</strong></p>
<p style="font-size: 9px;">udostępnione na licencji <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="CC">CC</a> dla <strong>vivee.info</strong> i <strong>m1chu.eu</strong></p>
<img src="http://vivee.info/?ak_action=api_record_view&id=396&type=feed" alt="" /><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fvivee.info%2F2009%2F01%2F11%2Fhaki-css-i-komentarze-warunkowe-dla-niepokornego-internet-explorera%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://vivee.info/2009/01/11/haki-css-i-komentarze-warunkowe-dla-niepokornego-internet-explorera/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>

