<?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; css</title>
	<atom:link href="http://blog.facilitant.net/tag/css/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>Thu, 02 Feb 2012 07:12:55 +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>CSS Mastery. Advanced web standards solutions</title>
		<link>http://blog.facilitant.net/2009/08/27/css-mastery-advanced-web-standards-solutions/</link>
		<comments>http://blog.facilitant.net/2009/08/27/css-mastery-advanced-web-standards-solutions/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 14:37:15 +0000</pubDate>
		<dc:creator>Ramon Vilar Gavaldà</dc:creator>
				<category><![CDATA[llibres]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[estàndards]]></category>

		<guid isPermaLink="false">http://blog.facilitant.net/?p=165</guid>
		<description><![CDATA[En el seu moment, quan em vaig llegir aquest llibre, va marcar un abans i un després en els meus coneixements sobre maquetació web. Si en el seu moment vaig recomanar el llibre Bulletproof Web Design per aquells que volen entrar al món de la maquetació web, recomano ara el CSS Mastery per tots aquells [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.facilitant.net/wp-content/uploads/2009/08/css-mastery.jpg"><img class="alignleft size-medium wp-image-168" title="Portada del llibre CSS Mastery" src="http://blog.facilitant.net/wp-content/uploads/2009/08/css-mastery-250x300.jpg" alt="Portada del llibre CSS Mastery" width="250" height="300" /></a>En el seu moment, quan em vaig llegir aquest llibre, va marcar un abans i un després en els meus coneixements sobre maquetació web.</p>
<p>Si en el seu moment <a hreflang="ca" href="http://blog.facilitant.net/2008/11/30/bulletproof-web-design/">vaig recomanar el llibre <span xml:lang="en">Bulletproof Web Design</span></a> per aquells que volen entrar al món de la maquetació web, recomano ara el <a xml:lang="en" hreflang="en" href="http://www.cssmastery.com/"><acronym title="Cascading Style Sheet">CSS</acronym> Mastery</a> per tots aquells que volen accedir a uns coneixements més avançats d&#8217;aquest món, i poder passar així a fer projectes més complexes.</p>
<p><a xml:lang="en" hreflang="en" href="http://andybudd.com/">Andy Budd</a> ens avisa des d&#8217;un principi: això no és pas un llibre per a novells, sinó que està fet per aquells que vulguin donar una volta més de cargol a la maquetació web. Ho diu amb raó, ja que el llibre comença amb un primer capítol de repàs, però ràpidament accelera per donar pas als següents capítols per entrar en tècniques més complexes, trucs usuals i sobretot, els <span xml:lang="en">hacks</span> que no ens podem treure mai de damunt.</p>
<p>És un llibre fàcil de seguir si tenim uns mínims coneixements de <acronym title="Cascading Style Sheet" lang="en" xml:lang="en">CSS</acronym> i <acronym title="Hypertext Markup Language" xml:lang="en">HTML</acronym>, però sobretot, és fàcil aprendre coses noves i fàcil poder-les posar en pràctica, ja que el llibre bé carregat d&#8217;exemples, explicacions de casos d&#8217;ús i amb alguna que altra referència de casos reals disponibles a la xarxa. En definitiva, un llibre molt més que recomanable: imprescindible!</p>
<p>Al revisar una mica l&#8217;índex, podem veure que el llibre està distribuït en onze capítols, nou dels quals són exposició de tècniques (separades per temàtica) i els dos darrers són l&#8217;elaboració de dos exemples o casos d&#8217;estudi amb tota la informació adquirida al llarg del llibre:</p>
<dl>
<dt xml:lang="en">Setting the foundations</dt>
<dd>En aquest capítol, com ja he comentat abans, l&#8217;autor fa una petita introducció repassant conceptes com els d&#8217;especificitat, organització dels documents, els diferents tipus de selectors, <abbr title="etcètera">etc.</abbr> Es recomana una lectura, encara que sigui en diagonal, per tal d&#8217;entrar en matèria.</dd>
<dt xml:lang="en">Visual formatting model recap</dt>
<dd>Repàs als diferents models de caixa, flotats i posicionament absolut/relatiu. Problema del doble marge i d&#8217;altres trucs.</dd>
<dt xml:lang="en">Background images and image replacement</dt>
<dd>Repàs al concepte d&#8217;imatge de fons. Caixes amb cantonades arrodonides, tècniques per a la simulació d&#8217;ombres i repàs a diferents tècniques de reemplaçament d&#8217;imatges.</dd>
<dt xml:lang="en">Styling links</dt>
<dd>Tal i com indica el títol, en aquest capítol es repassen diferents tècniques per a donar estils als enllaços, des d&#8217;estilitzar enllaços externs, tècniques per a l&#8217;ús d&#8217;<span xml:lang="en">sprites</span> com a imatges de fons entre d&#8217;altres coses.</dd>
<dt xml:lang="en">Styling lists and creating nav bars</dt>
<dd>En aquest capítol s&#8217;aborden diferents tècniques per a realitzar barres de navegació, tan verticals com horitzontals (tècnica d&#8217;<a title="Article original que explica la tècnica d'slidding doors" xml:lang="en" hreflang="en" href="http://www.alistapart.com/articles/slidingdoors/">sliding doors</a>). També explica com crear un mapa d&#8217;imatge entre d&#8217;altres temes.</dd>
<dt xml:lang="en">Styling forms and data tables</dt>
<dd>Un dels capítols d&#8217;on vaig treure més suc en el seu moment. No només explica temes de <acronym title="Cascading Style Sheet" lang="en" xml:lang="en">CSS</acronym> sinó que també exposa conceptes sobre el marcat correcte per una taula, estructuració i accessibilitat a formularis i més moltes més coses.</dd>
<dt xml:lang="en">Layout</dt>
<dd>El típic tema de tot llibre de <acronym title="Cascading Style Sheet" lang="en" xml:lang="en">CSS</acronym>: <span xml:lang="en">layout</span> fix, elàstic, líquid i combinat.</dd>
<dt xml:lang="en">Hacks and filters</dt>
<dd>Capítol força interessant on s&#8217;exposen les tècniques per a separar fulls d&#8217;estils per diferents medis o navegadors, trucs per aplicar regles a certs clients,  <abbr title="etcètera">etc.</abbr></dd>
<dt xml:lang="en">Bugs and bug fixing</dt>
<dd>Un altre capítol interessant i força inusual. S&#8217;hi recullen els <span xml:lang="en">bugs</span> més importants dins del món de la maquetació i diferents tècniques per a identificar tant a aquests com d&#8217;altres que no estiguin documentats encara.</dd>
<dt xml:lang="en">Case study 1: More than doodles</dt>
<dd>És el capítol més llarg de tot el llibre. En ell s&#8217;hi descriuen tots els passos que cal seguir per acabar construint la maqueta d&#8217;una pàgina, a simple vista força complexa. S&#8217;usen molts dels conceptes exposats al llibre, i sobretot s&#8217;hi fa especial atenció al tema de les llistes i del model de caixes.</dd>
<dt xml:lang="en">Case study 2: Tuscany luxury resorts</dt>
<dd>Un exemple força interessant de pàgina amb <span xml:lang="en">layout</span> fluid. A més a més, s&#8217;apliquen tècniques de posicionament de caixes força interessants i de reemplaçament de text per imatges que cal tenir força en compte.</dd>
</dl>
<p>En definitiva, i per tancar la ressenya, un llibre que cal <a hreflang="en" href="http://www.amazon.com/CSS-Mastery-Advanced-Standards-Solutions/dp/1590596145">comprar</a> i llegir per ser un bon expert en el tema.</p>
<div class="nota">
<p>Mentre estava acabant de redactar l&#8217;article he vist que tot just demà surt a la venda la <a href="http://www.amazon.com/CSS-Mastery-Advanced-Standards-Solutions/dp/1430223979/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1251376248&amp;sr=1-1" hreflang="en">segona edició d&#8217;aquest llibre</a>. Actualment encara no es pot consultar la taula de continguts del llibre, però segons he pogut llegir, actualitza els seus continguts i exposa nous temes sobre CSS3.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.facilitant.net/2009/08/27/css-mastery-advanced-web-standards-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Separar la forma del contingut (nom de les classes)</title>
		<link>http://blog.facilitant.net/2009/06/29/separar-la-forma-del-contingut-nom-de-les-classes/</link>
		<comments>http://blog.facilitant.net/2009/06/29/separar-la-forma-del-contingut-nom-de-les-classes/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 09:01:03 +0000</pubDate>
		<dc:creator>Ramon Vilar Gavaldà</dc:creator>
				<category><![CDATA[Bones pràctiques]]></category>
		<category><![CDATA[Desenvolupament]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://blog.facilitant.net/?p=136</guid>
		<description><![CDATA[Es ben sabut per tots els que ens dediquem a la programació d&#8217;interfícies web (també anomenats maquetadors o programadors front end) que cal tenir ben present que sempre s&#8217;ha de separar el document (HTML) de la seva presentació en un medi concret (CSS) i dels components amb comportament que pugui tenir (JavaScript). Així, és fàcil [...]]]></description>
			<content:encoded><![CDATA[<p>Es ben sabut per tots els que ens dediquem a la programació d&#8217;interfícies web (també anomenats maquetadors o programadors <span lang="en" xml:lang="en">front end</span>) que cal tenir ben present que sempre s&#8217;ha de separar el document (<acronym title="Hypertext Markup Language" xml:lang="en">HTML</acronym>) de la seva presentació en un medi concret (<acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym>) i dels components amb comportament que pugui tenir (JavaScript). Així, és fàcil veure que el següent fragment d&#8217;un document és completament incorrecte pel que fa a aquests cànons:</p>
<pre><code class="html">
&lt;div style="margin: 5px;"&gt;
    &lt;em&gt;Aquest contingut el vull en lletra cursiva&lt;/em&gt;
    &lt;small&gt;&lt;a onclick="window.location='/lipsum'" href="http://www.example.com"&gt;Lorem ipsum dolor&lt;/a&gt;&lt;/small&gt;
&lt;/div&gt;
</code></pre>
<p>Normalment la majoria de programadors som ben conscients de la incorrecció del fragment anterior, però sovint ens trobem incorreccions d&#8217;aquest tipus completament encobertes, i sempre seguint el mateix patró: el mal ús dels noms de classe dels elements.</p>
<p>Usaré exemples de la xarxa per a il·lustrar el que vull dir. Si anem a la portada de la pàgina d&#8217;una institució molt important del país podem trobar coses així (canvio els texts per centrar l&#8217;atenció):</p>
<pre><code class="html">
&lt;ul id="ul_home"&gt;
	&lt;li&gt;&lt;a class="vermell_nobullet_2" href="http://www.example.com"&gt;Ipse quat erimo&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a class="vermell_nobullet_2" href="http://www.example.com/dog"&gt;Sailer due rit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<pre><code class="html">
&lt;div class="marge_superior"&gt;
    &lt;h2&gt;&lt;span id="actualitat" class="titol_seccio"&gt;Lorem ipsum&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div id="altres_serveis" class="border_top"&gt;
    &lt;div class="border_bottom"&gt;
        &lt;a class="text_gris" href="http://www.example.com/bird"&gt;Dolor et sumum&lt;/a&gt;
    &lt;/div&gt;
&lt;/div&gt;
</code></pre>
<p>El valor de l&#8217;atribut <code class="html">@class</code> d&#8217;alguns dels elements ja ens dóna informació de com s&#8217;estilitzaran al veure-ho associat al seu full d&#8217;estils.</p>
<p>Però sovint no es veu tan fàcilment la incorrecció a l&#8217;assignació dels noms de les classes. Per exemple, és ben normal trobar-nos sempre al fragment de descripció de  l&#8217;organització d&#8217;un document, classes del tipus:</p>
<pre><code class="html">
&lt;body class="3-columnes"&gt;
    &lt;div class="columna-esquerra"&gt;
        Lorem ipsum
    &lt;/div&gt;
    &lt;div class="columna-central"&gt;
        Dolor set
    &lt;/div&gt;
    &lt;div class="columna-dreta"&gt;
        Icse et luopir
    &lt;/div&gt;
&lt;/body&gt;
</code></pre>
<p>Hi veieu res d&#8217;estrany? Per saber si les classes són reveladores de la forma final, només cal que us feu la següent pregunta: podríeu saber quina és la forma final de la pàgina només llegint l&#8217;<acronym title="Hypertext Markup Language" xml:lang="en">HTML</acronym>? Si la resposta és sí, les classes són errònies. Si és no, doncs la cosa ja està millor.</p>
<p>Per exemple, una forma correcte de fer la divisió del document podria ser:</p>
<pre><code class="html">
&lt;body class="layout-complet"&gt;
    &lt;div class="contingut-primari"&gt;
        Lorem ipsum
    &lt;/div&gt;
    &lt;div class="contingut-secundari"&gt;
        Dolor set
    &lt;/div&gt;
    &lt;div class="contingut-terciari"&gt;
        Icse et luopir
    &lt;/div&gt;
&lt;/body&gt;
</code></pre>
<p>Oi que ara ja no us espereu com serà el document final?</p>
<p>Per tant, cal anar amb compte a l&#8217;hora d&#8217;assignar els noms a les classes. Sempre cal tenir ben present de separar la forma o presentació del contingut i anar una mica amb peus de plom a l&#8217;hora de cercar els valors. Així aconseguirem que els nostres documents siguin 100% independents de la forma en que es visualitzen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.facilitant.net/2009/06/29/separar-la-forma-del-contingut-nom-de-les-classes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amagar sense ocultar amb CSS</title>
		<link>http://blog.facilitant.net/2009/05/12/amagar-sense-ocultar-amb-css/</link>
		<comments>http://blog.facilitant.net/2009/05/12/amagar-sense-ocultar-amb-css/#comments</comments>
		<pubDate>Tue, 12 May 2009 18:48:39 +0000</pubDate>
		<dc:creator>Ramon Vilar Gavaldà</dc:creator>
				<category><![CDATA[Bones pràctiques]]></category>
		<category><![CDATA[accessibilitat]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://blog.facilitant.net/?p=126</guid>
		<description><![CDATA[Sovint ens interessa amagar contingut de la nostra pàgina a l&#8217;ull humà com pot ser el cas dels menús per a saltar a continguts de la pàgina, en l&#8217;ús de tècniques de reemplaçament de contingut per imatges o per ocultar capçaleres o elements estructurals de la pàgina. És veritat que ens interessa amagar-ho de l&#8217;ull [...]]]></description>
			<content:encoded><![CDATA[<p>Sovint ens interessa amagar contingut de la nostra pàgina a l&#8217;ull humà com pot ser el cas dels menús per a saltar a continguts de la pàgina, en l&#8217;ús de tècniques de reemplaçament de contingut per imatges o per ocultar capçaleres o elements estructurals de la pàgina. És veritat que ens interessa amagar-ho de l&#8217;ull humà, però el que no volem de cap de les maneres, és amagar-ho dels lectors de pantalla.</p>
<h3>El típic error</h3>
<p>Si donem una volta per la xarxa, el que sovint trobem escrit i recomanat, és l&#8217;ús de la propietat <code class="css">display: none</code> per a ocultar elements. Amb això satisfem la nostra voluntat de que l&#8217;ull humà no percebi el contingut, però el problema és que sovint, els lectors de pantalla tampoc n&#8217;interpreten res.</p>
<p>Podríem dir que <code class="css">display: none</code> significa que l&#8217;element no existeix: ni es mostra, ni s&#8217;imprimeix, ni es llegeix el seu contingut.</p>
<h3>La solució</h3>
<p>Una tècnica alternativa que es pot considerar és la de posicionar l&#8217;element que volem amagar de forma absoluta fora del <span lang="en" xml:lang="en">viewport</span>. Així, l&#8217;element existeix però no es percep per l&#8217;ull humà. El <acronym title="Cascading Style Sheet" lang="en" xml:lang="en">CSS</acronym> que podem usar és:</p>
<pre><code class="css">.access {
    left: -9999px;
    position: absolute;
}</code></pre>
<p>Amb això aconseguim el mateix efecte visual però sense ignorar a una part dels usuaris.</p>
<p>Tot això no és pas invenció meva, sinó que és una adaptació d&#8217;<a hreflang="en" href="http://www.456bereastreet.com/archive/200905/hiding_with_css_problems_and_solutions/">un article</a> que vaig llegir fa uns dies.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.facilitant.net/2009/05/12/amagar-sense-ocultar-amb-css/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<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 [...]]]></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>
		<item>
		<title>Organització i convenis en un projecte de maquetació</title>
		<link>http://blog.facilitant.net/2008/12/28/organitzacio-i-convenis-en-un-projecte-de-maquetacio/</link>
		<comments>http://blog.facilitant.net/2008/12/28/organitzacio-i-convenis-en-un-projecte-de-maquetacio/#comments</comments>
		<pubDate>Sun, 28 Dec 2008 16:55:33 +0000</pubDate>
		<dc:creator>Ramon Vilar Gavaldà</dc:creator>
				<category><![CDATA[Bones pràctiques]]></category>
		<category><![CDATA[Desenvolupament]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.facilitant.net/?p=39</guid>
		<description><![CDATA[Des de fa un temps, que sempre que m&#8217;he d&#8217;enfrontar amb un nou projecte de maquetació segueixo un conjunt de normes que ens varem marcar entre els companys de feina. Ens trobàvem que sempre que havíem de fer un manteniment d&#8217;una maqueta d&#8217;algú altra, l&#8217;organització del projecte era diferent, i clar, això feia que davant [...]]]></description>
			<content:encoded><![CDATA[<p>Des de fa un temps, que sempre que m&#8217;he d&#8217;enfrontar amb un nou projecte de maquetació segueixo un conjunt de normes que ens varem marcar entre els companys de feina. Ens trobàvem que sempre que havíem de fer un manteniment d&#8217;una maqueta d&#8217;algú altra, l&#8217;organització del projecte era diferent, i clar, això feia que davant d&#8217;un canvi mínim, perdéssim força temps interpretant on era cada cosa i com ho feia.</p>
<p>Doncs bé, aniré exposant l&#8217;organització i els convenis que jo segueixo, classificat en apartats per una fàcil comprensió.</p>
<h3>Normes generals de tractament d&#8217;arxius</h3>
<ul>
<li>El nom dels arxius, tant de text com d&#8217;imatges, estarà sempre en minúscules i, en cas d&#8217;estar format per més d&#8217;una paraula, s&#8217;usarà el guió com a separador.</li>
<li>Tots els fitxers de text estaran codificats en <code>UTF-8</code>.</li>
<li>Els tabuladors tindran una mida de dos espais.</li>
</ul>
<h3>Estructura de directoris</h3>
<p>Si partim de l&#8217;arrel del nostre projecte, es poden trobar els següents directoris:</p>
<ul>
<li><code>assets</code>: Dins d&#8217;aquest directori trobarem tots els elements que formen part de la maqueta i que complementen a l&#8217;<acronym title="Hypertext Markup Language" xml:lang="en">HTML</acronym>. Cal tenir en compte que en aquest nivell, no s&#8217;hi trobarà cap arxiu, sinó només directoris on s&#8217;organitzaran els tipus de recursos (fulls d&#8217;estils, imatges, etc.).
<ul>
<li><code>css</code>: En aquest directori trobarem tots els full d&#8217;estils del projecte.</li>
<li><code>img</code>: En aquest directori trobarem totes les imatges que sigui necessàries per a visualitzar correctament la maqueta. aquestes imatges poden ser, per exemple, icones, botons, imatges de fons, etc., però mai imatges d&#8217;exemple (imatges d&#8217;una notícia, d&#8217;un contingut, <abbr title="etcètera">etc.</abbr>). Les imatges estaran sempre en format <acronym title="Portable Network Graphics" xml:lang="en">PNG</acronym>.</li>
<li><code>js</code>: En aquest directori trobarem tots els arxius javascript que formen part de l&#8217;aplicació; tant el codi generat com qualsevol de les biblioteques que s&#8217;usi (jQuery, protoype, etc.).</li>
</ul>
</li>
<li><code>images</code>: Dins d&#8217;aquest directori trobarem les imatges de contingut que s&#8217;usen per a posar exemples a la maqueta però que no formen part d&#8217;aquesta.</li>
</ul>
<p>No s&#8217;ha dit, però els fitxers <acronym title="Hypertext Markup Language" xml:lang="en">HTML</acronym> estaran sempre a l&#8217;arrel del projecte. Com es veu, l&#8217;estructura està pensada perquè sigui fàcil integrar, ja que només cal agafar la carpeta <code>assets</code> amb tot el que conté per tal de tenir tot el que es necessita per a una correcta visualització. Tant els arxius <acronym title="Hypertext Markup Language" xml:lang="en">HTML</acronym> com la carpeta <code>images</code>, es poden descartar una vegada la integració estigui feta.</p>
<h3>Normes a l&#8217;<acronym title="Hypertext Markup Language" xml:lang="en">HTML</acronym></h3>
<ul>
<li>El <code>DOCTYPE</code> serà <code>XHTML1.0 Strict</code>, sempre i quan la natura de l&#8217;aplicació no en demani un de diferent.
<pre><code class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</code></pre>
</li>
<li>El nom de les classes i dels identificadors dels elements seran sempre en català i s&#8217;escriuran en minúscules i, en cas d&#8217;estar format per més d&#8217;una paraula, s&#8217;usarà el guió com a separador.
<pre><code class="html">&lt;div id="columna-metadades" class="bloc"&gt;
    ...
&lt;/div&gt;</code></pre>
</li>
</ul>
<h3>Normes al <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym></h3>
<ul>
<li>Sempre i quan la mida del projecte ho permeti, tots els estils s&#8217;escriuran en un sol fitxer que anomenarem sempre <code>styles.css</code>. En cas que necessitem d&#8217;un fitxer d&#8217;estils especial per a Internet Explorer, aquest s&#8217;anomenarà, <code>styles-ie6.css</code> (per la versió 6 del navegador), <code>styles-ie7.css</code> (per la versió 7 del navegador) o <code>styles-ie.css</code> (en cas que no calgui diferenciar de versió de navegador); i es vincularà dins de l&#8217;HTML amb comentaris condicionals.</li>
<li>L&#8217;arxiu sempre començarà amb la directiva <code class="css">@charset</code>.</li>
<li>Just després de la directiva de codificació, s&#8217;introdueix una taula de continguts per tal d&#8217;organitzar l&#8217;arxiu d&#8217;estils. Les capçaleres que facin referència a la taula dins del full d&#8217;estils, seguiran el següent patró:
<ul>
<li>Aniran entre comentaris de <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> (<code class="css">/**/</code>).</li>
<li>A la primera línia, després d&#8217;iniciar el comentari i abans del títol, hi haurà tants guions com nivell dins de la taula de continguts es trobi; és a dir, si és un títol de primer nivell tindrà només un guió, si és de segon nivell, tindrà dos guions, i així anant fent.</li>
<li>Es fa un retorn de carro, i es posen 78 guions i es tanca el comentari (tot per fer una divisió de 80 caràcters).</li>
</ul>
</li>
<li>L&#8217;estil d&#8217;obertura i tancament de claus serà la que varen proposar Kerninghan-Ritchie al seu tractat sobre el llenguatge de programació C; la primera clau va just després del predicat (separant amb un espai) i la clau de tancament va just després d&#8217;un retorn de carro.</li>
<li>Els estils s&#8217;escriuen en bloc i sempre precedits per un tabulador. Dintre de cada bloc, les directives s&#8217;ordenen en ordre alfabètic ascendent.</li>
<li>Un exemple de full d&#8217;estil podria ser:
<pre><code class="css">@charset "utf-8";
/*
  TdC:
    - Elements genèrics
    - Capçalera
      - Regió capçalera
    - Estructura del contingut
      - Sense columnes
      - Una columna + contingut
      - Dues columnes + contingut
    - Peu
*/

/*- Elements genèrics
-----------------------------------------------------------------------------*/
body {
  color: #333;
  font-size: 62.5%;
  margin: 0 auto;
}

/*- Capçalera
-----------------------------------------------------------------------------*/
...

/*-- Regió capçalera
-----------------------------------------------------------------------------*/
...</code></pre>
</li>
</ul>
<h3>Normes al javascript</h3>
<ul>
<li>Sempre i quan la mida del projecte ho permeti, el javascript anirà tot dins d&#8217;un sol fitxer amb nom <code>script.js</code>. En cas de necessitar-ne més, el criteri de nomenclatura haurà de ser racional.</li>
<li>El nom de les classes i dels identificadors dels elements que s&#8217;usin només per al javascript, seguiran les mateixes normes d&#8217;escriptura, però amb la diferència que seran en anglès per poder diferenciar-les de les que són pròpiament d&#8217;estructura.</li>
<li>Tant les variables com les funcions s&#8217;ecriuran en <a hreflang="en" href="http://ca.wikipedia.org/wiki/CamelCase">CamelCase</a>. En el meu cas, tant el nom de les variables com els de les funcions els escriurem en angès.</li>
<li>No s&#8217;integraran biblioteques al projecte sempre i quan el seu ús no estigui justificat, és a dir, per a fer manipulacions mínimes del <acronym title="Document Object Model" xml:lang="en">DOM</acronym> no cal carregar jQuery. Passa el mateix amb l&#8217;ús d&#8217;extensions de les biblioteques: només s&#8217;usaran si es justifiquen molt els seus beneficis.</li>
<li>Tot el codi estarà documentat seguint <a hreflang="en" href="http://jsdoc.sourceforge.net/">JSDoc</a>. Un bon programador sap que la documentació és útil, però l&#8217;abús d&#8217;aquesta ocasiona problemes.</li>
</ul>
<p>Cal tenir present que aquest conjunt de normes són les que uso jo; no són ni un estàndard ni la millor manera de fer-ho, sinó una forma de fer-ho.</p>
<p>Si algú té cap conveni o norma que creieu que pot ser interessant, deixeu-ho en un comentari i així podem anar complementant-ho tot plegat.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.facilitant.net/2008/12/28/organitzacio-i-convenis-en-un-projecte-de-maquetacio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Estils que depenen de javascript</title>
		<link>http://blog.facilitant.net/2008/12/09/estils-que-dependenen-de-javascript/</link>
		<comments>http://blog.facilitant.net/2008/12/09/estils-que-dependenen-de-javascript/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 16:50:38 +0000</pubDate>
		<dc:creator>Ramon Vilar Gavaldà</dc:creator>
				<category><![CDATA[Desenvolupament]]></category>
		<category><![CDATA[accessibilitat]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.facilitant.net/?p=31</guid>
		<description><![CDATA[Hi ha moments a la vida d&#8217;un programador d&#8217;interfícies web (mal anomenats sovint com a maquetadors) que vol crear un component que tingui una certa aparença segons si el navegador amb que es visualitza té el javascript habilitat o inhabilitat. Posem un exemple. Imaginem-nos que estem creant un botó d&#8217;imprimir &#8220;especial&#8221;. El que volem aconseguir [...]]]></description>
			<content:encoded><![CDATA[<p>Hi ha moments a la vida d&#8217;un programador d&#8217;interfícies web (mal anomenats sovint com a maquetadors) que vol crear un component que tingui una certa aparença segons si el navegador amb que es visualitza té el javascript habilitat o inhabilitat.</p>
<p>Posem un exemple. Imaginem-nos que estem creant un botó d&#8217;imprimir &#8220;especial&#8221;. El que volem aconseguir és que al fer clic a la icona d&#8217;exportació de la nostra pàgina, es desplegui un menú d&#8217;opcions on ens permeti obtenir la vista actual en <acronym title="Portable Document Format" xml:lang="en">PDF</acronym>, en <acronym title="eXtensible Markup Language" xml:lang="en">XML</acronym> o en <acronym title="Hypertext Markup Language" xml:lang="en">HTML</acronym> sense estils (per posar un exemple). Com som bona gent i ens preocupa de debò l&#8217;accessibilitat, volem que, en cas de tenir el javascript inhabilitat o no disposar de suport per aquest, el que es visualitzi sigui el literal &#8220;Exportar a &#8220;, i la llista d&#8217;opcions que he explicat abans, una darrera l&#8217;altra. Total, que el nostre component ha de tenir dues representacions diferents, és a dir, dos conjunts d&#8217;estils ben diferents.</p>
<p>I com fer que un component tingui dues representacions? Doncs bé, jo explicaré aquí la tècnica que jo uso al meu dia a dia.</p>
<p>El que farem serà marcar el document amb una classe en cas que tinguem javascript habilitat, i així, des del nostre full d&#8217;estils, podrem diferenciar entre una representació i l&#8217;altra de la següent forma:</p>
<pre><code class="css">.element-que-interessa {
    /* Aquí van els estils per l'element en cas de no disposar de suport javascript */
    ...
}

.marca-document .element-que-interessa {
    /* Aquí van els estils per l'element en cas de disposar de javascript */
    ...
}</code></pre>
<p>Una vegada explicada la idea, anem a l&#8217;acció. Personalment, el que jo faig és marcar l&#8217;etiqueta <code>/html</code> amb la classe <code>js</code> al principi del fitxer javascript:</p>
<pre><code class="javascript">document.documentElement.className = "js";</code></pre>
<p>I llavors, al full d&#8217;estil, usar aquesta classe per a diferenciar-ho. Aplicat al nostre exemple:</p>
<pre><code class="css">.menu-exportacio {
    /* estils de la representació quan no hi ha javascript */
}

.js .menu-exportacio {
    /* estils per a la representació amb javascript */
}
</code></pre>
<p>Cal tenir present que aquesta tècnica pot ser útil quan, per exemple, volem amagar alguna porció del nostre document en cas de disposar de javascript (per exemple les àncores al contingut, barra lateral i demés) o fins i tot, per a diferenciar els estils que s&#8217;aplicaran a elements introduïts al document de forma dinàmica mitjançant javascript.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.facilitant.net/2008/12/09/estils-que-dependenen-de-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bulletproof Web Design</title>
		<link>http://blog.facilitant.net/2008/11/30/bulletproof-web-design/</link>
		<comments>http://blog.facilitant.net/2008/11/30/bulletproof-web-design/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 00:22:07 +0000</pubDate>
		<dc:creator>Ramon Vilar Gavaldà</dc:creator>
				<category><![CDATA[llibres]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.facilitant.net/?p=22</guid>
		<description><![CDATA[Aquest és el segon llibre d&#8217;en Dan Cederholm, fundador de SimpleBits. És el primer llibre que vaig llegir d&#8217;aquest gran expert, i he de dir que em va deixat un molt bon sabor de boca. El llibre que posseeixo i del qual vull fer aquesta petita ressenya, és la primera versió que data del 2006, [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_23" class="wp-caption alignleft" style="width: 255px"><a href="http://blog.facilitant.net/wp-content/uploads/2008/11/bulletproofwebdesign1_sm.png"><img class="size-medium wp-image-23" title="bulletproofwebdesign1_sm" src="http://blog.facilitant.net/wp-content/uploads/2008/11/bulletproofwebdesign1_sm-245x300.png" alt="Portada del llibre Bulletproof Web Design" width="245" height="300" /></a><p class="wp-caption-text">Portada del llibre Bulletproof Web Design</p></div>
<p>Aquest és el segon llibre d&#8217;en <a xml:lang="en" hreflang="en" href="http://www.simplebits.com/about/dan/">Dan Cederholm</a>, fundador de <a xml:lang="en" hreflang="en" href="http://www.simplebits.com/">SimpleBits</a>. És el primer llibre que vaig llegir d&#8217;aquest gran expert, i he de dir que em va deixat un molt bon sabor de boca.</p>
<p>El llibre que posseeixo i del qual vull fer aquesta petita ressenya, és la primera versió que data del 2006, però actualment ja existeix una segona versió de l&#8217;agost del 2007 que també he pogut fullejar, i que a més a més de modificar alguna errada d&#8217;impremta del llibre, afegeix algun nou apartat i actualitza els existents amb noves característiques de navegadors.</p>
<p>Com bé resa el títol i subtítol del llibre, <a xml:lang="en" hreflang="en" href="http://www.simplebits.com/publications/bulletproof/">Bulletproof Web Design: Improving flexibility and protecting against worst-case scenarios with <acronym title="eXtensible Hypertext Markup Language">XHTML</acronym> and <acronym title="Cascading Style Sheets">CSS</acronym></a>, ens ajudarà crear maquetes a prova de bales.</p>
<p>Sota el meu punt de vista, aquest és un molt bon llibre per aquells que volen iniciar-se al món de la maquetació, ja que comença poc a poc explicant l&#8217;estructura bàsica d&#8217;un document <acronym title="eXtensible Hypertext Markup Language" xml:lang="en">XHTML</acronym> i d&#8217;un <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> i va avançant en els capítols fins acabar construint un petit exemple d&#8217;una pàgina amb dues columnes.</p>
<p>És un llibre molt didàctic ja que trobem molts exemples a cada capítol que es desenvolupen mica en mica i que s&#8217;explica fins a l&#8217;últim detall de cada decisió que es pren, aportant sovint alternatives de marcatge per tal que ho tinguem tot present. A més a més, una cosa que em va agradar molt d&#8217;aquest llibre fou els consells que dóna mentre avances, com per exemple, marcatge que es pot generar via Javascript per eliminar les etiquetes innecessàries, alguns consells d&#8217;accessibilitat, <abbr title="etcètera">etc.</abbr> Igualment, trobo que la progressió dels temes que fa agrupats als capítols és força correcte, tot ajudant als que comencen amb aquests temes a introduir-s&#8217;hi poc a poc i de forma ordenada.</p>
<p>Tot seguit poso un petit índex amb els capítols del llibre i una breu explicació:</p>
<dl>
<dt xml:lang="en">Flexible text</dt>
<dd>Com a primer capítol que és, ens explica una lliçó ben bàsica: com gestionar la mida del text del nostre document. Explica les diferències entre mides absolutes i relatives, i explica el mètode que ell segueix, els percentatges.</dd>
<dt xml:lang="en">Scalable navigation</dt>
<dd>Típic exemple de generació d&#8217;un menú amb pestanyes i la tècnica de les portes corredisses. Molt útil per començar-se a familiaritzar amb les imatges de fons, la diferència entre <code>border</code>, <code>margin</code> i <code>padding</code> i el model de caixa.</dd>
<dt xml:lang="en">Expandable rows</dt>
<dd>En aquest capítol explica com crear una barra (ja sigui de navegació, cerca, una capçalera, <abbr title="etcètera">etc.</abbr>) que s&#8217;expandeix de forma correcta. Interessant. </dd>
<dt xml:lang="en">Creative floating</dt>
<dd>Introducció a les caixes flotants tot construint una petita galeria de fotografies. </dd>
<dt xml:lang="en">Indestructible boxes</dt>
<dd>Qui no ha hagut d&#8217;enfrontar-se algun cop a maquetar un disseny amb caixes? Sembla que actualment la majoria li hem agafat gràcia a aquest element. Doncs bé, aquest capítol ens explica com crear maquetes amb aquest element tot progressant en dificultat amb les diverses alternatives que se&#8217;ns pots presentar.</dd>
<dt xml:lang="en">No images? No <acronym title="Cascading Style Sheets">CSS</acronym>? No problem</dt>
<dd>Possiblement el capítol més interessant que té el llibre sota el meu punt de vista. Sovint anem posant imatges de fons al nostre document, però sovint mai ens preocupem de com veu la pàgina algú que no veu les imatges de fons. I si tenim els <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> inhabilitats o bé el nostre navegador no els interpreta? Doncs bé, en aquest capítol ens explica forces tècniques, trucs i consells per tal de poder crear una maqueta robusta i a prova de bales.</dd>
<dt xml:lang="en">Convertible tables</dt>
<dd>La gent que es pensa que les taules es limiten a <code>/table</code>, <code>/tr</code> i <code>/td</code> està molt equivocada. En aquest capítol, a més a més de descobrir-nos com s&#8217;han d&#8217;escriure les taules semànticament correctes, també ens explica com els hi podem donar una vista atractiva amb els fulls d&#8217;etils.</dd>
<dt xml:lang="en">Fluid layouts</dt>
<dd>Què seria un llibre de <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> sense el típic capítol de creació de layout? Doncs bé en aquest capítol ens explica com crear-ne un de fluït amb dues i tres columnes, quins són els típics problemes que ens hi podem trobar i com donar-lis solució.</dd>
<dt xml:lang="en">Putting it all together</dt>
<dd>El darrer capítol ho posa tots els conceptes en joc per a crear una petita pàgina d&#8217;inici amb dues columnes i capses per al contingut lateral. Una bona manera de tancar el llibre i posar tots els conceptes en joc per a resoldre un problema que serà el dia a dia d&#8217;un maquetador.</dd>
</dl>
<p>Doncs bé, per tancar aquesta ressenya, només dir que és un llibre a considerar si és que volem entrar al món de la maquetació web, o bé, si ja tenim alguns coneixements, intentar posar-los tots en ordre a la nostra ment tot seguint un guió redactat per un gran expert.</p>
<p>Una <a hreflang="en" href="http://www.amazon.com/Bulletproof-Web-Design-flexibility-protecting/dp/0321509021/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1228087441&amp;sr=1-1">compra</a> molt recomanable.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.facilitant.net/2008/11/30/bulletproof-web-design/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

