<?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>adamczuk.net.pl &#187; zebra</title>
	<atom:link href="http://adamczuk.net.pl/tag/zebra/feed/" rel="self" type="application/rss+xml" />
	<link>http://adamczuk.net.pl</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 06 May 2012 22:34:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Tabele i style kaskadowe</title>
		<link>http://adamczuk.net.pl/2009/07/07/tabele-i-style-kaskadowe/</link>
		<comments>http://adamczuk.net.pl/2009/07/07/tabele-i-style-kaskadowe/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 19:26:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[selectors]]></category>
		<category><![CDATA[striping]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[zebra]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=201</guid>
		<description><![CDATA[Prosta, szybka i nowoczesna zmiana wyglądu tabeli]]></description>
			<content:encoded><![CDATA[<p>Tabela jest jednym z podstawowych elementów HTML, a przeznaczeniem tabeli jest prezentacja danych tebelarycznych. Przed laty dzięki swoim właściwościom tabele były wykorzystywane na wiele różnych, niekoniecznie właściwych sposobów. Obecne technologie pozwalają na zmienienie wyglądu tabeli bardzo prosto i szybko, jednocześnie zachowując minimalną ilość znaczników, zamiast wiele klas.</p>
<p>Uzyskanie takich efektów umożliwia CSS3, który jest poprawnie obsługiwany przez nowoczesne przeglądarki. Trudno mówić o komercyjnym zastosowaniu takiego rozwiązania, kiedy Internet Explorer 8 <a href="http://adamczuk.net.pl/2009/01/08/obsluga-selektorow-css3-przez-przegladarki/">odmawia</a> poprawnej interpretacji wielu selektorów CSS3, w tym bardzo użytecznych selektorów potomka. Jednak praktycznie zapoznanie się z nowymi możliwościami CSS3, pozwoli na ich stosowanie chociażby w niekomercyjnych projektach lub własnych zastosowaniach.</p>
<p><span id="more-201"></span></p>
<h3>Wprowadzenie</h3>
<p>Pierwszym krokiem jest stworzenie struktury tabeli. Danymi źródłowymi były wartości indeksów na GPW, zaczerpnięte z serwisu <a href="http://gielda.wp.pl/POD,20,a,1,b,2,c,3,notowania.html">finansowego</a> Wirtualnej Polski. Jakie było moje zdziwienie, gdy kod dwukolorowej tabeli z kilkowa wierszami zawierał ponad 3000 znaków. Jednak takie są skutki formatowania danych w kodzie HTML, a także błędne wykorzystanie dostępnych technologii.</p>
<p>Minimalna struktura tabeli to znaczniki <code>&lt;table&gt;</code>, <code>&lt;tr&gt;</code> oraz <code>&lt;td&gt;</code>. Elementy te odpowiadają za tworzenie całej tabeli, kolejnych wierszy i poszczególnych komórek. W dalszej kolejności możemy dołączyć <code>&lt;thead&gt;</code>, <code>&lt;tbody&gt;</code>, a także <code>&lt;tfoot&gt;</code>, które dzielą całość tabeli na poszczególne sekcje: nagłówek, zawartość oraz stopkę. Wielu programistów zapomina o opisie tabeli, który zamieszczamy w tagu <code>&lt;caption&gt;</code>. Szczegółowe informacje na temat struktury tabeli w XHTML przedstawia <a href="http://www.w3.org/TR/2004/WD-xhtml2-20040722/mod-tables.html">specyfikacja</a> na stronie W3C.</p>
<p>Poniżej został przedstwiony skrócony kod tabeli, jaka była użyta w tym artykule.</p>
<pre><code>&lt;table&gt;
    &lt;caption&gt;Indeksy (WIG20 bez opóźnień)&lt;/caption&gt;
    &lt;thead&gt;
        &lt;tr&gt;
            &lt;th rowspan="2"&gt;czas&lt;/th&gt;
            &lt;th rowspan="2"&gt;nazwa&lt;/th&gt;
            &lt;th colspan="2"&gt;wartość [pkt]&lt;/th&gt;
            &lt;th colspan="2"&gt;zmiana&lt;/th&gt;
            &lt;th colspan="3"&gt;wartość [pkt]&lt;/th&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;th&gt;bieżąca&lt;/th&gt;
            &lt;th&gt;odniesienia&lt;/th&gt;
            &lt;th&gt;[pkt]&lt;/th&gt;
            &lt;th&gt;[%]&lt;/th&gt;
            &lt;th&gt;otwarcia&lt;/th&gt;
            &lt;th&gt;min&lt;/th&gt;
            &lt;th&gt;max&lt;/th&gt;
        &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;16:40&lt;/td&gt;
            &lt;td&gt;WIG20&lt;/td&gt;
            &lt;td&gt;1 810,38&lt;/td&gt;
            &lt;td&gt;1 810,97&lt;/td&gt;
            &lt;td&gt;-0,59&lt;/td&gt;
            &lt;td&gt;-0,03&lt;/td&gt;
            &lt;td&gt;1 824,07&lt;/td&gt;
            &lt;td&gt;1 803,29&lt;/td&gt;
            &lt;td&gt;1 837,98&lt;/td&gt;
        &lt;/tr&gt;
        ...
    &lt;/tbody&gt;
&lt;/table&gt;</code></pre>
<p>Najważniejsza zaleta tabeli to czytelność danych, które są grupowane wierszami, kolumnami lub wierszami i kolumnami. Niestety zbyt małe odstępy między komórkami niekorzystnie wpływają na szukanie danych oraz ich porównywanie, co przedstawia pierwszy <a href="http://adamczuk.net.pl/-/modern-table/example-1.html">przykład</a>.</p>
<h3>Wersja podstawowa</h3>
<p>Selektory potomka dostępne w CSS3 odnoszą się do odpowiednich elementów potomnych danego rodzica. Tabela to powtarzający się zbiór określonych znaczników, a zatem idealnie nadaje się do zademonstrowania wspomnianych selektorów strukturalnych.</p>
<p>Najpierw zajmiemy się ustawieniem podstawowych właściwości dla naszej tabeli, jak tło, odstępy rozmiar czcionki dla wszystkich komórek.</p>
<pre><code>table {
    background: #aaa;
    font-family: sans-serif;
    font-size: 12px;
    border-spacing: 1px;
}</code></pre>
<p>Dotychczasowym sposobem na uzyskanie kolorowania wierszy w tabelach było stosowanie atrybutu <em>class</em> dla elementu <code>&lt;tr&gt;</code>. jeszcze trudniejsze było kolorowanie kolumn, które wymagało takiego zabiegu przy każdej komórce <code>&lt;td&gt;</code>. Jednak CSS3 pozwala na szybkie odnalezienie dowolnego elementu w strukurze DOM, pod warunkiem, że znamy jego rodzica.</p>
<p>Odnalezienie nieparzystych wierszy tabeli i ustawienie koloru tła umożliwia następujący selektor <code>tr:nth-child(2n+1)</code>. Możliwy jest, także bardziej ludzki zapis, czyli <code>tr:nth-child(odd)</code>.</p>
<pre><code>table tr:nth-child(odd) td {
    background: #eee;
}</code></pre>
<p>Analogicznie postępujemy w przypadku parzystych wierszy, do których zastosujemy selektor <code>tr:nth-child(2n)</code> lub <code>tr:nth-child(even)</code>.</p>
<pre><code>table tr:nth-child(even) td {
    background: #ccc;
}</code></pre>
<p>Kolejne reguły ustawiają kolor tła nagłówka, odstępy kolor czcionki. Informacje przedstawione w całej tabeli zostały wyrównane do prawej, pownieważ większość z kolumn zawiera dane liczbowe. Dwie pierwsze kolumny zostały wyrównane do lewej, dzięki selektorom potomka ustawionym dla komórek <code>td:nth-child(1)</code> i <code>td:nth-child(2)</code>.</p>
<pre><code>table th {
    background: #000;
    padding: 5px 10px;
    color: #fff;
}
table td {
    padding: 3px 5px;
    text-align: right;
}
td:nth-child(1),
td:nth-child(2) {
    text-align: left;
}</code></pre>
<p>Kilkanaście linijek kodu CSS zmienia znacząco wygląd naszej tabeli, co pokazuje <a href="http://adamczuk.net.pl/-/modern-table/example-2.html">kolejny</a> przykład. To nie koniec możliwości jakie oferuje CSS w przypadku stylowania tabel.</p>
<p>Możliwe jest ustawienie określonych właściwości dla poszczególnych kolumn, tak jak to miało miejsce w przypadku wyrównania zawartości pierwszej i drugiej kolumny. Bardzo przydatny jest opis tabeli umieszczony w znaczniku <code>&lt;caption&gt;</code>, który bez przeszkód modyfikujemy w stylach kaskadowych.</p>
<p>Jeśli szerokość naszej tabeli jest zbyt mała i chcemy zwiększyć jej rozmiar to z pomocą przychodzą następujące reguły:</p>
<pre><code>table {
    width: 100%;
    max-width: 1024px;
}</code></pre>
<p>Dzięki tym właściowościom nasza tabela dostosuje się do szerokości strony lub elementu, w którym jest umieszczona, nie przekraczając przy tym 1024 pikseli. W przypadku osadzenia tabeli w elemencie o zadanej szerokości, druga właściowość jest zbędna.</p>
<h3>Podsumowanie</h3>
<p>Dalsze możliwości stylizacji przykładowej tabeli są równie łatwe, dzięki zastosowaniu nowych selektorów. Wszystko zależy od naszych potrzeb i wyobraźni. Przeglądarki, które obsługują selektory CSS3 to Firefox 3.1+, Opera 9+, Safari 3+ oraz Chrome. Istnieje częściowe wsparcie dla wymienionych selektorów w przeglądarkach Internet Explorer, jednak nawet IE8 nie obsługuje sporej ich części.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2009/07/07/tabele-i-style-kaskadowe/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

