<?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; table</title>
	<atom:link href="http://adamczuk.net.pl/tag/table/feed/" rel="self" type="application/rss+xml" />
	<link>http://adamczuk.net.pl</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 06 Feb 2012 20:33:59 +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>Kolorowanie wierszy i kolumn w tabeli</title>
		<link>http://adamczuk.net.pl/2009/12/16/kolorowanie-wierszy-i-kolumn-w-tabeli/</link>
		<comments>http://adamczuk.net.pl/2009/12/16/kolorowanie-wierszy-i-kolumn-w-tabeli/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 20:49:47 +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[table]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=236</guid>
		<description><![CDATA[Nowoczesny sposób na kolorowanie wierszy i kolumn w tabeli z wykorzystaniem selektorów potomka.]]></description>
			<content:encoded><![CDATA[<p><img src="http://adamczuk.net.pl/wp-content/uploads/2009/12/zebra-striping.jpg" alt="zebra-striping" title="zebra-striping" width="300" height="100" class="left size-full wp-image-237" /> Tabele to jedne z najpopularniejszych elementów jakie występują na stronach internetowych. Rozbudowana struktura tabel pozwala na osiągnięcie wspaniałych efektów poprzez zastosowanie stylów kaskadowych.<br />
<span id="more-236"></span></p>
<p>Przykłady stylizacji tabel zostały w 2006 roku zebrane przez niezawodny <a href="http://www.smashingmagazine.com/2006/12/29/css-based-tables-modern-solutions/">Smashing Magazine</a>. Czas w sieci upływa bardzo szybko, wiele z tych przykładów, jeśli nie wszystkie to przykłady przestarzałe. Jednak ten sam Smashing Magazine w nowszym artykule prezentuje naprawdę atrakcyjne <a href="http://www.smashingmagazine.com/2008/08/13/top-10-css-table-designs/">przykłady</a>. Niestety wygląd to nie wszystko.</p>
<h3>Problem</h3>
<p>Wielokrotnie zdarza się, że za ciekawym wyglądem tabeli kryje się nadmierna liczba klas, które dotyczą poszczególnych elementów. Podstawowa struktura tabeli składa się z trzech znaczników <code>&lt;table&gt;</code>, <code>&lt;tr&gt;</code> oraz <code>&lt;td&gt;</code>, które tworzą odpowiedni element tabeli, wiersze i poszczególne komórki.</p>
<p>Taka struktura nie pozwala na zbyt wiele, ponieważ odniesienie się do elementów poprzez selektory kontekstu jest wręcz niemożliwa. Jedyne dostępne rozwiązanie to wykorzystanie atrybutów <code>&lt;class&gt;</code> i selektorów klas.</p>
<p>Kolorowanie wierszy i kolumn wymaga użycia atrybutu <code>&lt;class&gt;</code> dla każdej komórki. Kolorowanie samych wierszy uzyskamy poprzez atrybuty<code>&lt;class&gt;</code> dla poszczególnych znaczników <code>&lt;tr&gt;</code>. Poniższe style określają kolor tła dla nieparzystego i parzystego wiersza oraz nieparzystej i parzystej kolumny.</p>
<pre><code>.odd-row {
	background: #eee;
}
.even-row {
	background: #ccc;
}
.odd-column {
	background: #fcc;
}
.even-column {
	background: #f44;
}</code></pre>
<p>Zamierzony efekt zostanie osiągnięty, ale kod naszej tabeli stanie się mniej czytelny, zarówno dla wyszukiwarek, jak i dla ludzie. Istnieje dobra alternatywa dla powyższego rozwiązania.</p>
<h3>Rozwiązanie pośrednie</h3>
<p>Konieczne zmiany dotyczą kodu tabeli. Struktura tabeli udostępnia elementy grupujące wiersze oraz kolumny. Znaczniki <code>&lt;thead&gt;</code>, <code>&lt;tbody&gt;</code> oraz <code>&lt;tfoot&gt;</code> grupują odpowiednio wiersze nagłówka, danych i stopki.</p>
<p>Analogiczne przeznaczenie ma znacznik <code>&lt;colgroup&gt;</code>, który obejmuje poszczególne kolumny tabeli, zdefiniowane przez znaczniki <code>&lt;col&gt;</code>.</p>
<p>Ważne jest zrozumienie kolejności wyświetlania warstw, które tworzą strukturę tabeli. Szczegółowy <a href="http://www.456bereastreet.com/archive/200410/bring_on_the_tables/">artykuł</a> na ten temat napisał Roger Johansson.</p>
<p>Zmodyfikowana struktura pozwala na użycie analogicznych stylów w arkuszu, jednak zamiast selektorów klasy korzystamy z selektorów kontekstu.</p>
<h3>Nowoczesne podejście</h3>
<p>Selektory potomka oferowane przez CSS3 umożliwiają jeszcze dokładniejsze odwołanie się do elementów w strukturze dokumentu. Niestety Internet Explorer <a href="http://adamczuk.net.pl/2009/01/08/obsluga-selektorow-css3-przez-przegladarki/">nie obsługuje</a> selektora potomka, co jest sporym mankamentem tego rozwiązania.</p>
<pre><code>col:nth-child(odd) {
	background: #faa;
}
col:nth-child(even) {
	background: #f44;
}
tbody tr:nth-child(odd) {
	background: transparent url(img/grey-10-transparent.png) 0 0 repeat;
}
tbody tr:nth-child(even) {
	background: transparent url(img/grey-50-transparent.png) 0 0 repeat;
}</code></pre>
<p>Właściwe dobranie kolorów tła oraz obrazów pozwala na uzyskanie właściwego kolorowania wierszy i kolumn. Wygląd <a href="http://adamczuk.net.pl/-/multiple-zebra-striping/">tabeli</a> jest dokładnie taki, jak oczekiwaliśmy. Dodatkowa zaleta tego podejścia to struktura tabeli wolna od zbędnych atrybutów <code>&lt;class&gt;</code>. </p>
<h3>Podsumowanie</h3>
<p>Przedstawione przykłady różnią się sposobem w jaki uzyskano efekt końcowy. Czytelniejsza struktura i lżejszy kod to wielka zaleta. Podobnych rozwiązań istnieje wiele, jednak nie stosuje się ich powszechnie z powodu braku wsparcia po stronie Internet Explorera.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2009/12/16/kolorowanie-wierszy-i-kolumn-w-tabeli/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>

