<?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>Miximum &#187; css</title>
	<atom:link href="http://www.miximum.fr/tag/css/feed" rel="self" type="application/rss+xml" />
	<link>http://www.miximum.fr</link>
	<description>Le blog d&#039;un ingénieur web freelance</description>
	<lastBuildDate>Wed, 16 Nov 2011 16:25:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Jouons avec les pseudos-classes des sélecteurs css</title>
		<link>http://www.miximum.fr/methodes-et-outils/272-jouons-avec-les-pseudos-classes-des-selecteurs-css</link>
		<comments>http://www.miximum.fr/methodes-et-outils/272-jouons-avec-les-pseudos-classes-des-selecteurs-css#comments</comments>
		<pubDate>Fri, 14 Aug 2009 16:14:06 +0000</pubDate>
		<dc:creator>thibault</dc:creator>
				<category><![CDATA[Méthodes et outils]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://www.miximum.fr/?p=272</guid>
		<description><![CDATA[&#199;a fait quelques temps (depuis la sortie de firefox 3.5, en fait) que j&#8217;avais envie de jouer avec quelques s&#233;lecteurs css issus de la version 3 de la norme. En fait, nous allons nous amuser avec quelques pseudos-classes. Pour les cancres, les pseudos-classes sont un m&#233;canisme de css qui permet de s&#233;lectionner des &#233;l&#233;ments selon [...]]]></description>
			<content:encoded><![CDATA[<p>&Ccedil;a fait quelques temps (depuis la sortie de firefox 3.5, en fait) que j&#8217;avais envie de jouer avec quelques <a href="http://www.w3.org/TR/css3-selectors/">s&eacute;lecteurs css issus de la version 3 de la norme</a>. En fait, nous allons nous amuser avec quelques pseudos-classes. Pour les cancres, les pseudos-classes sont un m&eacute;canisme de css qui permet de s&eacute;lectionner des &eacute;l&eacute;ments selon des crit&egrave;res qui ne sont pas explicitements contenus dans de document.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">a<span class="re2">:hover </span><span class="br0">&#123;</span> … <span class="br0">&#125;</span> <span class="coMULTI">/* Ça vous dit quelque chose ? */</span></pre></div></div>

<p>Voici donc notre &eacute;l&eacute;ment html de travail, un joli (ou pas) tableau tout ce qu&#8217;il y a de plus classique&nbsp;:</p>
<table class="testtable">
<tr>
<td>riri</td>
<td>fifi</td>
<td>loulou</td>
</tr>
<tr>
<td>moutarde</td>
<td>mayo</td>
<td>ketchup</td>
</tr>
<tr>
<td>git</td>
<td>cvs</td>
<td>svn</td>
</tr>
<tr>
<td>linus</td>
<td>richard</td>
<td>eric</td>
</tr>
<tr>
<td>html</td>
<td>css</td>
<td>php</td>
</tr>
<tr>
<td>symfony</td>
<td>cake</td>
<td>pluf</td>
</tr>
</table>
<p>Et le code associ&eacute;&nbsp;:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">&nbsp;
<span class="sc3"><span class="re1">&lt;table<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;tr<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>riri<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>fifi<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>loulou<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;/tr<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;tr<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>moutarde<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>mayo<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>ketchup<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;/tr<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;tr<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>git<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>cvs<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>svn<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;/tr<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;tr<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>linus<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>richard<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>eric<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;/tr<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;tr<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>html<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>css<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>php<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;/tr<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;tr<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>symfony<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>cake<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;td<span class="re2">&gt;</span></span></span>pluf<span class="sc3"><span class="re1">&lt;/td<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;/tr<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/table<span class="re2">&gt;</span></span></span></pre></div></div>

<h2>nth-child et nth-last-child</h2>
<p>Notre premier s&eacute;lecteur porte le doux nom de <strong>nth-child</strong>. Son utilit&eacute;<span class="fine">&nbsp;</span>? Il permet de styler des &eacute;l&eacute;ments choisis selon leur index dans des groupes. Un exemple sera beaucoup plus parlant.</p>
<p>Imaginons que je veuille affecter une couleur de fond &agrave; toutes les lignes impaires de mon tableau (ce que est un besoin assez courant). Et pour pousser le vice, je souhaite aussi mettre en gras une ligne sur trois &agrave; partir de la deuxi&egrave;me (&ccedil;a, c&#8217;est d&eacute;j&egrave; moins courant).</p>
<p>Et bien surprise, je vais faire &ccedil;a tr&egrave;s simplement&nbsp;:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">table tr<span class="re2">:nth-</span>child<span class="br0">&#40;</span>2n<span class="sy0">+</span><span class="nu0">1</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
    <span class="kw1">background-color</span><span class="sy0">:</span> <span class="re0">#f0f0f0</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
table tr<span class="re2">:nth-</span>child<span class="br0">&#40;</span>3n<span class="sy0">+</span><span class="nu0">2</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
    <span class="kw1">font-weight</span><span class="sy0">:</span> <span class="kw2">bold</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>

<p>La syntaxe &laquo;&nbsp;nth-child(an+b)&nbsp;&raquo; signifie qu&#8217;on s&eacute;lectionne l&#8217;&eacute;l&eacute;ment num&eacute;ro &laquo;&nbsp;b&nbsp;&raquo; dans chaque groupe de &laquo;&nbsp;a&nbsp;&raquo; &eacute;l&eacute;ments par rapport &agrave; un parent commun. Quand au s&eacute;lecteur nth-last-child, il fonctionne exactement de la m&ecirc;me fa&ccedil;on, except&eacute; le fait que le comptage des &eacute;l&eacute;ments se fait de bas en haut dans le document (c&#8217;est clair ?).</p>
<p>Et le r&eacute;sultat&nbsp;:</p>
<table class="testtable" id="test1">
<tr>
<td>riri</td>
<td>fifi</td>
<td>loulou</td>
</tr>
<tr>
<td>moutarde</td>
<td>mayo</td>
<td>ketchup</td>
</tr>
<tr>
<td>git</td>
<td>cvs</td>
<td>svn</td>
</tr>
<tr>
<td>linus</td>
<td>richard</td>
<td>eric</td>
</tr>
<tr>
<td>html</td>
<td>css</td>
<td>php</td>
</tr>
<tr>
<td>symfony</td>
<td>cake</td>
<td>pluf</td>
</tr>
</table>
<p>Pas mal, non<span class="fine">&nbsp;</span>? Comment, vous ne voyez pas la diff&eacute;rence<span class="fine">&nbsp;</span>? Et bien, c&#8217;est parce que <a href="http://www.css3.info/modules/selector-compat/">votre navigateur ne g&egrave;re pas les s&eacute;lecteurs avanc&eacute;s</a>. Il serait peut-&ecirc;tre temps d&#8217;utiliser un vrai navigateur<span class="fine">&nbsp;</span>?</p>
<p>Ici, nous avons pris un tableau pour exemple, mais on pourrait styler un commentaire sur deux dans un blog, ou imaginer des choses beaucoup plus tordues. Par exemple, on pourait affecter 5 couleurs successives &agrave; tous les paragraphes de la page&nbsp;:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">p<span class="re2">:nth-</span>child<span class="br0">&#40;</span>5n<span class="sy0">+</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">background-color</span><span class="sy0">:</span> <span class="kw1">blue</span><span class="sy0">;</span> <span class="br0">&#125;</span>
p<span class="re2">:nth-</span>child<span class="br0">&#40;</span>5n<span class="sy0">+</span><span class="nu0">2</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">background-color</span><span class="sy0">:</span> <span class="kw2">red</span><span class="sy0">;</span> <span class="br0">&#125;</span>
p<span class="re2">:nth-</span>child<span class="br0">&#40;</span>5n<span class="sy0">+</span><span class="nu0">3</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">background-color</span><span class="sy0">:</span> <span class="kw2">yellow</span><span class="sy0">;</span> <span class="br0">&#125;</span>
<span class="coMULTI">/* … */</span></pre></div></div>

<p>Ah<span class="fine">&nbsp;</span>! Et au fait&nbsp;:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">tr<span class="re2">:nth-</span>child<span class="br0">&#40;</span>2n<span class="sy0">+</span><span class="nu0">1</span><span class="br0">&#41;</span>
<span class="coMULTI">/* peut être raccourci en */</span>
tr<span class="re2">:nth-</span>child<span class="br0">&#40;</span>odd<span class="br0">&#41;</span>
<span class="coMULTI">/* et */</span>
tr<span class="re2">:nth-</span>child<span class="br0">&#40;</span>2n<span class="br0">&#41;</span>
<span class="coMULTI">/* est équivalent à */</span>
tr<span class="re2">:nth-</span>child<span class="br0">&#40;</span>even<span class="br0">&#41;</span></pre></div></div>

<h2>nth-of-type, nth-last-of-type</h2>
<p>Le s&eacute;lecteur <strong>nth-of-type</strong> ressemble &agrave; <strong>nth-child</strong>, sauf qu&#8217;on ne prends en compte que les &eacute;l&eacute;ments de m&ecirc;me type pour effectuer les groupes. Quand &agrave; <strong>nth-last-of-type</strong>, vous aurez devin&eacute; &agrave; quoi il sert. L&agrave; encore, un exemple sera plus parlant.</p>
<p>Admettons que mon article contienne des images d&#8217;illustrations. Je veux aligner successivement les images &agrave; droite, puis &agrave; gauche, et ce automatiquement, dans la mesure o&ugrave; je suis un fain&eacute;ant.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="re0">#article</span> img<span class="re2">:nth-of-</span>type<span class="br0">&#40;</span>odd<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">right</span><span class="sy0">;</span> <span class="br0">&#125;</span>
<span class="re0">#article</span> img<span class="re2">:nth-of-</span>type<span class="br0">&#40;</span>even<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span> <span class="br0">&#125;</span></pre></div></div>

<p>Et le r&eacute;sultat&nbsp;:</p>
<div id="testarticle">
<p>
<img src="http://farm4.static.flickr.com/3609/3385334129_9ac670d131_t.jpg" alt="~ Bee Vibrant ~" border="0" /><br />
Primi igitur omnium statuuntur Epigonus et Eusebius ob nominum gentilitatem oppressi. praediximus enim Montium sub ipso vivendi termino his vocabulis appellatos fabricarum culpasse tribunos ut adminicula futurae molitioni pollicitos.<br />
<img src="http://farm1.static.flickr.com/85/233472093_1f1d235e7b_t.jpg" alt="Sunny Side Up" border="0" /><br />
Tantum autem cuique tribuendum, primum quantum ipse efficere possis, deinde etiam quantum ille quem diligas atque adiuves, sustinere.<br />
<img src="http://farm3.static.flickr.com/2233/1949102662_c1286eea01_t.jpg" alt="Little stars" border="0" /><br />
Non enim neque tu possis, quamvis excellas, omnes tuos ad honores amplissimos perducere, ut Scipio P. Rupilium potuit consulem efficere, fratrem eius L. non potuit. Quod si etiam possis quidvis deferre ad alterum, videndum est tamen, quid ille possit sustinere.<br />
<img src="http://farm3.static.flickr.com/2267/2089071977_7de8ae1a03_t.jpg" alt="Campo de Amapolas" border="0" /><br />
Post hanc adclinis Libano monti Phoenice, regio plena gratiarum et venustatis, urbibus decorata magnis et pulchris<span class="fine">&nbsp;</span>; in quibus amoenitate celebritateque nominum Tyros excellit, Sidon et Berytus isdemque pares Emissa et Damascus saeculis condita priscis.</p>
</div>
<p>Alors<span class="fine">&nbsp;</span>!? Hein<span class="fine">&nbsp;</span>?! C&#8217;est-y-pas beau<span class="fine">&nbsp;</span>?!? Moi, en tout cas, &ccedil;a m&#8217;&eacute;merveille toujours autant (oui, je suis sensible).</p>
<h2>first-child et last-child</h2>
<p>&Ccedil;a, c&#8217;est facile. <strong>first-child</strong> permet de s&eacute;lectionner le premier parmi une liste d&#8217;&eacute;l&eacute;ments. Et <strong>last-child</strong>, je vous laisse deviner ce que c&#8217;est.</p>
<p>Petit exemple facile&nbsp;:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">table tr<span class="re2">:first-child</span><span class="sy0">,</span>
table tr<span class="re2"><span class="sy0">:</span>last-child
</span><span class="br0">&#123;</span>
    <span class="kw1">background-color</span><span class="sy0">:</span> <span class="re0">#f0f0f0</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>

<p>Et que voit-on apparaitre devant nos yeux &eacute;bahis<span class="fine">&nbsp;</span>???</p>
<table class="testtable" id="test2">
<tr>
<td>riri</td>
<td>fifi</td>
<td>loulou</td>
<td>loulou</td>
</tr>
<tr>
<td>moutarde</td>
<td>mayo</td>
<td>ketchup</td>
<td>loulou</td>
</tr>
<tr>
<td>git</td>
<td>cvs</td>
<td>svn</td>
<td>loulou</td>
</tr>
<tr>
<td>linus</td>
<td>richard</td>
<td>eric</td>
<td>loulou</td>
</tr>
<tr>
<td>html</td>
<td>css</td>
<td>php</td>
<td>loulou</td>
</tr>
<tr>
<td>symfony</td>
<td>cake</td>
<td>pluf</td>
<td>loulou</td>
</tr>
</table>
<h2>first-of-type, last-of-type</h2>
<p>Les s&eacute;lecteurs <strong>first-of-type</strong> et <strong>last-of-type</strong> permettent respectivement de s&eacute;lectionner le premier et le dernier parmi les fr&egrave;res de l&#8217;&eacute;l&eacute;ment. Comme d&#8217;hab&#8217; un petit exemple&nbsp;:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">td<span class="re2">:first-of-type </span><span class="br0">&#123;</span>
    <span class="kw1">padding-left</span><span class="sy0">:</span> <span class="re3">100px</span> <span class="sy0">;</span>
<span class="br0">&#125;</span>
td<span class="re2">:last-of-type </span><span class="br0">&#123;</span>
    <span class="kw1">padding-right</span><span class="sy0">:</span> <span class="re3">100px</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>

<p>Ici, nous s&eacute;lectionnons les premiers et derniers &eacute;l&eacute;ments &laquo;&nbsp;td&nbsp;&raquo; de chaque ligne et on leur applique un padding particulier. Le r&eacute;sultat&nbsp;:</p>
<table class="testtable" id="test3">
<tr>
<td>riri</td>
<td>fifi</td>
<td>loulou</td>
<td>loulou</td>
</tr>
<tr>
<td>moutarde</td>
<td>mayo</td>
<td>ketchup</td>
<td>loulou</td>
</tr>
<tr>
<td>git</td>
<td>cvs</td>
<td>svn</td>
<td>loulou</td>
</tr>
<tr>
<td>linus</td>
<td>richard</td>
<td>eric</td>
<td>loulou</td>
</tr>
<tr>
<td>html</td>
<td>css</td>
<td>php</td>
<td>loulou</td>
</tr>
<tr>
<td>symfony</td>
<td>cake</td>
<td>pluf</td>
<td>loulou</td>
</tr>
<tr>
<td>symfony</td>
<td>cake</td>
<td>pluf</td>
<td>loulou</td>
</tr>
</table>
<h2>only-child, only-of-type</h2>
<p>Le s&eacute;lecteur <strong>only-child</strong> d&eacute;signe un &eacute;l&eacute;ment qui n&#8217;as pas de fr&egrave;res dans l&#8217;arbo. <strong>only-of-type</strong> d&eacute;signe un &eacute;l&eacute;ment qui n&#8217;a pas de fr&egrave;res du m&ecirc;me type que lui.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc3"><span class="re1">&lt;ul<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;li<span class="re2">&gt;</span></span></span>test<span class="sc3"><span class="re1">&lt;/li<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;li<span class="re2">&gt;</span></span></span>test<span class="sc3"><span class="re1">&lt;/li<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;li<span class="re2">&gt;</span></span></span>test<span class="sc3"><span class="re1">&lt;/li<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;li<span class="re2">&gt;</span></span></span>test<span class="sc3"><span class="re1">&lt;/li<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/ul<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;ul<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;li<span class="re2">&gt;</span></span></span>test<span class="sc3"><span class="re1">&lt;/li<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/ul<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;ul<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;li<span class="re2">&gt;</span></span></span>test<span class="sc3"><span class="re1">&lt;/li<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;li<span class="re2">&gt;</span></span></span>test<span class="sc3"><span class="re1">&lt;/li<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/ul<span class="re2">&gt;</span></span></span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">li<span class="re2">:only-of-type </span><span class="br0">&#123;</span>
    <span class="kw1">font-weight</span><span class="sy0">:</span> <span class="kw2">bold</span><span class="sy0">;</span>
    <span class="kw1">background-color</span><span class="sy0">:</span> <span class="kw2">lime</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>

<div id="test4">
<ul>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
</ul>
<ul>
<li>test</li>
</ul>
<ul>
<li>test</li>
<li>test</li>
</ul>
</div>
<h2>not</h2>
<p><strong>not(X)</strong> permet de s&eacute;lectionner les &eacute;l&eacute;ments qui ne correspondent pas au s&eacute;lecteur pass&eacute; en param&egrave;tre.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">li<span class="sy0">:</span>not<span class="br0">&#40;</span><span class="re2">:only-of-</span>type<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">font-weight</span><span class="sy0">:</span> <span class="kw2">bold</span><span class="sy0">;</span>
    <span class="kw1">background-color</span><span class="sy0">:</span> <span class="kw2">lime</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>

<div id="test5">
<ul>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
</ul>
<ul>
<li>test</li>
</ul>
<ul>
<li>test</li>
<li>test</li>
</ul>
</div>
<h2>Conclusions et r&eacute;f&eacute;rences</h2>
<p>Bien entendu, tous les s&eacute;lecteurs peuvent dans une certaine mesure &ecirc;tre combin&eacute;s pour cr&eacute;er des expressions puissantes (tordues). Autre &eacute;vidence, l&#8217;int&eacute;r&ecirc;t de la chose reste somme toutes assez limit&eacute;s &agrave; cause du support navrant des s&eacute;lecteurs css3 de la part d&#8217;un certain navigateur.</p>
<p>Pour finir, pour les curieux, je vous dirige vers les r&eacute;f&eacute;rences qui ont servi de base &agrave; cet article.</p>
<ul>
<li><a href="http://www.w3.org/TR/css3-selectors/#pseudo-classes">http://www.w3.org/TR/css3-selectors/#pseudo-classes</a></li>
<li><a href="http://mozilla.hoa-project.net/Demo/Css_3_selectors/Demonstration.html">http://mozilla.hoa-project.net/Demo/Css_3_selectors/Demonstration.html</a></li>
<li><a href="http://hacks.mozilla.org/2009/07/slick-tables-with-css-3-selectors/">http://hacks.mozilla.org/2009/07/slick-tables-with-css-3-selectors/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.miximum.fr/methodes-et-outils/272-jouons-avec-les-pseudos-classes-des-selecteurs-css/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>HTML5, quelles nouveautés ?</title>
		<link>http://www.miximum.fr/actus/238-html5-quelles-nouveautes</link>
		<comments>http://www.miximum.fr/actus/238-html5-quelles-nouveautes#comments</comments>
		<pubDate>Sun, 05 Jul 2009 10:37:07 +0000</pubDate>
		<dc:creator>thibault</dc:creator>
				<category><![CDATA[Actus]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.miximum.fr/?p=238</guid>
		<description><![CDATA[photo credit&#160;: JL&#160;! Ah moins d&#8217;&#234;tre rest&#233;s loin de votre &#233;cran depuis quelques semaines, vous avez s&#251;rement d&#233;j&#224; entendu parler de la sortie de firefox 3.5. Cette sortie est particuli&#232;rement exitante[1] pour les d&#233;veloppeurs car elle impl&#233;mente un paquet de fonctionalit&#233;s fort all&#233;chantes, la plupart tir&#233;es des sp&#233;cifications du futur HTML5. HTML5 va de plus [...]]]></description>
			<content:encoded><![CDATA[<div class="postimg alignleft"><a href="http://www.flickr.com/photos/23312388@N00/2161626058/" title="Web Developer Gang Sign" target="_blank"><img src="http://farm3.static.flickr.com/2112/2161626058_4711249549_m.jpg" alt="Web Developer Gang Sign" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" title="Attribution-NonCommercial-ShareAlike License" target="_blank"><img src="http://www.miximum.fr/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit&nbsp;: <a href="http://www.flickr.com/photos/23312388@N00/2161626058/" title="JL!" target="_blank">JL<span class="fine">&nbsp;</span>!</a></small></div>
<p>Ah moins d&#8217;&ecirc;tre rest&eacute;s loin de votre &eacute;cran depuis quelques semaines, vous avez s&ucirc;rement d&eacute;j&agrave; entendu parler de <a href="http://www.mozilla.com/en-US/firefox/video/firefox-3.5.html">la sortie de firefox 3.5</a>. Cette sortie est particuli&egrave;rement exitante<sup><a href="#footnote-1-238" id="footnote-link-1-238" title="Voir la note.">[1]</a></sup> pour les d&eacute;veloppeurs car elle impl&eacute;mente <a href="https://developer.mozilla.org/en/Firefox_3.5_for_developers">un paquet de fonctionalit&eacute;s fort all&eacute;chantes</a>, la plupart tir&eacute;es des sp&eacute;cifications du futur HTML5.</p>
<p>HTML5 va de plus en plus devenir une r&eacute;alit&eacute; (m&ecirc;me si les in&eacute;vitables boulets que l&#8217;on se tra&icirc;ne d&eacute;j&agrave; depuis des ann&eacute;es continueront &agrave; ralentir son adoption), et jai pens&eacute; que le moment &eacute;tait bien choisi pour effectuer un petit survol rapide des nouveaut&eacute;s de la b&ecirc;te. Les curieux pourront aller <a href="http://www.w3.org/TR/html5-diff/">s&#8217;abreuver &agrave; la source</a>.</p>
<h2>Les nouvelles balises</h2>
<p>Depuis le temps qu&#8217;on vous le r&eacute;p&egrave;te, le html, c&#8217;est pour la s&eacute;mantique, et le css, c&#8217;est pour la mise en forme. Sauf qu&#8217;une page remplie de divs, c&#8217;est quand m&ecirc;me un peu moyen question s&eacute;mantique. C&#8217;est pourquoi html5 d&eacute;finit de nouvelles balises destin&eacute;es &agrave; organiser plus clairement vos contenus.</p>
<p>Saluons donc l&#8217;apparition des balises <strong>header</strong>, <strong>footer</strong>, <strong>section</strong> et <strong>article</strong>, qui seront tr&eacute;s certainement appr&eacute;ci&eacute;es des blogueurs. <strong>nav</strong> permettra d&#8217;indiquer une zone de navigation (un menu, quoi), et <strong>aside</strong> une portion de contenu parall&egrave;le (un exergue, par exemple).</p>
<p>De nouveaux &eacute;l&eacute;ments interactifs font leur apparition. <strong>progress</strong> permettra d&#8217;afficher une barre d&#8217;avancement, <strong>meter</strong> une jauge, <strong>details</strong> une zone d&#8217;information additionnelle affichable &agrave; la demande, et <strong>datagrid</strong> sera utilis&eacute;e pour repr&eacute;senter de fa&ccedil;on interactive des donn&eacute;es sous formes d&#8217;arbres, de listes ou de tableaux.</p>
<p>Certaines balises se sont vues attribu&eacute;es de nouveaux attributs (marrant &ccedil;a&#8230;), et d&#8217;autres ont vu leur sens red&eacute;fini, telles que <strong>b</strong>, <strong>i</strong>, <strong>hr</strong>, etc&hellip;</p>
<p>Pour finir, certaines balises passeront directement &agrave; la trappe, et dans le cas de <strong>frame</strong>, par exemple, elles ne seront s&ucirc;rement pas regrett&eacute;es.</p>
<h2>Les m&eacute;dias &agrave; la f&ecirc;te</h2>
<p>Parmi les nouveaut&eacute;s qui sont sans doute les plus attendues, on trouve les stars du moment, les balises <strong>audio</strong> et <strong>video</strong> qui permettront &agrave; vos navigateurs de g&eacute;rer directement ces &eacute;l&eacute;ments multim&eacute;dias. La balise <strong>canvas</strong>, quand &agrave; elle, permettra d&#8217;afficher dynamiquement des graphismes 2d sur la page (<a href="http://ajaxian.com/archives/firefox-canvas-3d-extension-available">et m&ecirc;me, pourquoi pas, de la 3d</a>). </p>
<p>Gr&acirc;ce &agrave; ces balises, et aux apis correspondantes, il va devenir possible de cr&eacute;er de vrais applications multim&eacute;dias en pur html / css / js, qui permettront (enfin) de basarder nos plugins flash tout pourris &agrave; la poubelle.</p>
<h2>Enfin des vrais formulaires</h2>
<div class="postimg alignright"><a href="http://www.flickr.com/photos/99757245@N00/1544393823/" title="222/365 tv toes" target="_blank"><img src="http://farm3.static.flickr.com/2185/1544393823_3ed819f08f_m.jpg" alt="222/365 tv toes" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by-nc/2.0/" title="Attribution-NonCommercial License" target="_blank"><img src="http://www.miximum.fr/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit&nbsp;: <a href="http://www.flickr.com/photos/99757245@N00/1544393823/" title="obo-bobolina" target="_blank">obo-bobolina</a></small></div>
<p>Il faut bien l&#8217;avouer, la gestion des formulaires avec html4, c&#8217;est quand m&ecirc;me pas de la tarte. Pas de typage pr&eacute;cis des entr&eacute;es, pas de moyen standard de tester les valeurs saisies c&ocirc;t&eacute; client, bref&hellip; C&#8217;est du brut de pomme. Heureusement, html5 vient changer un peu tout &ccedil;a.</p>
<p>La nouveaut&eacute; la plus int&eacute;ressante &agrave; mon avis r&eacute;side dans la possibilit&eacute; de pouvoir sp&eacute;cifier une validation du formulaire c&ocirc;t&eacute; client. Il est par exemple possible d&#8217;indiquer si un champ est obligatoire ou pas. Le d&eacute;veloppeur pourra fixer des contraintes qui s&#8217;appliqueront sur les champs (min, max, pattern, autocomplete, etc.), et que le navigateur se chargera de faire respecter.</p>
<p><strong>input</strong> gagne quelques nouveaux types (datetime, range, number, email, url, color, etc.) qui permettront au navigateur d&#8217;afficher directement les widgets qui vont bien.</p>
<p>L&#8217;attribut <strong>form</strong> permettra de sp&eacute;cifier &agrave; quel formulaire se rattache un champ. Ce qui signifie que les dits champs pourront se trouver n&#8217;impore o&ugrave; dans la page, et plus uniquement <em>sous</em> la balise form corrspondante.</p>
<p>Enfin, notons l&#8217;apparition de l&#8217;attribut <strong>autofocus</strong>, que l&#8217;on pourra attribuer &agrave; un input pour lui donner le focus d&eacute;s la page charg&eacute;e.</p>
<h2>Des Apis en pagaille</h2>
<p>De nouvelles apis feront leurs apparitions, pour permettre aux d&eacute;veloppeurs de cr&eacute;er de v&eacute;ritables applications dynamiques.</p>
<p>Citons les apis multim&eacute;dias (audio, video, dessin 2d) d&eacute;j&agrave; mentionn&eacute;es. Une autre api sera destin&eacute;e &agrave; faire fonctionner les applications web offline (&agrave; la google gears). Il sera possible de g&eacute;rer l&#8217;&eacute;dition de document ou l&#8217;historique de navigation. L&#8217;api webstorage permettra de stocker des donn&eacute;es persistentes d&#8217;une mani&egrave;re autremement plus puissante qu&#8217;avec les antiques cookies. L&#8217;api de GeoLocalisation permettra au navigateur de vous localiser. Mentionnons enfin <a href="https://developer.mozilla.org/En/DragDrop/Drag_and_Drop">l&#8217;api de drag &#038; drop, d&#8217;ores et d&eacute;j&agrave; impl&eacute;ment&eacute;e dans Firefox 3.5</a>.</p>
<h2>Pour finir</h2>
<p>En r&eacute;sum&eacute;, HTML 5, &ccedil;a siouxe<span class="fine">&nbsp;</span>! Le web va enfin disposer d&#8217;un langage &agrave; la hauteur de ses usages. La sp&eacute;cification HTML 5 n&#8217;est qu&#8217;&agrave; l&#8217;&eacute;tat de brouillon, et ne sera ent&eacute;rin&eacute;e que lorsqu&#8217;il existera au moins deux impl&eacute;mentations compl&egrave;tes diff&eacute;rentes. Esp&eacute;rons que son adoption sera suffisamment rapide pour ne pas laisser de place aux silverlight, flex et autres javafx.</p>
<h4>Notes&nbsp;:</h4><ol class="footnotes"><li id="footnote-1-238">Ouais, bon, chacun ses fantasmes, hein<span class="fine">&nbsp;</span>!  [<a href="#footnote-link-1-238">retour</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.miximum.fr/actus/238-html5-quelles-nouveautes/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

