<?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>Facilitant la web &#187; selectors</title>
	<atom:link href="http://blog.facilitant.net/tag/selectors/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.facilitant.net</link>
	<description>Recursos, consells i reflexions sobre el món de la web</description>
	<lastBuildDate>Tue, 02 Mar 2010 11:10:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ús de selectors CSS atípics: els selectors d&#8217;atribut</title>
		<link>http://blog.facilitant.net/2009/02/05/us-de-selectors-css-atipics-els-selectors-datribut/</link>
		<comments>http://blog.facilitant.net/2009/02/05/us-de-selectors-css-atipics-els-selectors-datribut/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 15:21:55 +0000</pubDate>
		<dc:creator>Ramon Vilar Gavaldà</dc:creator>
				<category><![CDATA[Desenvolupament]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[selectors]]></category>

		<guid isPermaLink="false">http://blog.facilitant.net/?p=93</guid>
		<description><![CDATA[Quan parlem de selectors CSS sovint ens venen al cap o als ulls expressions d&#8217;aquest tipus:
* {...}
e {...}
e f {...}
e &#62; f {...}
e, f {...}
Però dins l&#8217;àmbit de selectors, hi ha tot un món de possibilitats que ens poden ajudar molt al nostre dia a dia (sinó, doneu-li un cop d&#8217;ull a l&#8217;apartat de selectors [...]]]></description>
			<content:encoded><![CDATA[<p>Quan parlem de selectors <acronym xml:lang="en" title="Cascading Style Sheets">CSS</acronym> sovint ens venen al cap o als ulls expressions d&#8217;aquest tipus:</p>
<pre><code class="css">* {...}
e {...}
e f {...}
e &gt; f {...}
e, f {...}</code></pre>
<p>Però dins l&#8217;àmbit de selectors, hi ha tot un món de possibilitats que ens poden ajudar molt al nostre dia a dia (sinó, doneu-li un cop d&#8217;ull a l&#8217;apartat de selectors de l&#8217;especificació de <a href="http://www.w3.org/TR/CSS2/selector.html" hreflang="en"><acronym xml:lang="en" title="Cascading Style Sheets">CSS</acronym>2<sup>1</sup></a> o de <a href="http://www.w3.org/TR/css3-selectors/" hreflang="en"><acronym xml:lang="en" title="Cascading Style Sheets">CSS</acronym>3</a>).</p>
<p>Del gran conjunt de selectors, en aquesta entrada vull parlar una mica i posar diversos exemples de com treure-li profit als selectors d&#8217;atribut. Abans de continuar, i per variar una mica, aquest tipus de selectors no funcionen en Internet Explorer 6 o anterior.</p>
<p>Els selectors d&#8217;atribut són els següents:</p>
<table border="0">
<thead>
<tr>
<th>Patró</th>
<th>Significat</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="css">E[foo]</code></td>
<td>Un element E amb un atribut &#8220;foo&#8221;</td>
</tr>
<tr>
<td><code class="css">E[foo="bar"]</code></td>
<td>Un element E amb un atribut &#8220;foo&#8221; i el seu valor és exactament &#8220;bar&#8221;</td>
</tr>
<tr>
<td><code class="css">E[foo~="bar"]</code></td>
<td>Un element E amb un atribut &#8220;foo&#8221; que és una llista de valors separats per espais i un d&#8217;aquests és &#8220;bar&#8221;</td>
</tr>
<tr>
<td><code class="css">E[foo^="bar"]</code></td>
<td>Un element E amb un atribut &#8220;foo&#8221; i el seu valor comença exactament per &#8220;bar&#8221;</td>
</tr>
<tr>
<td><code class="css">E[foo$="bar"]</code></td>
<td>Un element E amb un atribut &#8220;foo&#8221; i el seu valor acaba exactament per &#8220;bar&#8221;</td>
</tr>
<tr>
<td><code class="css">E[foo*="bar"]</code></td>
<td>Un element E amb un atribut &#8220;foo&#8221; i el seu valor conté la cadena &#8220;bar&#8221;</td>
</tr>
<tr>
<td><code class="css">E[foo|="bar"]</code></td>
<td>un element E amb un atribut &#8220;foo&#8221; que és una llista de valors separats per guions i comença per &#8220;bar&#8221;</td>
</tr>
</tbody>
</table>
<p>Per exemplificar l&#8217;ús d&#8217;aquest tipus de selectors, prendrem com a cas d&#8217;ús la personalització d&#8217;enllaços en diferents situacions.</p>
<p>Per exemple, i tal i com es fa en aquest bloc amb els enllaços, podríem voler adjuntar de forma visible pel lector quin és l&#8217;idioma de la pàgina enllaçada. Aquí ho fem amb la següent regla:</p>
<pre><code class="css">a[hreflang]:after {
  content: " ["attr(hreflang)"]";
  font-size: 0.8em;
}</code></pre>
<p>Seguint l&#8217;exemple dels idiomes, podríem voler marcar l&#8217;enllaç d&#8217;un cert idioma amb una icona gràfica al seu voltant. Per exemple, en el cas del català, ho podríem fer de la següent manera:</p>
<pre><code class="css">a[hreflang="ca"] {
  background: url(icona-catala.png) no-repeat right center;
  padding-right: 1em;
}</code></pre>
<p>Seguint amb aquests exemples, imaginem-nos que tenim un enllaç on el seu atribut <code class="html">rel</code> té el conjunt de valors <code>friend met co-worker muse</code> i volem caracteritzar els amics amb una icona especial al costat de l&#8217;enllaç. Doncs bé, ho podríem fer amb el següent codi:</p>
<pre><code class="css">a[rel~="friend"] {
  background: url(icona-amic.png) no-repeat right center;
  padding-right: 1em;
}</code></pre>
<p>Si ens interessés destacar amb alguna icona, tots els enllaços que tinguessin com a destí el <abbr title="World Wide Web Consortium" xml:lang="en">W3C</abbr>, podríem fer servir el següent codi:</p>
<pre><code class="css">a[href^="http://www.w3c.org"] {
  background: url(icona-w3c.png) no-repeat right center;
  padding-right: 1em;
}</code></pre>
<p>O per exemple, si volguéssim posar-li una icona del format del fitxers enllaçat, podríem usar el següent codi pel cas del <acronym title="Portable Document Format" xml:lang="en">PDF</acronym>:</p>
<pre><code class="css">a[href$=".pdf"] {
  background: url(icona-pdf.png) no-repeat right center;
  padding-right: 1em;
}</code></pre>
<p>Seguint amb tot això, si volem tenir un enllaç caracteritzat si el seu atribut <code class="html">title</code> o l&#8217;<code class="html">href</code> conté la paraula &#8220;css&#8221;, podem usar el següent codi:</p>
<pre><code class="css">a[title*="css"][href*="css"]:after {
  color: #000;
  content: " (enllaç sobre CSS)";
  font-size: 0.8em;
}</code></pre>
<p>I per acabar amb el darrer selector i tornant amb els exemples de la caracterització d&#8217;enllaços segons el seu idioma, podríem voler caracteritzar tots els enllaços en anglès amb una icona, independentment de si és anglès americà (<code>en-US</code>) o el general (<code>en</code>):</p>
<pre><code class="css">a[hreflang|="en"] {
  background: url(icona-angles.png) no-repeat right center;
  padding-right: 1em;
}</code></pre>
<p>Amb tots aquests exemples, es pot veure que gràcies a aquest selector, se&#8217;ns obra tot un món de possibilitats a l&#8217;hora de caracteritzar diversos elements.</p>
<div class="nota">
Com a curiositat, fa un temps, quan encara no havia sortit Internet Explorer 7 i degut a que les versions anteriors no reconeixien aquest selector, els maquetadors més radicals usaven aquest selector per a tenir dues versions diferents d&#8217;un lloc: una per a Internet Explorer i l&#8217;altre per als demés navegadors. Això ho podien aconseguir fent regles d&#8217;aquest estil:</p>
<pre><code class="css">
div#contenidor {
  /* estils per a IE6 i anteriors */
}

div[id="contenidor"} {
  /* estils per als altres navegadors */
}
</code></pre>
<p>No digueu que no és curiós, oi?</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.facilitant.net/2009/02/05/us-de-selectors-css-atipics-els-selectors-datribut/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
