<?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>css 4 design &#187; Tutoriels</title>
	<atom:link href="http://css4design.com/tag/tutoriels/feed" rel="self" type="application/rss+xml" />
	<link>http://css4design.com</link>
	<description>Le blog de l&#039;intégrateur web</description>
	<lastBuildDate>Sun, 05 Feb 2012 18:10:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<atom:link rel='hub' href='http://css4design.com/?pushpress=hub'/>
		<item>
		<title>Quelques notes &#8212; Programme de formation HTML &amp; CSS</title>
		<link>http://css4design.com/programme-formation-html-css</link>
		<comments>http://css4design.com/programme-formation-html-css#comments</comments>
		<pubDate>Wed, 04 Jan 2012 12:01:47 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Formateur Web]]></category>
		<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Edito]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Quelques notes]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.css4design.com/blog-reloaded/?p=96</guid>
		<description><![CDATA[Les langages du web HTML et CSS sont généralement structurés autour de concepts qui ont peu à voir avec la manière dont ils seront utilisés. Ce qui est normal après tout : les concepteurs ne sont généralement pas les auteurs. Il appartient à ces derniers de tâtonner un peu, beaucoup ou passionnément et d&#8217;en parler avec leurs voisins pour connaitre les bonnes pratiques du jour. Pour dire les choses autrement, les langages du web ne sont pas livrés avec «le» mode d&#8217;emploi. La plupart des tutoriels que l&#8217;on trouve sur le web reprennent généralement le découpage que l&#8217;on trouve dans les spécifications [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fprogramme-formation-html-css">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fprogramme-formation-html-css&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Les langages du web HTML et CSS sont généralement structurés autour de concepts qui ont peu à voir avec la manière dont ils seront utilisés. Ce qui est normal après tout : les concepteurs ne sont généralement pas les auteurs. Il appartient à ces derniers de tâtonner un peu, beaucoup ou passionnément et d&#8217;en parler avec leurs voisins pour connaitre les bonnes pratiques du jour. Pour dire les choses autrement, les langages du web ne sont pas livrés avec «le» mode d&#8217;emploi. La plupart des tutoriels que l&#8217;on trouve sur le web reprennent généralement le découpage que l&#8217;on trouve dans les spécifications du W3C.<span id="more-115"></span></p>

<p>Si les spécifications sont très utiles pour comprendre la nature des ingrédients (balises HTML et propriétés CSS), elles ne nous disent pas grand chose sur la manière de les mettre en oeuvre pour réaliser un site web. S&#8217;il n&#8217;existe pas de recette toute faite, c&#8217;est certainement à cause des plats (les contenus) qui sont uniques.</p>

<p>Enfin, en même temps, on ne peut pas ne pas constater que les sites Web sont à 90% composés de :</p>

<ul>
    <li>En-tête pour : logo, baseline, visuel, un ou plusieurs menus de navigation,</li>
    <li>Zone de contenu principale : texte, image, vidéo,</li>
    <li>Une, deux ou trois barre latérales (<em>Sidebar</em>) à droite, à gauche de la zone de contenu,</li>
    <li>Pied de page (<em>Footer</em>).</li>
</ul>

<p>Depuis quelques temps, je réfléchis à la mise en place d&#8217;un plan de cours pour l&#8217;apprentissage du couple HTML &amp; CSS. Dans l&#8217;idéal, cette formation devrait être :</p>

<ol>
    <li>Assimilable rapidement par les débutants qui n&#8217;ont jamais vu une balise HTML ou une règle CSS,</li>
    <li>Convainquante pour inciter les créatifs à se pencher sur les notions d&#8217;intégration web,</li>
    <li>Intéressante pour ceux qui utilisent ces langages dans leur vie professionnelle ou en amateur (dans le noble sens du terme).</li>
</ol>

<p>La plupart des plans de cours sur le sujet séparent souvent l&#8217;étude du HTML des CSS. J&#8217;aimerais mettre en place une méthode globale s&#8217;inspirant (très librement) de la Programmation Orientée Objet (POO), en initialisant un super objet &#8212; le site web &#8212; englobant d&#8217;autres objets comme le header, la sidebar, les menus et les différentes zones de contenu que l&#8217;on trouve généralement dans un site internet ou sur un blog (titres, sous-titres, paragraphes, liste, etc.). A cet égard, HTML 5 permet d&#8217;aller dans ce sens avec les balises <code>header</code>, <code>nav</code>, <code>article</code>, <code>aside</code>, <code>footer</code>.</p>

<h2>CSS et HTML sont dans un bateau&#8230;</h2>

<p>Sans le HTML, les CSS ne servent à rien. Dans la pratique, on rencontre rarement HTML sans CSS. Au lieu d&#8217;aborder les deux langages de manière séquentielle, j&#8217;envisage de démarrer par la mise en place d&#8217;un vocabulaire de base qui fournirait les briques élémentaires nécessaires à la construction d&#8217;un site web. Cela pourrait s&#8217;effectuer en abordant les deux langages simultanément tout en ajoutant les notions d&#8217;ergonomie et d&#8217;accessibilité  : les bonnes manières s&#8217;apprennent dès le début.</p>

<p>Ces briques seraient composées de bouts de code, de module, de composés HTML &amp; CSS «prêts à l&#8217;emploi» à expliquer aux apprenants par le biais d&#8217;exercices pratiques qui débuteraient le plus tôt possible dans la formation. L&#8217;apprenant serait ensuite invité à assembler ces briques pour construire une page web. Le formateur fournissant à cette occasion les indispensables conseils, trucs et astuces concernant l&#8217;apparence sur les différents navigateurs, l&#8217;utilisation des <a href="http://css4design.com/?s=commentaires+conditionnels">commentaires conditionnels</a>, etc., selon le temps disponible.</p>

<p>Parmi les méthodes proposées dans les commentaires du billet d&#8217;Aymeric, nombreuses sont celles qui préconisent de partir du contenu pour commencer l&#8217;apprentissage de HTML. Je suis généralement le premier à prendre mon Stabilo ® pour baliser le contenu avant même de prendre une tablette graphique ou mon Notepad++. Toutefois, intégrer le balisage du contenu dans la formation peut s&#8217;avérer chronophage et ne pas trouver sa place dans le temps généralement impartie dans les centres de formation où un module de base dure rarement plus d&#8217;une semaine.</p>

<p>En outre, indépendamment du contenu, l&#8217;immense majorité des sites web partage les mêmes caractéristiques. On pourrait passer beaucoup de temps à lister tous les éléments constituant un site et faire des statistiques pour savoir si tel ou tel élément se retrouve le plus souvent dans le <em>header</em>, la <em>sidebar</em> ou le <em>footer</em>, etc. mais force est de constater qu&#8217;à ce niveau, un consensus se dégage : le logo, la <em>baseline</em> et le menu principal se retrouvent dans haut de la page tandis que les informations de contact et de copyright se situent plutôt en bas de la page !</p>

<p>On pourrait donc, dans le cadre d&#8217;une formation sur cinq jours,  fixer les idées autour des zones que l&#8217;on rencontre généralement sur les sites web ou les blogs :</p>

<ol>
    <li>un header (pour le logo, la baseline, la navigation principale et les liens d&#8217;évitement),</li>
    <li>une zone de contenu&#8230;</li>
    <li>&#8230; associée à une ou plusieurs barres latérales,</li>
    <li>avec un footer (contact, crédits, <em>copyright</em>) pour finir.</li>
</ol>

<p>Ce découpage mélange joyeusement l&#8217;analyse fonctionnelle et la présentation, mais présente l&#8217;avantage de fixer les idées sur des choses auxquelles les apprenants ont été confrontés, ce qui a son importance.</p>

<p>Pour aborder l&#8217;apprentissage des balises et la sémantique qui leur est associée, je propose de partir du logo qui peut être le premier niveau de la page d&#8217;accueil (ce n&#8217;est pas gravé dans le marbre, cf. <a href="http://css4design.com/composes-html-logo-baseline-potentiel-seo">8 composés HTML pour le logo et la « baseline » et leur potentiel SEO</a>).  On pourra lui réserver la balise <code>h1</code> avec un background pour l&#8217;image. On pourra masquer le texte <a href="http://css4design.com/remplacer-texte-html-par-image-avec-css">d&#8217;une manière</a> ou <a href="http://css4design.com/solution-css-accessible-remplacer-texte-html-par-image">d&#8217;une autre</a>.</p>

<p>Partant du principe qu&#8217;une zone de menu sera souvent composée avec une liste de liens, il me semble utile de proposer dès le début les méthodes généralement utilisées pour faire flotter les <code>li</code>, transformer les <code>a</code> en bloc, utiliser les images de fonds, etc.</p>

<p>Une zone de contenu secondaire est souvent représentée par une barre latérale placée à droite ou à gauche de la zone de contenu. Pourquoi ne pas introduire directement les notions de positionnement avec <code>float</code> et les positions <code>relative</code> et <code>absolute</code> ? Pour un débutant, ces notions ne sont pas plus difficiles à comprendre que le reste. Je me dis qu&#8217;elle seront peut-être même plus rapidement assimilées en les abordant dès le début, même si les notions de <a href="http://css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire">contexte de formatage ou de clearing</a> ne sont pas très évidentes au premier abord.</p>

<p>Je reviendrais sur le sujet un peu plus tard selon vos retours. L&#8217;objectif est de remplir un programme de formation détaillé sur 5 jours permettant à des personnes ayant des pré-requis réduit au minimum de pouvoir créer une page web «classique».</p>

<h2>Pour ne pas conclure</h2>

<p>Ce billet est une ébauche que je compléterais au fur et à mesure de mes idées et de vos suggestions. Ce billet traine dans mes brouillons depuis que Aymeric a eu dès 2007 l&#8217;excellente idée de <a href="http://ajblog.fr/webdesign/229-bien-debuter-l-etude-des-comportements-css-synthese-de-vos-contributions.html">synthétiser les commentaires</a> qui avaient suivis <a href="http://ajblog.fr/webdesign/216-appel-a-contribution-bien-debuter-l-etude-des-comportements-css.html">son billet</a> sur le plan de formation idéal pour l&#8217;apprentissage du XHTML et des CSS que je vous invite à lire sans plus attendre.</p>

<h2>Linkographie</h2>

<ul>
    <li><a href="http://openweb.eu.org/">http://openweb.eu.org</a></li>
    <li><a href="http://www.opquast.com/">http://www.opquast.com</a></li>
    <li><a href="http://www.w3schools.com/">http://www.w3schools.com</a></li>
    <li><a href="http://fr.html.net/tutorials/html/">http://fr.html.net/tutorials/html</a></li>
    <li><a href="http://slaout.linux62.org/html_css/html.html">http://slaout.linux62.org/html_css/html.html</a></li>
    <li><a href="http://www.elitwork.com/xhtml_tutoriel.html">http://www.elitwork.com/xhtml_tutoriel.html</a></li>
    <li><a href="http://www.martiusweb.net/category/Tutoriaux/XHTML-CSS">http://www.martiusweb.net/category/Tutoriaux/XHTML-CSS</a></li>
    <li><a href="http://www.siteduzero.com/">http://www.siteduzero.com</a></li>
    <li><a href="http://css.mammouthland.net/">http://css.mammouthland.net</a></li>
    <li><a href="http://www.la-grange.net/w3c/html4.01/cover.html">http://www.la-grange.net/w3c/html4.01/cover.html</a></li>
    <li><a href="http://www.w3.org/TR/html5/">http://www.w3.org/TR/html5</a> et <a href="http://dev.w3.org/html5/spec-author-view/spec.html">http://dev.w3.org/html5/spec-author-view/spec.html</a></li>
    <li><a href="http://j-willette.developpez.com/tutoriels/html/les-bases-du-html/">http://j-willette.developpez.com/tutoriels/html/les-bases-du-html</a></li>
    <li><a href="http://reference.sitepoint.com/">http://reference.sitepoint.com</a></li>
    <li><a href="http://htmldog.com/">http://htmldog.com</a></li>
</ul>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/quelques-notes-sur-la-bibliotheque-javascript-ie7-de-dean-edwards' title='Quelques notes sur la bibliothèque Javascript IE7 de Dean Edwards'>Quelques notes sur la bibliothèque Javascript IE7 de Dean Edwards</a></li><li><a href='http://css4design.com/quelques-notes-autour-du-design-fluide-avec-3-colonnes-du-collectif-alsacreations' title='Quelques notes autour du design fluide avec 3 colonnes du collectif Alsacréations'>Quelques notes autour du design fluide avec 3 colonnes du collectif Alsacréations</a></li><li><a href='http://css4design.com/interviews-bruno-bichet-integration-html-css-design' title='Interviews Bruno Bichet, intégration web et css 4 design de 2007 à nos jours'>Interviews Bruno Bichet, intégration web et css 4 design de 2007 à nos jours</a></li><li><a href='http://css4design.com/quelques-notes-sur-la-balise-h1-avec-html5' title='Quelques notes sur la balise h1 avec HTML5'>Quelques notes sur la balise h1 avec HTML5</a></li><li><a href='http://css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire' title='Rétablir le flux après des éléments flottants en CSS sans balise HTML supplémentaire'>Rétablir le flux après des éléments flottants en CSS sans balise HTML supplémentaire</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=115&amp;md5=de2b729ebed403635b5180df4222b152" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/programme-formation-html-css/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=115&amp;md5=de2b729ebed403635b5180df4222b152" type="text/html" />
	</item>
		<item>
		<title>Le petit journal du web &#8212; WordPress, développement web, etc.</title>
		<link>http://css4design.com/le-petit-journal-du-web-novembre-2011</link>
		<comments>http://css4design.com/le-petit-journal-du-web-novembre-2011#comments</comments>
		<pubDate>Sun, 11 Dec 2011 11:46:10 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Le petit journal du web]]></category>
		<category><![CDATA[Base de données]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Métiers du web]]></category>
		<category><![CDATA[Mockup]]></category>
		<category><![CDATA[Système de gestion de contenu (CMS)]]></category>
		<category><![CDATA[Thème]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=11094</guid>
		<description><![CDATA[Dans ce petit journal du web, je vous propose quelques liens qui ont retenu mon attention ces dernières semaines. Du côté de WordPress : optimisation de la base de données, des images, du cache, du nombre de requêtes dans les templates ; quelques diapositives issues du dernier WordCamp ; des explications sur le succès de WordPress face à ses concurrents ; un retour d&#8217;expérience sur la vente de thèmes WordPress ; et des fonctions utiles pour votre fichier functions.php. Du côté du développement web et du webdesign : une documentation interactive complète sur les API&#8217;s des langages du web (CSS, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fle-petit-journal-du-web-novembre-2011">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fle-petit-journal-du-web-novembre-2011&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Dans ce petit journal du web, je vous propose quelques liens qui ont retenu mon attention ces dernières semaines. Du côté de WordPress : optimisation de la base de données, des images, du cache, du nombre de requêtes dans les templates ; quelques diapositives issues du dernier WordCamp ; des explications sur le succès de WordPress face à ses concurrents ; un retour d&#8217;expérience sur la vente de thèmes WordPress ; et des fonctions utiles pour votre fichier <em>functions.php</em>. Du côté du développement web et du webdesign : une documentation interactive complète sur les API&#8217;s des langages du web (CSS, HTML, JavaScript, DOM &amp; jQuery) ; un blog de qualité sur le développement web ; un tutoriel sur jQuery et un autre sur les fondamentaux de JavaScript ; et 18 outils gratuits pour faire des maquettes d’interface graphique. Et bien d&#8217;autres liens à garder sous la molette !<span id="more-11094"></span></p>

<h2>WordPress</h2>

<ul>
    <li><strong><a href="http://www.insidedaweb.com/wordpress-seo/optimisation/wordpress-optimisation-base-de-donnees/">Optimiser la base de données</a></strong> &#8211; Avec le temps, les performances de WordPress baissent à causes des modifications qui affectent la base de données. Pour retrouver un WordPress frais comme un gardon, sortez les gants et préparez-vous à faire le ménage.</li>
    <li><strong><a href="http://www.slideshare.net/nicolasjuen/optimiser-les-performances-dans-wordpress">Performances dans WordPress</a></strong> &#8212; Des conseils pour optimiser les images, l&#8217;inclusion des fichiers Javascript et CSS, la gestion du cache, le nombre de requêtes dans les templates, les appels aux API externes et le fichier <em>.htaccess</em>.</li>
    <li><strong><a href="http://www.slideshare.net/FrancisChouquet/presentation-wordcamp-paris">Vendre des thèmes WordPress</a></strong> &#8212; Présentation de Francis Chouquet à l&#8217;occasion de WordCamp Paris sur son retour d&#8217;expérience concernant la vente de thèmes WordPress à travers le site <a href="http://peaxl.com/">Peaxl.com</a>.</li>
    <li><strong><a href="http://www.slideshare.net/blupu/construire-un-site-de-presse-avec-wordpress">Site de presse avec WordPress ?</a></strong> &#8212; Retours d&#8217;expériences de Lagazette.fr, un «gros» site qui tourne sous WordPress.</li>
    <li><strong><a href="http://wp.smashingmagazine.com/2011/11/29/wordpress-cms-crown-drupal-joomla/">Hegemony of WordPress</a></strong> &#8211; Si Drupal et Joomla! n&#8217;ont (presque) rien à envier à WordPress, comment expliquer l&#8217;hégémonie de WordPress lorsqu&#8217;il s&#8217;agit du choix d&#8217;un CMS ?</li>
    <li><strong><a href="http://spyrestudios.com/10-wordpress-hacks/">10 Must Have Hacks For WordPress</a></strong> &#8211; Voici 10 fonctions à copier-coller dans votre fichier functions.php pour obtenir : des boucles personnalisées, une liste de billets en relation avec d&#8217;autres en fonction des tags qu&#8217;ils partagent, afficher les billets populaires dans la sidebar, afficher des publicités dans le flux RSS, ajouter un fil d&#8217;Ariane pour guider vos visiteurs, afficher une sidebar selon l&#8217;article affiché, etc.</li>
    <li><strong><a href="http://wordpress.bbxdesign.com/">Créer un thème de A à Z</a></strong> &#8212; Ce tutoriel écrit par @bbx est destiné aux graphistes et aux intégrateurs qui débutent dans WordPress. Néanmoins, une connaissance du HTML et des CSS est requise. Si vous le souhaitez, allez lire [son] autre tutoriel : <a href="http://css.steaw.com/">CSS l’Art et la Science</a>.</li>
</ul>

<h2>Développement web</h2>

<ul>
    <li><strong><a href="http://dochub.io/">DocHub</a></strong> &#8211; Recherche instantanée dans la documentation des langages <a href="http://dochub.io/#css/">CSS</a>, <a href="http://dochub.io/#html/">HTML</a>, <a href="http://dochub.io/#javascript/">JavaScript</a>, ainsi que du <a href="http://dochub.io/#dom/">DOM</a> et de <a href="http://dochub.io/#jquery/">jQuery</a>. N&#8217;oubliez pas le compte Twitter @documenthub. Via @ThierryRoget du blog éclectique <a href="http://roget.biz/" rel="me nofollow" target="_blank">roget.biz</a>.</li>
    <li><strong><a href="http://friendlybit.com/">Friendly Bit</a></strong> &#8211; Le blog du développement qui vous écoute ! Des articles de qualité sur le développement web moderne et comment bien l&#8217;utiliser.</li>
    <li><strong><a href="http://jqfundamentals.com/book/index.html">jQfundamentals</a></strong> &#8211; Tutoriel complet sur jQuery (contenant de nombreux exemples d&#8217;illustration) écrit par <a href="http://www.rebeccamurphey.com/">Rebecca Murphey</a> avec notamment les contributions de <a href="http://padolsey.net/">James Padolsey</a> (@padolsey) et <a href="http://paulirish.com/">Paul Irish</a> (@paul_irish) dont voici les 11 chapitres :
<ol>
    <li><a href="http://jqfundamentals.com/#chapter-1">Welcome</a>,</li>
    <li><a href="http://jqfundamentals.com/#chapter-2">JavaScript Basics</a>,</li>
    <li><a href="http://jqfundamentals.com/#chapter-3">jQuery Basics</a>,</li>
    <li><a href="http://jqfundamentals.com/#chapter-4">jQuery Core</a>,</li>
    <li><a href="http://jqfundamentals.com/#chapter-5">Events</a>,</li>
    <li><a href="http://jqfundamentals.com/#chapter-6">Effects</a>,</li>
    <li><a href="http://jqfundamentals.com/#chapter-7">Ajax</a>,</li>
    <li><a href="http://jqfundamentals.com/#chapter-8">Plugins</a>,</li>
    <li><a href="http://jqfundamentals.com/#chapter-9">Performance Best Practices</a>,</li>
    <li><a href="http://jqfundamentals.com/#chapter-10">Code Organization</a>,</li>
    <li><a href="http://jqfundamentals.com/#chapter-11">Custom Events</a>.</li>
</ol>
</li>
    <li><strong><a href="http://jpvincent.developpez.com/tutoriels/javascript/javascript-oriente-objet-syntaxe-base-classes-js-intention-developpeurs-php/">Syntaxe des classes JavaScript</a></strong> &#8211; Tutoriel pour les développeurs PHP qui se lancent dans un projet JavaScript dépassant le simple scripting. Par <a href="http://braincracking.org/">Jean-Pierre Vincent</a> (@theystolemynick).</li>
    <li><strong><a href="http://www.jquerybuzz.com/">jQuery.Buzz()</a></strong> &#8212; Restez à l&#8217;écoute de jQuery avec des ressources quotidiennes en provenance de sources diverses ete variées. Le site est parfois long à répondre ; suivre le compte Twitter @jquerybuzz ou s&#8217;abonner aux flux RSS du site est peut-être préférable.</li>
    <li><strong><a href="http://korben.info/18-outils-gratuits-mockups.html">Maquettes d’interfaces graphiques</a></strong> &#8211; Liste commentée de 18 outils disponibles sur MacOS, Windows et Linux pour réaliser des maquettes d&#8217;interface graphique (<a href="http://css4design.com/webdesign-wireframes-mockup-prototypage-rapide">mockup ou prototype de site web</a>).</li>
</ul>

<h3>C&#8217;est cadeau (ou pas)</h3>

<div>Cerise sur la praline, voici les deux cadeaux numériques que je me suis offert dernièrement en guise de pré-cadeaux de Nowel :</div>

<ul>
    <li><strong><a href="http://smacss.com/">SMACSS</a></strong> (<em>Scalable and Modular Architecture for CSS</em>) &#8212; <a href="http://smacss.com/book/">Guide en ligne</a> (gratuit) ou aux <a href="http://smacss.com/getsmacked">formats PDF, ePub et mob</a>i (pour $15, soit 11.58 petits euros) de <a href="http://snook.ca/">Jonathan Snook</a> pour apprendre comment structurer ses CSS pour allier souplesse et maintenance à mesure que vos projets et vos équipes grandissent. Via <a href="http://t37.net/smacss-guide-bonnes-pratiques-css-sites-web.html">t37.net</a>.</li>
    <li><strong><a href="http://designprofessionalism.com/">Design Professionalism</a></strong> &#8211; Le guide du designer pour reprendre le contrôle de votre métier. Qu&#8217;est-ce que le métier de webdesigner ? Comment s&#8217;y forme-t-on ? Que peut-on attendre de ce métier parfois fascinant et souvent ingrat ? Andy Rutledge répond à toutes nos interrogations existentielles.</li>
</ul>

<h2>C&#8217;est fini !</h2>

<div>Pour avoir des nouvelles régulières de mes dernières trouvailles réticulaires, je vous invite à visiter mes liens sur <a href="http://www.diigo.com/user/bruno_o">Diigo</a> ou <a href="http://delicious.com/br1o">Delicious</a> en fonction de vos habitudes (les deux sites sont pratiquement nourris au même grain en même temps). N&#8217;hésitez pas à partager vos liens préférés dans les commentaires.</div>

<p><span style="color: #444444; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;"><span class="Apple-style-span" style="font-size: 12px; line-height: 22px;"><em>
</em></span></span></p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/le-petit-journal-du-web-les-fruits-de-la-veille-ont-garde-leur-fraicheur' title='Le petit journal du web &#8212; Les fruits de la veille ont gardé toute leur fraicheur'>Le petit journal du web &#8212; Les fruits de la veille ont gardé toute leur fraicheur</a></li><li><a href='http://css4design.com/petit-journal-du-web-septembre-2011' title='Le Petit Journal du Web &#8212; 09/2011'>Le Petit Journal du Web &#8212; 09/2011</a></li><li><a href='http://css4design.com/wordpress-a-z-extension-plugin' title='WordPress de A à Z &#8212; E comme Extensions (les plugins)'>WordPress de A à Z &#8212; E comme Extensions (les plugins)</a></li><li><a href='http://css4design.com/fonction-javascript-contre-bug-classes-multiples-internet-explorer-6' title='IE6 &#8212; 3 fonctions Javascript pour lutter contre le bug des classes multiples'>IE6 &#8212; 3 fonctions Javascript pour lutter contre le bug des classes multiples</a></li><li><a href='http://css4design.com/listes-pour-webdesigners' title='23 listes pour Webdesigners'>23 listes pour Webdesigners</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=11094&amp;md5=7280d57bb0f8fef70170d561317d2758" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/le-petit-journal-du-web-novembre-2011/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=11094&amp;md5=7280d57bb0f8fef70170d561317d2758" type="text/html" />
	</item>
		<item>
		<title>Calculer une grille de mise en page « typo » avec le nombre d&#8217;Or</title>
		<link>http://css4design.com/grille-typographique-nombre-d-or</link>
		<comments>http://css4design.com/grille-typographique-nombre-d-or#comments</comments>
		<pubDate>Thu, 18 Nov 2010 12:59:37 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Design & Graphisme]]></category>
		<category><![CDATA[Typographie]]></category>
		<category><![CDATA[Colonnes]]></category>
		<category><![CDATA[Edito]]></category>
		<category><![CDATA[Gouttière]]></category>
		<category><![CDATA[Grille]]></category>
		<category><![CDATA[Illustrator]]></category>
		<category><![CDATA[interlignage]]></category>
		<category><![CDATA[Largeur]]></category>
		<category><![CDATA[Mise en page]]></category>
		<category><![CDATA[Nombre d'or]]></category>
		<category><![CDATA[Pixels]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[typographie]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=7945</guid>
		<description><![CDATA[Le calcul d&#8217;une grille de mise en page modulaire avec le nombre d&#8217;Or est une bonne occasion pour mettre en pratique le manifeste pour un interlignage minimum syndical et les cinq règles pour améliorer l’affichage de vos textes. L&#8217;objectif est de déterminer une taille de police de caractère et une largeur de colonnes d&#8217;après un interlignage «idéal». Après l&#8217;aperçu d&#8217;une méthode pour créer des gabarits destinés à l&#8217;imprimé, j&#8217;expliquerai comment utiliser l&#8217;interlignage pour concevoir des grilles adaptées à une résolution inférieure ou égale à 1 024 pixels de large. J&#8217;ai choisi un interlignage compatible avec le ratio du nombre d&#8217;Or typographique (1,5) et [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fgrille-typographique-nombre-d-or">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fgrille-typographique-nombre-d-or&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Le calcul d&#8217;une grille de mise en page modulaire avec le <a href="http://css4design.com/nombre-d-or-suite-de-fibonacci-et-autres-grilles-de-mise-en-page-pour-le-design-web">nombre d&#8217;Or</a> est une bonne occasion pour mettre en pratique le <a href="http://css4design.com/manifeste-pour-un-interlignage-minimum">manifeste pour un interlignage minimum syndical</a> et les <a href="http://www.css4design.com/5-regles-simples-pour-gerer-l-affichage-de-votre-texte-dans-vos-mises-en-page">cinq règles pour améliorer l’affichage de vos textes</a>. L&#8217;objectif est de déterminer une taille de police de caractère et une largeur de colonnes d&#8217;après un interlignage «idéal». Après l&#8217;aperçu d&#8217;une méthode pour créer des gabarits destinés à l&#8217;imprimé, j&#8217;expliquerai comment utiliser l&#8217;interlignage pour concevoir des grilles adaptées à une résolution inférieure ou égale à 1 024 pixels de large. J&#8217;ai choisi un interlignage compatible avec le ratio du nombre d&#8217;Or typographique (1,5) et du nombre d&#8217;Or Classique (1,618). Toutefois, le concept de cette grille fonctionne très bien avec d&#8217;autres valeurs. J&#8217;ai mis des exemples de grilles réalisées avec Illustrator sous la forme d&#8217;un GIF animé (désolé).<span id="more-7945"></span></p>

<p><img class="alignnone size-full wp-image-8208" title="grille-interligne-typographie" src="http://css4design.com/wp-content/uploads/2010/11/grille-interligne-typographie.png" alt="" width="633" height="305" /></p>

<p>Pour déterminer le pas d&#8217;une grille de mise en page pour le Web, on recherche souvent le meilleur rapport entre une largeur optimale (entre 900 et 1 000 pixels) et un nombre de colonnes divisible par deux, par trois et/ou par quatre. Les formats composés de <a href="http://fr.wikipedia.org/wiki/12_(nombre)">12</a> ou <a href="http://fr.wikipedia.org/wiki/24_(nombre)">24</a> colonnes répondent à ces critères (ce sont également des <a href="http://fr.wikipedia.org/wiki/Nombre_hautement_compos%C3%A9">nombres hautement composés</a>). On trouve aussi des grilles en <a href="http://fr.wikipedia.org/wiki/16_(nombre)">16</a> colonnes (<a href="http://fr.wikipedia.org/wiki/Nombre_pratique">nombre pratique</a>). D&#8217;une manière générale, on privilégie les formats qui permettent des regroupements de colonnes variés.</p>

<p>Pour faire entrer ces colonnes dans une largeur donnée, on utilise la gouttière, l&#8217;espace séparant les colonnes, comme variable d&#8217;ajustement avec des valeurs allant de 10 à 30 pixels. Oui, vous avez bien lu : la gouttière, cet élément fondamental pour la respiration de toute grille de mise en page, n&#8217;est souvent que le rebut de calculs fastidieux !</p>

<h2>Un gabarit de page pour l&#8217;imprimé</h2>

<p>Pour définir une maquette de magazine destinée à l&#8217;impression, nous pouvons partir de la plus petite taille de caractère repérée dans les contenus (notes de bas de page, légendes, etc.) et augmenter la taille des textes en fonction des différents niveaux (notez que l&#8217;on peut aussi jouer sur la graisse, la couleur, le contraste, la casse ou un changement de fonte) :</p>

<ul>
    <li>Notes de bas de page : 8 pt</li>
    <li>Légendes des photos : 10 pt</li>
    <li>Corps du texte : 12 pt</li>
    <li>Intertitres : 14 pt</li>
    <li>Rubriques  : 18 pt</li>
    <li>Titres de Chapitre : 21 pt</li>
    <li>Titre de l&#8217;ouvrage : 48 pt</li>
</ul>

<p>En fonction du style et du public visé par la publication, nous déterminerons ensuite l&#8217;empagement à l&#8217;aide de tracés régulateurs pour obtenir des blancs tournants (les marges, pour faire simple), puis, pour chaque niveau, nous regarderons le nombre de caractères optimum qui nous donnera la largeur des colonnes, une des clés de la lisibilité et du confort de lecture.</p>

<p>Reste à voir combien de colonnes entreront dans le format dont nous disposons. Dans la plupart des publications, les marges servent de variables d&#8217;ajustement ; dans les ouvrages de luxe, c&#8217;est le format de l&#8217;ouvrage qui peut évoluer pour préserver des blancs tournants généreux.</p>

<h2>Une maquette pour le Web</h2>

<p>J&#8217;ai cherché la meilleure approche pour concevoir une grille modulaire sans trop me soucier ni du nombre de colonnes ni de la largeur totale de l&#8217;empagement, dans les limites d&#8217;une résolution d&#8217;écran de 1 024 pixels de large.</p>

<div id="attachment_7991" class="wp-caption alignnone" style="width: 625px"><a href="http://css4design.com/wp-content/uploads/2010/11/grille-21-pixels.gif"><img class="size-full wp-image-7991" title="grille-21-pixels" src="http://css4design.com/wp-content/uploads/2010/11/grille-21-pixels.gif" alt="" width="615" height="500" /></a><p class="wp-caption-text">Une grille de mise en page vraiment modulaire à laquelle ce GIF animé ne rend pas justice !</p></div>

<h3>La pêche à l&#8217;interligne</h3>

<p>Et si la seule constante indépassable n&#8217;était finalement rien d&#8217;autre que l&#8217;interlignage ? En effet, s&#8217;il y a bien une chose d&#8217;un peu scientifique dans le processus de lecture, c&#8217;est qu&#8217;un interlignage possédant un ratio de 1,5 à 1,6 par rapport à une taille de caractère comprise entre 12 et 16 pixels, possède un potentiel de lisibilité en béton.</p>

<p>Après quelques essais, une valeur de 21 pixels pour l&#8217;interlignage s&#8217;est imposée. Ce chiffre correspond à la fois au produit du nombre d&#8217;Or typographique par un corps de texte de 14 pixels (<em>1,5 x 14 = 21</em>) et au produit du nombre d&#8217;Or tout court par un corps de texte composé en 13 pixels (<em>1,618 x 13 = 21,034</em>), ce qui permet de faire face à la plupart des situations. Un corps de texte en dessous des 13 pixels n&#8217;est de toute manière pas très raisonnable !</p>

<h3>Les colonnes, les colonnes !</h3>

<p>Il suffit d&#8217;utiliser cette valeur pour la gouttière et d&#8217;en faire aussi la largeur des colonnes pour obtenir une grille composée uniquement de modules de 21 pi<em>x</em>els de large. C&#8217;est donc la largeur totale qui devient la variable d&#8217;ajustement à la place de la gouttière, permettant à cette dernière d&#8217;être en harmonie avec l&#8217;interlignage et un regroupement plusieurs colonnes comme <em>42px + 21px </em>ou <em>63px + 21px</em> et ainsi de suite.</p>

<p>Ce mode de calcul autorise l&#8217;affichage de 48 colonnes totalisant 987 pixels <em>(48 x 21) &#8211; 21</em> qui se centrent parfaitement dans un écran de 1024 pixels, ce qui est bien pratique. Ces 48 colonnes sont divisibles par 2, 3 ou 4 autorisant de multiples regroupements pour obtenir pas moins de 13 combinaisons : 24, 21, 18, 16, 14, 12, 9, 8, 7, 6, 4, 3 ou 2 colonnes. A noter que le nombre 48 fait partie des nombres hautement composés, comme 12 et 24.</p>

<p>On peut aussi retrancher une ou plusieurs colonnes de chaque côté pour obtenir une largeur réduite : 22 colonnes pour une largeur de 903 pixels (ok, 22 ne se divise bien que par 2, mais n&#8217;oublions pas que les mises en page asymétriques en ont sous le talon aiguille !) ; 20 colonnes pour une largeur de 819 pixels ; ou encore 18 colonnes pour 735 pixels au cas où vous auriez besoin de concevoir pour une résolution en <em>800 x 600</em>.</p>

<h3>Adaptez, il en restera toujours quelque chose</h3>

<p>Si vous trouvez que les valeurs proposées sont trop contraignantes, n&#8217;hésitez pas à partir sur une base de 20, 18 ou même 16 pixels pour votre gouttière et votre interlignage, sachant que les valeurs (taille du caractère / interligne) 12/20, 13/20, 14/20 mais aussi 12/18,13/18 ou encore 11/16 permettent une lisibilité à l&#8217;épreuve des «séniors» pour peu que vous soyez attentifs aux contrastes ;)</p>

<h2>Ne vous faites pas griller</h2>

<p>Les grilles sont une aide précieuse pour élaborer un design cohérent et ne sont pas très difficiles à mettre en place pour peu que l&#8217;on prenne le temps de se poser des questions sur leur rôle. Le protocole HTTP est sans état : c&#8217;est la persistance des éléments récurrents des pages que vous liez entre elles qui crée la notion de site Web. Pour autant, il est important de ne pas se laisser enfermer dans une grille : c&#8217;est vous qui devez la mettre «au pas» et non le contraire. En d&#8217;autres termes, ne vous demandez pas ce que vous pouvez faire pour votre grille, mais demandez-vous plutôt ce qu&#8217;elle peut faire pour vous !</p>

<h2>Articles en relation avec les grilles</h2>

<ol>
    <li><a rel="bookmark" href="http://css4design.com/grille-modulaire-peripheriques-mobiles-iphone-android-ipad">Grille modulaire pour périphériques mobiles (iPhone, Android, iPad)</a></li>
    <li><a href="http://paris.blog.lemonde.fr/2008/12/27/grilles-de-mise-en-page-typographie-web-et-print/">Grilles de Mise en Page | typographie web et print</a></li>
    <li><a rel="bookmark" href="http://css4design.com/indesign-grille-mise-en-page-zoning-gabarit">Grille de mise en page, « zoning » et gabarit avec Adobe InDesign</a></li>
    <li><a rel="bookmark" href="http://css4design.com/framework-css-format-a4">Les frameworks CSS sont le nouveau format A4</a></li>
    <li><a rel="bookmark" href="http://css4design.com/wdfr-impression-grille-dessin-croquis-maquette">#WDFR — Imprimez votre grille pour dessiner vos croquis</a></li>
    <li><a rel="bookmark" href="http://css4design.com/framework-css-wdfriday-wdfr">#WDFR : les Framework CSS en ont pris «plein la grille» pendant le WDFriday</a></li>
    <li><a rel="bookmark" href="http://css4design.com/gridulator-calcul-grille-webdesign">Gridulator calcule la grille de votre design web</a></li>
    <li><a rel="bookmark" href="http://css4design.com/emchart-convertir-des-pixels-en-em">EmChart — Convertir des pixels en EM</a></li>
    <li><a rel="bookmark" href="http://css4design.com/frameworks-css-blueprint-vs-960-grid-system">Frameworks CSS — Blueprint vs 960 Grid System</a></li>
    <li><a rel="bookmark" href="http://css4design.com/framework-css-semantique-maquette-dynamique-et-autres-notes">Framework CSS — Sémantique, maquette dynamique et autres notes</a></li>
    <li><a rel="bookmark" href="http://css4design.com/quelques-notes-sur-les-grilles-de-mise-en-page">Quelques notes sur les grilles de mise en page</a></li>
    <li><a rel="bookmark" href="http://css4design.com/grid-gardez-le-controle-sur-votre-design-web">Grid — Gardez le contrôle sur votre design web</a></li>
    <li><a rel="bookmark" href="http://css4design.com/afficher-masquer-votre-grille-de-base-avec-jquery">Afficher / masquer votre grille de base avec jQuery</a></li>
</ol>

<h2>Brouillons en cours sur le même sujet</h2>

<ul>
    <li>Adapter votre grille aux agents utilisateurs avec les « Media Queries »</li>
</ul>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/grille-modulaire-peripheriques-mobiles-iphone-android-ipad' title='Grille modulaire pour périphériques mobiles (iPhone, Android, iPad)'>Grille modulaire pour périphériques mobiles (iPhone, Android, iPad)</a></li><li><a href='http://css4design.com/indesign-grille-mise-en-page-zoning-gabarit' title='Grille de mise en page, « zoning » et gabarit avec Adobe InDesign'>Grille de mise en page, « zoning » et gabarit avec Adobe InDesign</a></li><li><a href='http://css4design.com/wdfr-impression-grille-dessin-croquis-maquette' title='#WDFR &#8212; Imprimez votre grille pour dessiner vos croquis'>#WDFR &#8212; Imprimez votre grille pour dessiner vos croquis</a></li><li><a href='http://css4design.com/frameworks-css-blueprint-vs-960-grid-system' title='Frameworks CSS &#8212; Blueprint vs 960 Grid System'>Frameworks CSS &#8212; Blueprint vs 960 Grid System</a></li><li><a href='http://css4design.com/choisir-un-frameworks-css' title='36 frameworks CSS &#8212; Mettez une grille dans votre design'>36 frameworks CSS &#8212; Mettez une grille dans votre design</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=7945&amp;md5=8f8f8ddd4a36bcd1cfb68dccf386b45d" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/grille-typographique-nombre-d-or/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=7945&amp;md5=8f8f8ddd4a36bcd1cfb68dccf386b45d" type="text/html" />
	</item>
		<item>
		<title>4 tutoriels SEO et quelques liens pour surveiller votre référencement</title>
		<link>http://css4design.com/tutoriels-seo-liens-referencement</link>
		<comments>http://css4design.com/tutoriels-seo-liens-referencement#comments</comments>
		<pubDate>Mon, 27 Sep 2010 13:25:03 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Google & Référencement]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Référencement]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Tutoriels]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=7000</guid>
		<description><![CDATA[Il existe de nombreux sites pour apprendre les ficelles des référenceurs. Mais quoi de mieux qu&#8217;un bon guide SEO qui reprend les bases pour faire le point sur les différentes techniques ? Réponse : quatre bons guides ! J&#8217;ai fait mon Monsieur Plus en ajoutant quelques ressources qui pourraient s&#8217;avérer utiles si vous voulez faire le point sur les liens qui pointent vers votre site ou si vous désirez surveiller vos contenus et votre réputation sur le web. Tutoriels SEO Tutoriel Référencement Black Hat &#8212; On parle beaucoup de référencement Black Hat, mais qu&#8217;est-ce exactement ? Oseox nous propose un tutoriel [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Ftutoriels-seo-liens-referencement">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Ftutoriels-seo-liens-referencement&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Il existe de nombreux sites pour apprendre les ficelles des référenceurs. Mais quoi de mieux qu&#8217;un bon guide SEO qui reprend les bases pour faire le point sur les différentes techniques ? Réponse : quatre bons guides ! J&#8217;ai fait mon <em>Monsieur Plus</em> en ajoutant quelques ressources qui pourraient s&#8217;avérer utiles si vous voulez faire le point sur les liens qui pointent vers votre site ou si vous désirez surveiller vos contenus et votre réputation sur le web.<span id="more-7000"></span></p>

<h2><img class="alignnone size-full wp-image-7095" title="wordle-tutoriels-seo" src="http://css4design.com/wp-content/uploads/2010/09/wordle-tutoriels-seo.png" alt="" width="633" height="362" /></h2>

<h2>Tutoriels SEO</h2>

<ul>
    <li><a href="http://oseox.fr/black-hat/">Tutoriel Référencement Black Hat</a> &#8212; On parle beaucoup de référencement <em>Black Hat</em>, mais qu&#8217;est-ce exactement ? Oseox nous propose un tutoriel afin d&#8217;y voir plus clair sur ces techniques que la morale réprouve ce qui est parfait pour éviter du faire du <em>Black Hat</em> sans le savoir ;)</li>
    <li><a href="http://oseox.fr/referencement/">Tutoriel Référencement White Hat </a>&#8211; Maintenant que vous connaissez les techniques à ne pas mettre en oeuvre si vous voulez rester du bon côté de force, voici un tutoriel composé de près de 50 articles pour optimiser le référencement naturel de votre site ou de votre blog.</li>
    <li><a href="http://www.webrankinfo.com/dossiers/strategies-de-liens/tutoriel-redirections">Le guide des redirections pour le référencement</a> &#8212; Si les liens sont le sang du web, les redirections en assure la fluidité. Ce tutoriel aborde les différents types de redirection : Meta Refresh, Javascript, redirection 301, 302. Complète idéalement l&#8217;<a href="http://www.webrankinfo.com/dossiers/debutants/initiation-aux-redirections">initiation aux différents types de redirections</a>.</li>
    <li><a href="http://www.superbibi.net/guide-referencement">Guide référencement</a> &#8212; Tutoriel SEO en 14 parties qui part de l&#8217;état des lieux des moteurs de recherche en France jusqu&#8217;aux mauvaises pratiques et pénalités en passant par l&#8217;analyse sémantique, l&#8217;optimisation <em>on</em> et <em>off</em> page.</li>
</ul>

<h2>Outils SEO</h2>

<ul>
    <li><a href="http://roget.biz/facons-de-connaitre-des-sites-qui-pointent-vers-votre-blog-le-fameux-backlink">5 façons de connaître des sites qui pointent vers votre blog</a> &#8212; Si les<em>Backlinks</em> sont le résultat de l&#8217;optimisation de votre site (SEO), ils en sont également la matière première. Il est donc indispensable de savoir si des liens externes pointent vers vos pages et leur origine, le cas échéant.</li>
    <li><a href="http://www.searchenginejournal.com/using-excel-for-seo-the-grand-collection-of-tips/">Using Excel for SEO – the Grand Collection of Tips</a> &#8212; Saviez-vous que Excel pouvait être un formidable outil pour être productif en SEO ?</li>
    <li><a href="http://br1o.fr/ressources-pour-surveiller-vos-contenus-et-votre-e-reputation-sur-le-web/">16 ressources pour surveiller vos contenus et votre e-réputation sur le Web</a> &#8212; Dans le même esprit que les outils qui permettent de savoir qui fait des liens vers votre site, il est important de veiller sur vos contenus et votre réputation sur le Web.</li>
</ul>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/j-ai-reference-mon-site-sur-plus-de-400-moteurs-de-recherche-et-annuaires-j-ai-bon' title='J&#8217;ai référencé mon site sur plus de 400 moteurs de recherche et annuaires de liens, j&#8217;ai bon ?'>J&#8217;ai référencé mon site sur plus de 400 moteurs de recherche et annuaires de liens, j&#8217;ai bon ?</a></li><li><a href='http://css4design.com/composes-html-logo-baseline-potentiel-seo' title='8 composés HTML pour le logo et la « baseline » et leur potentiel SEO'>8 composés HTML pour le logo et la « baseline » et leur potentiel SEO</a></li><li><a href='http://css4design.com/apercu-instantane-google-webdesign-referencement-naturel' title='Aperçu instantané de Google, Webdesign et référencement naturel'>Aperçu instantané de Google, Webdesign et référencement naturel</a></li><li><a href='http://css4design.com/astuce-ameliorer-referencement-google' title='Référencement de sites Web &#8212; Chassez le naturel, il revient au SEO !'>Référencement de sites Web &#8212; Chassez le naturel, il revient au SEO !</a></li><li><a href='http://css4design.com/seo-optimiser-le-referencement-de-wordpress-avec-les-descriptions-de-tags' title='SEO &#8212; Optimiser le référencement de WordPress avec les descriptions de tags'>SEO &#8212; Optimiser le référencement de WordPress avec les descriptions de tags</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=7000&amp;md5=6d068c03559fa1fdc82e4bf2eb250b31" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/tutoriels-seo-liens-referencement/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=7000&amp;md5=6d068c03559fa1fdc82e4bf2eb250b31" type="text/html" />
	</item>
		<item>
		<title>Conception dans le navigateur avec HTML5 &amp; CSS3 (amélioration progressive)</title>
		<link>http://css4design.com/conception-dans-le-navigateur-avec-html5-css3</link>
		<comments>http://css4design.com/conception-dans-le-navigateur-avec-html5-css3#comments</comments>
		<pubDate>Tue, 24 Aug 2010 15:09:24 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Conception de site web]]></category>
		<category><![CDATA[Création graphique]]></category>
		<category><![CDATA[Design & Graphisme]]></category>
		<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[Intégration web]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Edito]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Tutoriels]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=6574</guid>
		<description><![CDATA[Le design dans le navigateur est une technique de Webdesign qui fait l&#8217;impasse sur la maquette Photoshop. Derrière ce concept se trouve l&#8217;idée selon laquelle dans « Webdesign » il y a d&#8217;abord « Web » : pourquoi commencer le travail dans Photoshop pour refaire ensuite presque la même chose en HTML et en CSS ? Surtout quand la prise en charge progressive de CSS3 par les navigateurs récents autorise des effets graphiques qui nécessitaient autrefois de nombreuses images et un marquage HTML surnuméraire&#8230; Travailler directement dans le navigateur est l&#8217;occasion de pratiquer l&#8217;amélioration progressive ou la dégradation gracieuse selon [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fconception-dans-le-navigateur-avec-html5-css3">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fconception-dans-le-navigateur-avec-html5-css3&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Le design dans le navigateur est une technique de Webdesign qui fait l&#8217;impasse sur la maquette Photoshop. Derrière ce concept se trouve l&#8217;idée selon laquelle dans « Webdesign » il y a d&#8217;abord « Web » : pourquoi commencer le travail dans Photoshop pour refaire ensuite presque la même chose en HTML et en CSS ? Surtout quand la prise en charge progressive de CSS3 par les navigateurs récents autorise des effets graphiques qui nécessitaient autrefois de nombreuses images et un marquage HTML surnuméraire&#8230;<span id="more-6574"></span></p>

<p><img class="alignnone size-full wp-image-7093" title="wordle-html5-css3" src="http://css4design.com/wp-content/uploads/2010/08/wordle-html5-css3.png" alt="" width="633" height="385" /></p>

<p>Travailler directement dans le navigateur est l&#8217;occasion de pratiquer l&#8217;amélioration progressive ou la dégradation gracieuse selon le côté où l&#8217;on se place. L&#8217;amélioration progressive est une méthode de conception centrée sur le contenu : les effets graphiques sont ajoutés dans un deuxième temps pour les navigateurs modernes. La dégradation gracieuse privilégie l&#8217;apparence : utilisation des dernières technologies en première intention et mise en place de <em>fallbacks</em> pour que la page reste fonctionnelle sur les configurations plus modestes. Opposées en apparence, ces deux approches sont souvent complémentaires dans la pratique.</p>

<p>Dans ce tutoriel, après avoir crayonné une esquisse de la page sur le papier et choisi une palette de couleur, nous passerons en revue les balises HTML5 utilisées dans cet <a href="http://css4design.com/exemples/html5-css3/">exercice de style</a>. Nous verrons comment obliger Internet Explorer à prendre en compte ces nouveaux éléments. Pour finir, nous ajouterons du « volume » à la page grâce à la magie de CSS3. La page se présentera sous son meilleur jour dans les dernières versions de Firefox, Chrome ou Opera, tout en restant totalement fonctionnelle et très proche visuellement de « l&#8217;original » dans Internet Explorer 6, 7 et 8 malgré l&#8217;absence des effets.</p>

<h2>1. Baliser le contenu</h2>

<p><a href="http://css4design.com/wp-content/uploads/2010/08/02-balisage-contenus.png"><img class="size-thumbnail wp-image-6583 alignleft" title="02-balisage-contenus" src="http://css4design.com/wp-content/uploads/2010/08/02-balisage-contenus-102x102.png" alt="" width="102" height="102" /></a>Pour mettre en œuvre le principe de l&#8217;amélioration progressive, il est important de commencer par le contenu. L&#8217;idéal est de faire un découpage HTML du matériel fourni par le client qui soit indépendant de toute mise en forme. La mise en page en plusieurs colonnes s&#8217;effectuera en ajoutant des balises <code>div</code> aux endroits stratégiques. N&#8217;hésitez pas à ouvrir le fichier <em><a href="http://css4design.com/exemples/html5-css3/">index.php </a></em>dans votre navigateur et votre éditeur préféré pour avoir une vision globale du code et suivre les explications sur l&#8217;utilisation des nouvelles balises HTML5.</p>

<p><a href="http://css4design.com/wp-content/uploads/2010/08/03-affichage-sans-css.png"><img class="size-thumbnail wp-image-6584 alignleft" title="03-affichage-sans-css" src="http://css4design.com/wp-content/uploads/2010/08/03-affichage-sans-css-102x102.png" alt="" width="102" height="102" /></a>Il s&#8217;agit bien du degré zéro de l&#8217;amélioration progressive mais cette page<em> </em>est déjà fonctionnelle dans tous les agents utilisateurs ! Son affichage est garanti sur tous les périphériques affichant du HTML quelle que soit leur ancienneté ou leur résolution d&#8217;écran (même les lecteurs vocaux devraient s&#8217;y retrouver). Il s&#8217;agit véritablement de la matière première brute de fonderie qu&#8217;il faudra styler pour aboutir à quelque chose de plus flatteur visuellement.</p>

<h2>2. Ébauche de la page</h2>

<p>Une fois que vos contenus textes et images sont été correctement balisés avec les balises HTML appropriées, il est temps d&#8217;ouvrir votre bloc-note préféré pour griffonner l&#8217;allure générale de votre page web :</p>

<div id="attachment_6585" class="wp-caption alignnone" style="width: 610px"><img class="size-full wp-image-6585 " title="04-esquisse" src="http://css4design.com/wp-content/uploads/2010/08/04-esquisse.png" alt="" width="600" height="716" /><p class="wp-caption-text">Hé, pas besoin de Moleskine, n&#39;importe quel cahier &quot;premier prix&quot; fera l&#39;affaire !</p></div>

<p>Pas besoin de trop détailler. Il faut seulement faire ressortir la structure générale du site : empagement, en-tête, pied de page, nombre et emplacement des colonnes pour les articles et les barres latérales. Cette esquisse sert surtout de point de repère pour éviter de se disperser dans le feu de l&#8217;action.</p>

<h2>3. Choisir les couleurs</h2>

<div id="attachment_6586" class="wp-caption alignnone" style="width: 1030px"><img class="size-full wp-image-6586 " title="05-kuler-palette-couleur" src="http://css4design.com/wp-content/uploads/2010/08/05-kuler-palette-couleur.png" alt="" width="1020" height="611" /><p class="wp-caption-text">Adobe Kuler est un outil en ligne très complet et intuitif pour créer vos palettes de couleurs</p></div>

<p>Le succès d&#8217;un site web repose en grande partie sur l&#8217;harmonie des couleurs utilisées. L&#8217;<a href="http://kuler.adobe.com">application en ligne Kuler d&#8217;Adobe</a> contient plusieurs milliers de palettes de couleurs modifiables de manière intuitive. Nous récupérerons les valeurs HEX (hexadécimale) et RGB (<em>Red</em>, <em>Green</em>, <em>Blue</em>) des couleurs que nous auront sélectionnées.</p>

<h2>4. Squelette de page HTML5</h2>

<p><pre><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;meta charset="utf-8"&gt;
    &lt;title&gt;Une page HTML5...&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;...avec du contenu.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
La structure de base d&#8217;une page HTML5 se différencie peu des anciennes versions. La syntaxe du DOCTYPE (<em>Document Type Declaration</em>, ou DTD) est simplifiée et ne propose qu&#8217;un seul mode : fini le choix cornélien entre <em>Strict</em>, <em>Transitional</em> ou <em>Frameset</em> !</p>

<p>En HTML5 le doctype s&#8217;écrit en bas de casse mais pour des raisons de compatibilité avec les anciennes conventions héritées de SGML (<em>Standard Generalized Markup Language</em>), il est recommandé d&#8217;écrire DOCTYPE en lettres capitales. La présence d&#8217;une DTD permet aux moteurs de rendu des navigateurs web d&#8217;afficher les pages dans un mode standard (<em>Standard Complient Mode</em>).</p>

<p>J&#8217;utilise l&#8217;IDE (<em>Integrated Development Environment</em>) Netbeans (Notepad++ est aussi un très bon choix) et le navigateur Firefox équipé de Firebug. Je teste ensuite les pages dans un maximum de navigateurs : Google Chrome, Opera, Safari, Internet Explorer 6, 7, 8 (9 <em>Preview</em>) mais aussi sur des périphériques mobiles à résolution d&#8217;écran limitée (téléphone portable, Netbooks, iPhone, etc.).</p>

<h2>5. Préparer Internet Explorer pour HTML5</h2>

<p><pre><code>&lt;!--[if lt IE 9]&gt;
&lt;script&gt;
    // http://remysharp.com/2009/01/07/html5-enabling-script/
    /<em>@cc_on'abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video'.replace(/\w+/g,function(n){document.createElement(n)})@</em>/
&lt;/script&gt;
&lt;![endif]--&gt;
</code></pre>
Internet Explorer ne prend pas en charge les nouvelles balises HTML5. Toutefois, il est possible de les injecter dans le DOM (<em>Document Object Model</em>) à l&#8217;aide de <a href="http://remysharp.com/2009/01/07/html5-enabling-script/">quelques lignes de Javascript</a> à placer dans la balise <code>head</code>. Les <a href="http://css4design.com/tag/commentaires-conditionnels">commentaires conditionnels</a> permettent de cibler toutes les versions inférieures à Internet Explorer 9 (soyons optimistes !).</p>

<h2>6. Structure générale de la page</h2>

<div id="attachment_6587" class="wp-caption alignnone" style="width: 692px"><img class="size-full wp-image-6587 " title="06-structure-balises-html" src="http://css4design.com/wp-content/uploads/2010/08/06-structure-balises-html.png" alt="" width="682" height="568" /><p class="wp-caption-text">Rien de tel qu&#39;un croquis réalisé avec Illustrator pour y voir plus clair ^__^v</p></div>

<p>Là où HTML 4.0.1 n&#8217;offrait <em>grosso modo</em> qu&#8217;une balise <code>div</code> générique pour « div-iser » nos pages web, HTML5 propose différents éléments permettant d&#8217;affiner la structure d&#8217;une page : <code>header</code>, <code>hgroup</code>, <code>section</code>, <code>aside</code>, <code>nav</code>, <code>article</code>, <code>footer</code>, etc. Malgré des intitulés apparemment sans ambiguïté, l&#8217;utilisation de ces nouvelles balises n&#8217;est pas toujours simple : la compréhension des contenus fournis par le client est plus importante que jamais, ce qui devrait booster la dimension littéraire de votre intégrateur web ;)</p>

<h3>7. `header`</h3>

<p><img class="alignleft size-medium wp-image-6588" title="07-header" src="http://css4design.com/wp-content/uploads/2010/08/07-header-134x69.png" alt="" width="134" height="69" /></p>

<p>Il s&#8217;agit de l&#8217;introduction du site ou d&#8217;une section de la page. Ici, nous avons trois niveaux d&#8217;en-tête. Un <em>header</em> contient généralement un ou plusieurs niveaux de titre <code>h1</code> – <code>h6</code> ou un groupe de titres <code>hgroup</code>. Il peut également abriter un formulaire de recherche, un menu de navigation, le logo ou tout autre élément en rapport avec la page ou le site web dans son ensemble.</p>

<h3>8. `footer`</h3>

<p><img class="alignleft size-medium wp-image-6589" title="08-footer" src="http://css4design.com/wp-content/uploads/2010/08/08-footer-134x68.png" alt="" width="134" height="68" /></p>

<p>C&#8217;est en quelque sorte la conclusion de l&#8217;introduction du site ou de la section de la page auquel il se rapporte. Selon le contexte, <code>footer</code> peut contenir le <em>copyright</em> pour l&#8217;ensemble du site ou la date de publication d&#8217;une note. Dans l&#8217;exemple, j&#8217;utilise <code>footer</code> (et <code>header</code>) au niveau du <code>body</code>, de <code>div#container</code> et de <code>article</code>. Cette balise n&#8217;est pas nécessairement située en fin de section : elle peut se trouver juste après la balise <code>header</code>. On pourra en effet vouloir regrouper visuellement toutes les informations relatives à un article.</p>

<h3>9. `hgroup`</h3>

<p><img class="alignleft size-medium wp-image-6590" title="09-hgroup" src="http://css4design.com/wp-content/uploads/2010/08/09-hgroup-134x54.png" alt="" width="134" height="54" /></p>

<p>Cet élément a pour vocation de regrouper différents niveaux de titre à l&#8217;intérieur d&#8217;un élément <code>header</code>. Typiquement : le nom du site et sa <em>Baseline</em> ou un titre et un sous-titre. La subtilité de <code>hgroup</code> tient au concept d&#8217;<em>Outline</em> qui permet de souligner la structure d&#8217;une page (si <code>hgroup</code> contient un <code>h1</code> et un <code>h2</code>, seul le premier niveau sera pris en compte par l&#8217;Outliner).</p>

<h3>10. `article`</h3>

<p><img class="alignleft size-medium wp-image-6591" title="10-article" src="http://css4design.com/wp-content/uploads/2010/08/10-article-134x88.png" alt="" width="134" height="88" /></p>

<p>Tout contenu indépendant susceptible d&#8217;être syndiqué dans un flux Atom ou RSS comme une note, une entrée de blog, un article de journal ou même un <em>Widget</em> interactif (un système de chat, par exemple) peut être enveloppé avec <code>article</code>. Cette balise peut également être imbriquée dans un autre élément <code>article</code> dans le cadre de commentaires laissés par les utilisateurs.</p>

<h3>11. `section`</h3>

<p><img class="alignleft size-medium wp-image-6592" title="11-section" src="http://css4design.com/wp-content/uploads/2010/08/11-section-134x50.png" alt="" width="134" height="50" /></p>

<p>Une section est une portion plus ou moins importante de contenu avec au moins un niveau de titre. Tout ce qui se trouve à l&#8217;intérieur de <code>section</code> devrait pouvoir être isolé du reste et fournir une information autonome.
Pour faire simple, l&#8217;élément <code>section</code> ne devrait pas être utilisé :
Pour l&#8217;application de styles CSS ou d&#8217;ancrage pour du Javascript (préférez l&#8217;élément <code>div</code>),
Si les éléments <code>article</code>, <code>aside</code> ou <code>nav</code> sont plus appropriés,
Si vous n&#8217;avez pas de titre à mettre – et non, le display: none n&#8217;est pas une option ;)</p>

<h3>12. `nav`</h3>

<p><img class="alignleft size-medium wp-image-6593" title="12-nav" src="http://css4design.com/wp-content/uploads/2010/08/12-nav-134x50.png" alt="" width="134" height="50" /></p>

<p>C&#8217;est un élément plus ambiguë qu&#8217;il n&#8217;y parait. On a envie de l&#8217;utiliser pour envelopper toutes les balises <code>ul</code> et <code>ol</code> de la page dès lors que les liens qui s&#8217;y trouvent pointent vers le site, mais cette balise est avant tout destinée à la navigation principale !
Un site web peut comporter plusieurs systèmes de navigation comme la listes des pages, les catégories ou les tags. Si ces listes sont de bonnes candidates pour la balise <code>nav</code>, il faut garder à l&#8217;esprit le concept d&#8217;<em>Outline</em> : la balise <code>nav</code> se porte mieux accompagnée d&#8217;un niveau de titre, en l&#8217;absence duquel il est préférable d&#8217;utiliser une balise <code>div</code>.</p>

<h3>13. `aside`</h3>

<p><img class="alignleft size-medium wp-image-6594" title="13-aside" src="http://css4design.com/wp-content/uploads/2010/08/13-aside-134x45.png" alt="" width="134" height="45" /></p>

<p>Cet élément regroupe les éléments tangentiellement reliés au contenu. Il peut être utilisé de deux manières : dans une balise <code>article</code>, il pourra regrouper la définition des termes employés, les notes additionnelles, etc. tandis qu&#8217;en dehors, il pourra servir de barre latérale (<em>Sidebar</em>) pour accueillir des éléments de navigation, une liste de liens (<em>Blogroll</em>) ou encore la présentation de l&#8217;auteur.</p>

<h2>14. Appliquer un reset CSS</h2>

<p><img class="alignleft size-medium wp-image-6595" title="14-reset-css" src="http://css4design.com/wp-content/uploads/2010/08/14-reset-css-134x89.png" alt="" width="134" height="89" /></p>

<p>Les navigateurs possèdent chacun une feuille de style par défaut, une sorte de degré zéro du design pour styler les balises HTML : les listes présentent des puces et sont en retrait, les titres ont des tailles relatives à leur niveau hiérarchique, <code>strong</code> est en gras et <code>em</code> en italique&#8230; Le fichier <em>global.css</em> est là pour mettre les navigateurs au diapason. Il est composé d&#8217;une version modifiée du reset CSS d&#8217;Eric Meyer et d&#8217;une partie du fichier <em>typography.css</em> du framework CSS Blueprint.</p>

<p>Le fichier <em>style.css</em> est composé de la redéfinition des styles via la règle @import <em>global.css</em> et des règles CSS spécifiques à la page <em>index.php </em>ainsi qu&#8217;aux autres pages du site, le cas échéant.</p>

<h2>15. Styler les balises `html` et `body`</h2>

<p><pre><code>html {
    background: #380707;
    color: #CBB388;
}
body {
    position: relative;
    width: 960px;
    margin: 6em auto;
    padding: 1.5em 9px;
    border: 1px solid #1F0404;
    background: #590B0B;
}
</code></pre>
La balise <code>html</code> reçoit la couleur pour le fond du <em>Viewport</em> (la partie visible de la fenêtre) et la couleur par défaut pour l&#8217;ensemble des textes. Dans un premier temps, on indique les propriétés qui s&#8217;afficheront dans tous les navigateurs. Le fait de styler la balise <code>body</code> permet d&#8217;économiser la balise <code>div</code> qui sert généralement de <em>Container</em> pour l&#8217;ensemble de la page.</p>

<h2>Les effets CSS3</h2>

<h3>16. Les ombres portées et les dégradés</h3>

<p><pre><code>body {
    /* Degrade <em>/
    background: -moz-linear-gradient(-90deg,#590B0B,#1F0404);
    background: -webkit-gradient(linear, left top, left bottom, from(#590B0B), to(#1F0404));
    /</em> Ombre portee */
    -webkit-box-shadow: #000 0px 0 16px -1px;
    -moz-box-shadow: #000 0px 0 16px -1px;
    box-shadow: #000 0px 0 16px -1px;
}
</code></pre>
Dans un deuxième temps &#8212; on améliore progressivement &#8211;, on ajoute un dégradé linéaire et une ombre portée. Les navigateurs n&#8217;affichant pas ces propriétés utiliseront le <em>background: #590B0B</em> et la propriété <em>border: 1px solid #1F0404</em> de l&#8217;étape précédente.</p>

<h3>17. Textes ombrés</h3>

<p><pre><code>#brand h1 {
    text-shadow: rgba(0,0,0,0.7) 2px 3px,rgba(255,255,255,0.7) 0 -1px;
}
</code></pre>
La propriété <em>text-shadow</em> applique une ombre portée sur les textes. L&#8217;utilisation conjointe de <em>rgba()</em> autorise un effet de transparence pour alléger l&#8217;effet et le fondre dans la page. Ici, deux ombres portées décalées sont appliquées : une vers le haut et l&#8217;autre vers le bas.</p>

<h3>18. Coins arrondis</h3>

<p><pre><code>.roundies {
    -moz-border-radius: 5px; /* Firefox <em>/
    -webkit-border-radius: 5px; /</em>Safari, Chrome <em>/
    -khtml-border-radius: 5px; /</em> Linux <em>/
    border-radius: 5px; /</em> CSS3 */
}
</code></pre>
Dans la mesure où cette propriété est utilisée plusieurs fois avec les mêmes valeurs, les bords arrondis sont regroupés dans une classe CSS. Ici, le rayon pour l&#8217;arrondi est de cinq pixels pour tous les angles. Pour arrondir les angles supérieurs gauche et droit uniquement, il suffit de remplacer 5px par 5px 5px 0 0 et le tour est joué ! N&#8217;hésitez pas à tester plusieurs combinaisons. Il existe un générateur de propriétés CSS3 interactif pour se faciliter la tâche.</p>

<h2>19. Égaliser les colonnes avec Javascript</h2>

<p><pre><code>&lt;script src="column.js"&gt;&lt;/script&gt;
&lt;script&gt;
    var divs = new Array('articles','sidebar-1','sidebar-2');
&lt;/script&gt;
</code></pre>
Dans <a href="http://css4design.com/exemples/html5-css3/">le modèle de page terminée</a> vous avez peut-être remarqué que la barre latérale du milieu s&#8217;allonge en fonction de la hauteur du contenu principal. Cet effet, bien qu&#8217;optionnel pour la compréhension du contenu, n&#8217;en est pas moins intéressant visuellement (le contenu est roi, mais ce n&#8217;est pas une raison pour oublier l&#8217;esthétique !). Pour cela, j&#8217;utilise un script très léger (<em>column.js</em>) qui harmonise les colonnes selon la plus haute parmi celles qui sont passées en paramètre. Ajoutez l&#8217;appel Javascript dans la balise <code>head</code> pour équilibrer les colonnes <code>div#articles</code>, <code>div#sidebar-1</code> et <code>div#sidebar-2</code>.</p>

<h2>Pour aller plus loin</h2>

<ul>
    <li><a href="http://fr.wikipedia.org/wiki/Amélioration_progressive">Amélioration progressive</a></li>
    <li><a href="http://24ways.org/2009/make-your-mockup-in-markup">Make Your Mockup in Markup</a> (Design dans le navigateur)</li>
    <li><a href="http://kuler.adobe.com">Kuler</a> (Adobe)</li>
    <li><a href="http://netbeans.org/index_fr.html">Netbeans</a></li>
    <li><a href="http://notepad-plus.sourceforge.net/fr/site.htm">Notepad++</a></li>
    <li><a href="http://www.mozilla-europe.org/fr/firefox/">Firefox</a></li>
    <li><a href="https://addons.mozilla.org/fr/firefox/addon/1843">Firebug</a></li>
    <li><a href="http://gsnedders.html5.org/outliner/">Outliner</a></li>
    <li><a href="http://meyerweb.com/eric/tools/css/reset/">Reset CSS</a></li>
    <li><a href="http://blueprintcss.org/">Blueprint</a></li>
    <li><a href="http://css3generator.com">CSS3 Generator</a></li>
    <li><a href="http://www.paulbellows.com/getsmart/balance_columns/">CSS Balanced Columns</a></li>
</ul>

<h2>Bon à savoir</h2>

<p>Cet article a paru en mai 2010 dans le Hors-Série n°5 du magazine<a href="http://www.advancedweb.fr"> Web Design</a> consacré à HTML5, CSS3 et jQuery. Lire <a rel="bookmark" href="http://css4design.com/webdesign-magazine-hors-serie-special-html5-css3-jquery">Webdesign Magazine — un Hors-Série n°5 spécial HTML5, CSS3 et jQuery</a> pour plus d&#8217;information. N&#8217;hésitez pas à vous manifester pour ajouter votre grain de sel, en particulier sur sur partie concernant l&#8217;utilisation des balises HTML5 <code>header</code>, <code>hgroup</code>, <code>section</code>, <code>aside</code>, <code>nav</code>, <code>article</code>, <code>footer</code>, etc., d&#8217;autant plus que des changements ont pu survenir dans les <em>Drafts</em> du W3C depuis la rédaction de l&#8217;article.</p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/logo-formateur-html5-css3' title='Super Formateur HTML &amp; CSS bientôt dans la place ?'>Super Formateur HTML &#038; CSS bientôt dans la place ?</a></li><li><a href='http://css4design.com/programme-formation-html-css' title='Quelques notes &#8212; Programme de formation HTML &amp; CSS'>Quelques notes &#8212; Programme de formation HTML &#038; CSS</a></li><li><a href='http://css4design.com/interviews-bruno-bichet-integration-html-css-design' title='Interviews Bruno Bichet, intégration web et css 4 design de 2007 à nos jours'>Interviews Bruno Bichet, intégration web et css 4 design de 2007 à nos jours</a></li><li><a href='http://css4design.com/le-petit-journal-du-web-fevrier-2011' title='Journal &#8212; « Typographie, HTML5 Boilerplate, Reset CSS, Clearfix, CSS3, Photoshop »'>Journal &#8212; « Typographie, HTML5 Boilerplate, Reset CSS, Clearfix, CSS3, Photoshop »</a></li><li><a href='http://css4design.com/html5-please-fallback-polyfill' title='HTML5 Please &#8212; Fallback et Polyfills (ou pas)'>HTML5 Please &#8212; Fallback et Polyfills (ou pas)</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=6574&amp;md5=93dc60d809b175dfcd78fcdcd8ec6b35" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/conception-dans-le-navigateur-avec-html5-css3/feed</wfw:commentRss>
		<slash:comments>75</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=6574&amp;md5=93dc60d809b175dfcd78fcdcd8ec6b35" type="text/html" />
	</item>
		<item>
		<title>Frameworks CSS &#8212; Blueprint vs 960 Grid System</title>
		<link>http://css4design.com/frameworks-css-blueprint-vs-960-grid-system</link>
		<comments>http://css4design.com/frameworks-css-blueprint-vs-960-grid-system#comments</comments>
		<pubDate>Fri, 30 Apr 2010 23:05:42 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[Intégration web]]></category>
		<category><![CDATA[960.gs]]></category>
		<category><![CDATA[Blueprint]]></category>
		<category><![CDATA[Colonnes]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Edito]]></category>
		<category><![CDATA[Framework CSS]]></category>
		<category><![CDATA[Grille]]></category>
		<category><![CDATA[Tutoriels]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=5782</guid>
		<description><![CDATA[Blueprint et 960 Grid System sont deux frameworks CSS que j&#8217;ai utilisés parmi les 25 que j&#8217;ai recensés et survolés dans Choisir un framework CSS. J&#8217;ai ainsi pu me faire une idée plus précise de leurs qualités respectives. Je ne me suis pas attardé sur les aspects typographiques &#8212; même s&#8217;ils ont leur importance : j&#8217;ai préféré faire l&#8217;analyse du système de grille de mise en page (grid.css et 960.css). Pourquoi comparer ces deux frameworks ? Tout simplement parce qu&#8217;ils proposent pratiquement les mêmes «fonctionnalités» avec quelques différences dans la mise en oeuvre. Après une rapide introduction sur Blueprint et [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fframeworks-css-blueprint-vs-960-grid-system">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fframeworks-css-blueprint-vs-960-grid-system&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p><em>Blueprint</em> et <em>960 Grid System</em> sont deux frameworks CSS que j&#8217;ai utilisés parmi les 25 que j&#8217;ai recensés et survolés dans <a href="http://css4design.com/choisir-un-frameworks-css">Choisir un framework CSS</a>. J&#8217;ai ainsi pu me faire une idée plus précise de leurs qualités respectives. Je ne me suis pas attardé sur les aspects typographiques &#8212; même s&#8217;ils ont leur importance : j&#8217;ai préféré faire l&#8217;analyse du système de grille de mise en page (<em>grid.css</em> et <em>960.css</em>). Pourquoi comparer ces deux frameworks ? Tout simplement parce qu&#8217;ils proposent pratiquement les mêmes «fonctionnalités» avec quelques différences dans la mise en oeuvre. Après une rapide introduction sur Blueprint et 960 Grid System, vous trouverez dans la suite de cet article une comparaison et une explication de code.<span id="more-5782"></span></p>

<h2>Introduction</h2>

<p>Les frameworks CSS ont été conçus pour accélérer le processus de prototypage d&#8217;un site web tout en étant utilisables en production. Ils proposent généralement plusieurs fichiers dédiés à une tâche spécifique : reset CSS, gestion de la typographie, système de grille, etc. Les exemples de code proposés dans cet article ont été parfois remaniés par rapport aux originaux pour garder une certaine lisibilité.</p>

<h3>Blueprint &#8212; Raccourcir les temps de développement</h3>

<p>Créé par <a href="http://www.jdclayton.com/">Joshua Clayton</a>, <a href="http://blueprintcss.org/">Blueprint</a> est le plus connu. Il possède l&#8217;éco-système le plus riche : <a href="http://wiki.github.com/joshuaclayton/blueprint-css/">tutoriaux</a>, implémentation dans des thèmes WordPress ou Drupal, <a href="http://toki-woki.net/p/Boks/">générateurs de grilles</a>, etc. Il propose en outre une gestion complète des éléments HTML (notamment les formulaires). A côté du fichier <em>grid.css</em> nous trouvons : <em>reset.css</em>, <em>typography.css</em>, <em>ie.css</em> et <em>forms.css</em>, ainsi que :</p>

<ul>
    <li>Des «utilitaires» comme la mise en place de bordures entre les colonnes,</li>
    <li>Des plugins permettent d&#8217;affiner la gestion des boutons, de la typographie, des icônes de liens, ou encore de modifier le sens de lecture pour les langues qui s&#8217;écrivent de droite à gauche,</li>
    <li>Un modèle de page (<em>template</em>) au format <a href="http://github.com/joshuaclayton/blueprint-css/tree/master/templates/">.psd est disponible</a> pour faciliter la mise en place des maquettes,</li>
    <li><a href="http://github.com/joshuaclayton/blueprint-css">Blueprint est disponible sur Github</a>.</li>
</ul>

<h3>960 Grid System (ou 960.gs) &#8212; Fluidifier le flux de production</h3>

<p>Créé par <a href="http://sonspring.com/">Nathan Smith</a>, <a href="http://960.gs/">960 Grid System</a> propose également un <em>reset.css</em>, une gestion minimale (mais suffisante pour commencer) de la typographie avec <em>text.css</em> et le système de grille avec <em>960.css</em> ou <em>960_24_col.css</em>. Il n&#8217;y a pas de fichier <em>ie.css</em>.</p>

<p>Même si l&#8217;éco-système est un peu moins riche que Blueprint, il propose l&#8217;essentiel :</p>

<ul>
    <li>Fichiers de démonstration,</li>
    <li>Le <a href="http://www.spry-soft.com/grids/">générateur de grille</a> offre le choix entre un design liquide ou fixe (pourcentage ou fixe),</li>
    <li><a href="http://github.com/nathansmith/960-Grid-System/tree/master/sketch_sheets/">Fichier PDF</a> à imprimer pour dessiner des maquettes,</li>
    <li>Nombreux <a href="http://github.com/nathansmith/960-Grid-System/tree/master/templates/">modèles de page</a> pour Expression Engine, Fireworks, Flash, Illustrator, Indesign, Inskape, Omnigraffle, Photoshop et Visio,</li>
    <li><a href="http://github.com/nathansmith/960-Grid-System">960 Grid System est disponible sur Github</a>.</li>
</ul>

<p>Chacun des deux frameworks existe en plusieurs largeurs (950px, 960px) avec un nombre de colonnes allant de 12, 16 ou 24. Toutefois, les nombreux générateurs de grilles vous permettront de déterminer : largeur, nombre de colonnes et gouttière adaptés à vos besoins.</p>

<h2>Fonctionnalités principales des frameworks CSS</h2>

<h3>Largeur et centrage du site web</h3>

<p>Les deux frameworks proposent la même chose :
<pre>.container { width: 942px; margin: 0 auto; } // Blueprint</pre>
<pre>.container_16 { margin-left: auto; margin-right: auto;     width: 960px; } // 960.gs</pre>
<em>960 Grid System</em> se distingue tout de même en permettant de mélanger plusieurs grilles dans un même design. C&#8217;est pour cela que les classes sont préfixées : <code>.container_16 grid_1 {}</code> au cas où vous voudriez utiliser <code>.container_12 grid_1 {}</code> plus loin dans la page. C&#8217;est un détail qui peut présenter un avantage dans certains cas, même si j&#8217;imagine que les deux versions de la grille en 12 et 16 colonnes dans le fichier 960.css sont là pour n&#8217;avoir qu&#8217;un seul fichier à intégrer dans des projets différents.</p>

<p>En ce qui concerne le nombre de colonnes et la largeur des gouttières, je trouve Blueprint un peu radin avec ses 10px là où 960 Grid System offre généreusement le double, soit 20px d&#8217;espace entre les colonnes.</p>

<p>Le seul endroit où les 10px de gouttière sont intéressants, c&#8217;est dans la version en 24 colonnes, ce qui permet d&#8217;utiliser une colonne entière (30px) pour séparer des groupes de colonnes à certains endroits et garder l&#8217;espacement de 10px pour rapprocher des contenus possédant un corps de texte plus petit et/ou répartis sur un plus faible nombre de colonnes.</p>

<p>Dans les exemples qui suivent, j&#8217;ai utilisé la grille que j&#8217;ai conçu lors du <a href="http://css4design.com/css-4-design-nouvelle-charte-graphique-et-redesign-du-logo">redesign de ce blog</a> : 16 colonnes de 42px séparées par une gouttière de 18px pour une largeur totale de 942px.</p>

<h3>Créer des colonnes et des gouttières</h3>

<p>La création des colonnes pour le placement des contenus est l&#8217;élément fondamental d&#8217;un système de grille. Blueprint et 960 Grid System procèdent de manières différentes :</p>

<h4>Blueprint</h4>

<p><pre>.column, .span-1, .span-2, etc. {
    float: left;
    margin-right: 18px;
}
.span-1 { width: 42px; }
.last { margin-right: 0; }</pre></p>

<h4>960 Grid System</h4>

<p><pre>.grid_1,.grid_2, etc. {
    display:inline;
    float: left;
    position: relative;
    margin-left: 9px;
    margin-right: 9px;
}
.container_16 .grid_1 { width:42px; }
.alpha { margin-left: 0; }
.omega { margin-right: 0; }</pre>
Le point commun est l&#8217;utilisation de la propriété <code>float</code> pour placer les colonnes les unes à côté des autres. Pour la gouttière, Blueprint à choisi la simplicité : chaque bloc repousse le suivant avec <code>margin-right: 18px;</code>. En revanche, 960.gs réparti la moitié de la gouttière de part et d&#8217;autre de chaque colonne.</p>

<h5>.last but not .least</h5>

<p>Dans le cas de Blueprint, il faut ajouter une classe pour le dernier bloc afin d&#8217;annuler la marge de 18px avec <code>.last { margin-right: 0; }</code>. Quant à 960.gs, ce n&#8217;est pas la peine puisque les marges sont réparties de chaque côté. Là où ça se corse, c&#8217;est quand on a besoin d&#8217;imbriquer des colonnes.</p>

<p>Chez Blueprint, seule la classe <code>.last</code> est nécessaire pour chaque dernier bloc, tandis que 960.gs nécessite deux classes pour annuler les deux moitiés de marges : <code>.alpha { margin-left: 0; }</code> et <code>.omega { margin-right: 0; }</code>. Ca va sans dire mais mieux en le disant : on a pratiquement toujours besoin d&#8217;imbriquer des colonnes à un moment ou un autre.</p>

<h5>.column ?</h5>

<p>Cette classe peut servir à placer des blocs sans être obligé de leur donner une largeur. J&#8217;avoue m&#8217;en servir assez peu.</p>

<h5>display: inline et position: relative ?</h5>

<p>960 Grid System ajoute deux propriétés. La première (<code>display: inline</code>) sert à circonvenir un bug d&#8217;IE6 qui à tendance à doubler les marges lorsque des éléments flottent du même côté qu&#8217;un <code>margin</code>. <code>position:  relative</code> sert à positionner les blocs indépendamment de leur position dans le code HTML (voir plus bas).</p>

<h3>Créer des colonnes vides avant et/ou après le contenu</h3>

<p>Dans une maquette web, toutes les positions ne sont pas occupées par du contenu et il est bon que le site respire. Pour cela on pourra aérer toutes ces colonnes en créant du vide avant ou après. C&#8217;est là qu&#8217;interviennent les classes <code>.prefix_1</code> et <code>suffix_1</code> de 960.gs ou <code>.prepend-1</code> et <code>append-1</code> de Blueprint. Les deux frameworks ont opté pour un <code>padding-left</code> pour les premiers et un <code>padding-right</code> pour les seconds pour &laquo;&nbsp;remplir&nbsp;&raquo; les blancs afin de conserver une largeur égale à la largeur de votre <code>.container</code>.</p>

<h3>Positionner des blocs à l&#8217;écran indépendamment de leur position dans le code</h3>

<p>La position des éléments dans le code est souvent tributaire de la manière dont on veut les afficher à l&#8217;écran. Si vous désirez modifier la position de votre sidebar par rapport au contenu sans modifier l&#8217;ordre des blocs dans votre code HTML, il suffira d&#8217;utiliser les classes suivantes :</p>

<h4>960 Grid System</h4>

<p><pre>.container_16 .push_1 { left:60px; }
.container_16 .pull_1 { left:-60px; }</pre></p>

<h4>Blueprint</h4>

<p><pre>.push-1 { margin: 0 -60px 1.5em 60px; }
.push-1, .push-2, etc. { float: right; position: relative; }
.pull-1 { margin-left: -60px; }
.pull-1, .pull-1, etc. { float: left; position: relative; }</pre>
Là, tout d&#8217;un coup, on voit les avantages du <code>position: relative</code> de 960.gs vu plus haut qui fait gagner en concision et qui permettra de placer facilement du contenu en <code>position: absolute</code> si besoin. Quand à Blueprint, il est un peu trop verbeux sur ce coup-là à mon goût (les <code>etc.</code> étant bien entendu à remplacer par l&#8217;ensemble des sélecteurs nécessaires selon le nombre de colonnes).</p>

<h3>Rétablir le flux HTML après l&#8217;utilisation des flottants</h3>

<p>Pour rétablir votre flux HTML après les float: left, il existe plusieurs techniques dont j&#8217;ai déjà longuement parler dans les articles <a href="http://css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire">Rétablir le flux après des éléments flottants en CSS sans balise HTML supplémentaire</a> et <a href="http://css4design.com/pour-retablir-le-flux-apres-un-float-vous-etes-plutot-hr-br-ou-div">Pour rétablir le flux après un float, vous êtes plutôt HR, BR ou DIV ?</a></p>

<p>Les deux frameworks proposent un jeu de classes CSS qui devrait vous permettre de voir venir. Pour info, voici la technique utilisée par 960.gs :
<pre>.clear {
    clear: both;
    display: block;
    overflow: hidden;
    visibility: hidden;
    width: 0;
    height: 0;
}
.clearfix:after {
    clear: both;
    content: ' ';
    display: block;
    font-size: 0;
    line-height: 0;
    visibility: hidden;
    width: 0;
    height: 0;
}
/<em> The following zoom:1 rule is specifically for IE6 + IE7.
Move to separate stylesheet if invalid CSS is a problem.</em>/
* html .clearfix,
*:first-child+html .clearfix {
    zoom: 1;
}</pre>
La différence avec Blueprint tient principalement à la classe <code>.clear</code> qui ne contient que le minimum :
<pre>.clear { clear:both; }</pre>
Les deux classes <code>.clear</code> ne s&#8217;utilisent pas de la même façon : celui de 960.gs s&#8217;utilisera de préférence sur une balise <code>hr</code>, <code>br</code>. On pourra également l&#8217;utiliser sur des balises <code>span</code> ou <code>div</code> à condition qu&#8217;elles n&#8217;aient pas vocation à afficher du contenu ; le <code>.clear</code> de Blueprint s&#8217;utilise sur n&#8217;importe quelle balise avec ou sans contenu. Traditionnellement, c&#8217;est celui qu&#8217;on utilise sur un <em>footer</em> qui doit passer sous la barre latérale et le contenu principal.</p>

<h2>Conclusion</h2>

<p>Il y a de bonnes idées dans les deux frameworks. Je ne suis pas fan de la gestion des marges de part et d&#8217;autre des colonnes de 960.gs : je préfére la simplicité de Blueprint. En revanche, je préfère les classes <code>.push</code> et <code>.pull</code> de 960 Grid System qui sont bien plus concises que celles de Blueprint. Pour finir, je trouve que le <code>.clear</code> de 960 Grid System mérite d&#8217;être renommé en <code>.clear-hide</code> pour pouvoir ajouter un <code>clear: both</code> simple mais toujours très pratique. Bref, il faut composer son propre framework CSS en piochant les bonnes idées à droite et à gauche.. <em>Stay tuned!</em></p>

<h2>Autres notes sur les frameworks CSS et le design par grille de mise en page</h2>

<h3><a rel="bookmark" href="http://css4design.com/framework-css-semantique-maquette-dynamique-et-autres-notes">Framework CSS — Sémantique, maquette dynamique et autres notes</a></h3>

<blockquote class="small">Les frameworks CSS ont fait couler beaucoup de pixels : d’un côté, ils proposent une méthode à l’épreuve des balles pour placer les blocs sur sur la page en tenant compte des contraintes <em>cross-browser </em>; de l’autre, ils ajoutent des classes CSS superflues dans le code HTML pour la présentation des contenus, ce qui n’est pas jugé «sémantique» par les farouches défenseurs d’une séparation entre le fond et la forme. <a href="http://css4design.com/framework-css-semantique-maquette-dynamique-et-autres-notes">[...]</a></blockquote>

<h3><a rel="bookmark" href="http://css4design.com/quelques-notes-sur-les-grilles-de-mise-en-page">Quelques notes sur les grilles de mise en page</a></h3>

<blockquote class="small">A mesure que les techniques des langages du web l’ont permis, des designers web talentueux ont travaillé à l’élaboration d’environnement de travail permettant de mettre en place des systèmes de grille adaptés aux contraintes de la création de pages web. Contrairement à l’imprimé où le langage de description de page<em>Postscript</em> d’Abode est un standard, il n’existe pas sur le web de dispositif « officiel » pour créer des colonnes à l’épreuve des différences de rendu entre les agents utilisateurs (les navigateurs). <a href="http://css4design.com/quelques-notes-sur-les-grilles-de-mise-en-page">[...]</a></blockquote>

<h3><a rel="bookmark" href="http://css4design.com/grid-design-quelques-notes-sur-linteret-des-grilles-de-mise-en-page">Grid Design — Quelques notes sur l’intérêt des grilles de mise en page</a></h3>

<blockquote class="small">La popularité des frameworks CSS s’accompagne d’une interrogation légitime sur le bien-fondé d’utiliser une grille pour le placement des éléments du design. Comme je l’ai déjà évoqué dansFramework CSS — mettez vos grilles au pas ! je m’interroge sur l’intérêt de travailler sans grille et je soupçonne leurs détracteurs de <em>jeter le bébé avec l’eau du bain</em>. Le problème vient sans doute du terme <em>grille</em> lui-même. Peu gratifiant, il évoque la prison, la clôture, la répétition, l’uniformité… Bref, tout le contraire des aspirations du créatif qui refuse de brider sa créativité sur l’autel d’une vision mécaniste du processus créatif <a href="http://css4design.com/grid-design-quelques-notes-sur-linteret-des-grilles-de-mise-en-page">[...]</a></blockquote>

<h3><a rel="bookmark" href="http://css4design.com/boks-editeur-visuel-de-grilles-css-pour-blueprint">Boks — Éditeur visuel de grilles CSS pour Blueprint, etc.</a></h3>

<blockquote class="small">Boks est un éditeur de grille CSS développé avec Air (utilisable sur Windows, Mac et Linux) qui fournit une interface visuelle pour travailler avec le framework CSS Blueprint. Les <em>frameworks</em> sont souvent très utiles mais le paramétrage d’un pas de grille personnalisé peut s’avérer fastidieux. Outre la configuration du nombre de colonnes, de la largeur de la page et de la valeur de la gouttière,<em>Boks</em> permet de configurer la grille verticale en déterminant les valeurs des principales balises HTML <a href="http://css4design.com/boks-editeur-visuel-de-grilles-css-pour-blueprint">[...]</a></blockquote>

<h3><a rel="bookmark" href="http://css4design.com/framework-css-semantique-comment-je-vois-les-choses">Framework CSS sémantique ? Comment je vois les choses</a></h3>

<blockquote class="small">Je reviens vers vous sur la question des frameworks CSS suite à la lecture de A Reflexion About Semantic Grids qui défend <em>grosso modo</em> le point de vue selon lequel les frameworks ne sont pas sémantiques et incitent à marcher sur la tête en bousculant le flux de production web. <a href="http://css4design.com/framework-css-semantique-comment-je-vois-les-choses">[...]</a></blockquote>

<h3><a rel="bookmark" href="http://css4design.com/choisir-un-frameworks-css">24 frameworks CSS — Mettez une grille (ou pas) dans votre site web</a></h3>

<blockquote class="small">Il existe de nombreuses raisons pour ne pas utiliser de frameworks CSS lors de la phase de conception ou d’intégration de votre site web : le poids, l’intrusion des classes CSS dans le code HTML qui devient la règle pour placer le moindre bloc de contenu, le fait que de nombreuses règles ne sont pas utilisées, etc. Pour ma part, j’aime bien tester les frameworks qui tombent à portée de souris, et je n’hésite pas à faire des expériences d’hybridation : rien de tel qu’un bout de reset CSS d’Eric Meyer avec la feuille de style de typogridphy, le tout mis en forme avec la robustesse de Blueprint. <a href="http://css4design.com/choisir-un-frameworks-css">[...]</a></blockquote>

<h3><a rel="bookmark" href="http://css4design.com/bic-framework-css-oriente-couleur-et-typographie">BIC, framework CSS orienté couleur et typographie</a></h3>

<blockquote class="small">BIC est un meta framework CSS basé d’une part sur le reset CSS d’Eric Meyer pour la remise aux valeurs par défaut des éléments HTML (<code>clean.css</code>) et le framework 960.gs pour la partie grille de mise en page (<code>layout.css</code>), et d’autre part sur de bonnes idées en ce qui concerne le traitement de la typographie et de la couleur (<code>typography.css</code> et <code>color.css</code>). <a href="http://css4design.com/bic-framework-css-oriente-couleur-et-typographie">[...]</a></blockquote>

<h3><a rel="bookmark" href="http://css4design.com/nombre-d-or-suite-de-fibonacci-et-autres-grilles-de-mise-en-page-pour-le-design-web">Nombre d’or, suite de Fibonacci et autres grilles de mise en page pour le design web</a></h3>

<blockquote class="small">Dans la série des thèmes WordPress minimalistes voilà The Ideal Website 1.1proposé par Information Architect (iA). L’équilibre graphique de ce thème provient essentiellement de l’application de la suite de Fibonacci — qui fournit des rapports très proches du nombre d’or — aux différentes proportions des éléments du design. Le résultat est ce que j’ai vu de mieux en matière de mise en page pour un blog. <a href="http://css4design.com/nombre-d-or-suite-de-fibonacci-et-autres-grilles-de-mise-en-page-pour-le-design-web">[...]</a></blockquote>

<h3><a rel="bookmark" href="http://css4design.com/frameworks-css-reset-css-design-from-scratch">Frameworks CSS + Reset CSS : design from scratch</a></h3>

<blockquote class="small">L’article fait ainsi le point sur la notion de framework CSS, ses avantages et ses inconvénients, décrit les frameworks les plus populaires et termine par une série de liens commentés à propos des Reset CSS et des styles de base. <a href="http://css4design.com/frameworks-css-reset-css-design-from-scratch">[...]</a></blockquote>

<h3><a rel="bookmark" href="http://css4design.com/framework-css-mettez-vos-grilles-au-pas">Framework CSS — mettez vos grilles au pas !</a></h3>

<blockquote class="small"><em>Grosso modo</em>, tout le monde reconnait que <em>oui, les frameworks c’est de la balle</em> mais que <em>non, ça n’est pas toujours possible</em> car les éléments du design, du <em>.psd</em>, de la charte graphique, etc. n’entrent pas forcément dans une grille horizontale. <a href="http://css4design.com/framework-css-mettez-vos-grilles-au-pas">[...]</a></blockquote>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/frameworks-css-fusion-blueprint-960-gs-the-simpler-grid' title='Frameworks CSS &#8212; Fusion entre « Blueprint », « 960 Grid System » et « The Simpler Grid »'>Frameworks CSS &#8212; Fusion entre « Blueprint », « 960 Grid System » et « The Simpler Grid »</a></li><li><a href='http://css4design.com/css-selecteur-frere-adjacent' title='Sélecteur CSS de frère adjacent (Dirty Grids Done Dirt Cheap)'>Sélecteur CSS de frère adjacent (Dirty Grids Done Dirt Cheap)</a></li><li><a href='http://css4design.com/grille-typographique-nombre-d-or' title='Calculer une grille de mise en page « typo » avec le nombre d&#8217;Or'>Calculer une grille de mise en page « typo » avec le nombre d&#8217;Or</a></li><li><a href='http://css4design.com/framework-css-semantique-maquette-dynamique-et-autres-notes' title='Framework CSS &#8212; Sémantique, maquette dynamique et autres notes'>Framework CSS &#8212; Sémantique, maquette dynamique et autres notes</a></li><li><a href='http://css4design.com/choisir-un-frameworks-css' title='36 frameworks CSS &#8212; Mettez une grille dans votre design'>36 frameworks CSS &#8212; Mettez une grille dans votre design</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=5782&amp;md5=a3b0a119e4f75bbdbba35baa0464c41d" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/frameworks-css-blueprint-vs-960-grid-system/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=5782&amp;md5=a3b0a119e4f75bbdbba35baa0464c41d" type="text/html" />
	</item>
		<item>
		<title>Une Feuille de style et des « hacks CSS » pour cibler IE6, IE7 ou IE8</title>
		<link>http://css4design.com/une-feuille-de-style-et-des-hacks-css-pour-cibler-ie6-ie7-ou-ie8</link>
		<comments>http://css4design.com/une-feuille-de-style-et-des-hacks-css-pour-cibler-ie6-ie7-ou-ie8#comments</comments>
		<pubDate>Sun, 14 Mar 2010 20:38:27 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[Intégration web]]></category>
		<category><![CDATA[Navigateurs]]></category>
		<category><![CDATA[Commentaires conditionnels]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Edito]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Hacks CSS]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Sélecteur]]></category>
		<category><![CDATA[Tutoriels]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=5631</guid>
		<description><![CDATA[Les hacks CSS sont une utilisation peu conventionnelle des sélecteurs CSS pour s&#8217;adresser à un ou plusieurs navigateurs quand on doit servir une propriété ou une valeur CSS spécifique à un ou plusieurs navigateurs. Si IE6 fait la fine bouche devant sa soupe de balises, il peut être intéressant de lui servir le même plat mais dans une assiette différente (la comparaison est bancale). Ces hacks s&#8217;utilisent souvent pour cibler des versions spécifiques d&#8217;Internet Explorer (généralement IE6 et IE7). Toutefois, il en existe pour Firefox, Opéra, Safari, iPhone, etc. Par ailleurs, je n&#8217;utilise pas ces hacks CSS dans ma feuille [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fune-feuille-de-style-et-des-hacks-css-pour-cibler-ie6-ie7-ou-ie8">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fune-feuille-de-style-et-des-hacks-css-pour-cibler-ie6-ie7-ou-ie8&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Les <em>hacks CSS</em> sont une utilisation peu conventionnelle des sélecteurs CSS pour s&#8217;adresser à un ou plusieurs navigateurs quand on doit servir une propriété ou une valeur CSS spécifique à un ou plusieurs navigateurs. Si IE6 fait la fine bouche devant sa soupe de balises, il peut être intéressant de lui servir le même plat mais dans une assiette différente (la comparaison est bancale). Ces <em>hacks</em> s&#8217;utilisent souvent pour cibler des versions spécifiques d&#8217;Internet Explorer (généralement IE6 et IE7). Toutefois, il en existe pour Firefox, Opéra, Safari, iPhone, etc. Par ailleurs, je n&#8217;utilise pas ces <em>hacks CSS</em> dans ma feuille de style principale, mais uniquement dans une CSS réservée à IE via les commentaires conditionnels.<span id="more-5631"></span></p>

<h2>Comment utiliser les hacks CSS ?</h2>

<p>Dans l&#8217;article <a href="http://css4design.com/un-seul-fichier-css-pour-cibler-ie6-et-ie7-avec-les-commentaires-conditionnels">Un seul fichier CSS pour cibler IE6 et IE7 avec les commentaires conditionnels</a>, j&#8217;utilisais un <a href="http://css4design.com/commentaires-conditionnels-d-internet-explorer-vs-hacks-css">commentaire conditionnel</a> pour cibler les versions inférieures ou égales à IE7. Toutefois, IE9 est sur les rails et il est temps de le prendre en compte, d&#8217;autant plus que<a href="http://www.zdnet.fr/actualites/internet/0,39020774,39710877,00.htm"> Microsoft veut en faire un champion</a> des standards du web en terme de rendu CSS3 et HTML5.</p>

<p>L&#8217;idée derrière la feuille de style unique pour IE est de ne pas augmenter inutilement le nombre de requêtes pour charger une CSS pour chaque version d&#8217;Internet Explorer. En attendant de voir ce que nous réserve IE9, j&#8217;ai décidé de cibler les versions inférieures ou égales à IE8 en espérant que IE9 tienne ses promesses et en attendant de voir s&#8217;il va continuer à gérer les commentaires conditionnels (auquel cas nous pourrions cibler les version inférieures à IE9).</p>

<h3>Cibler les versions &lt;= à IE8</h3>

<p><pre>&lt;!--[if lte IE 8]&gt;
    &lt;link rel="stylesheet" href="css/ie.css" type="text/css" media="screen,projection" /&gt;
&lt;![endif]--&gt;</pre>
De cette manière, les règles CSS placées dans <em>ie.css</em> s&#8217;adressent uniquement à Internet Explorer ; les autres navigateurs considèrent ces commentaires conditionnels comme de simples commentaires HTML. Ça va sans dire mais encore mieux en le disant : les déclarations situées dans <em>style.css</em> s&#8217;appliquent <strong>aussi</strong> à Internet Explorer ce qui implique que l&#8217;appel à  <em>ie.css</em> doit se situer <strong>après</strong> <em>style.css</em> pour surcharger les déclarations qui posent problème.</p>

<p class="small">Note : il existe une forme de commentaires conditionnels qui permet de cibler tous les navigateurs sauf Internet Explorer : <code>&lt;!--[if !IE]&gt; &lt;!--&gt; IE Windows ne lira pas ça &lt;!--&gt; &lt;![endif]--&gt;</code></p>

<p>Dans cette feuille de style <em>ie.css</em>, si IE6 (et seulement lui) ne se comporte pas comme prévu devant <code>#header { margin-top: 0; }</code>, il suffira d&#8217;y ajouter <code><strong>* html</strong> #header { margin-top: -5px; }</code> pour régler le problème. Si le problème concerne IE6 et IE7 et que IE8 se comporte de manière standard (c&#8217;est à dire que la règle située dans <em>style.css</em> suffit), il faudra utiliser les hacks de la manière suivante :
<pre>* html #search .submit { margin-top: -10px; } // IE6
*+html #search .submit { margin-top: -14px; } // IE7</pre>
En revanche, si vous avez également besoin d&#8217;une valeur différente pour IE8, il faudra prendre soin d&#8217;ajouter la règle CSS <code>#search .submit { margin-top: -7px; }</code> au-dessus des deux autres, soit :
<pre>&#35;search .submit { margin-top: -7px; }         //Toutes les versions d'IE
* html #search .submit { margin-top: -10px; } // Surcharge pour IE6 seulement
*+html #search .submit { margin-top: -14px; } // Surcharge pour IE7 seulement</pre></p>

<h2>Mettez vos frameworks CSS à jour</h2>

<p>Les <a href="http://css4design.com/choisir-un-frameworks-css">frameworks CSS</a> proposent souvent une feuille de style spécifique à Internet Explorer. Le plus souvent, le <em>hack</em> utilisé pour cibler IE7 est de la forme <code>html&gt;body</code> qui n&#8217;est pas pris en charge par IE6. Or, si l&#8217;on cible les versions &lt;= à IE8, ce <em>hack</em> est obsolète puisqu&#8217;il est compris par IE8. Pour y remédier, j&#8217;utilise <code>*+html</code> qui n&#8217;est compris que par IE7.</p>

<p>Ainsi, dans le fichier <em>ie.css</em> de <a href="http://www.blueprintcss.org/">Blueprint</a>, il sera nécessaire de modifier la ligne <code>html&gt;body p code { <em>white-space: normal; }</code> par <code></em>+html p code { *white-space: normal; }</code> pour éviter que IE8 ne s&#8217;emmêle les pinceaux ;)</p>

<h2>24 hacks CSS à consommer avec modération</h2>

<p>Cette liste de 22 contournements a été compilée par <a href="http://paulirish.com/2009/browser-specific-css-hacks/">Paul Irish</a>. Elle présente le double intérêt de la quasi-exhausitivité et de distinguer les <em>hacks</em> jouant sur les sélecteurs de ceux qui concernent les attributs.</p>

<h2>Hacks sur les sélecteurs</h2>

<ol>
    <li>
<h3>IE6 et inférieurs</h3>
<pre>* html .test  { color: red }</pre>
</li>
    <li>
<h3>IE7</h3>
<pre>*:first-child+html .test { color: red }</pre>
</li>
    <li>
<h3>IE7, Firefox, Safari, Opera</h3>
<pre>html&gt;body .test { color: red }</pre>
</li>
    <li>
<h3>IE8, Firefox, Safari, Opera <small>(Tout sauf IE 6,7)</small></h3>
<pre>html&gt;/**/body .test { color: red }</pre>
</li>
    <li>
<h3>Opera 9.27 et inférieurs, Safari 2</h3>
<pre>html:first-child .test { color: red }</pre>
</li>
    <li>
<h3>Safari 2 &#8212; 3</h3>
<pre>html[xmlns*=""] body:last-child .test { color: red }</pre>
</li>
    <li>
<h3>safari 3+, Chrome 1+, Opera9+, Firefox 3.5+</h3>
<pre>body:nth-of-type(1) .test { color: red }</pre>
</li>
    <li>
<h3>Safari 3+, Chrome 1+, Opera9+, Firefox 3.5+</h3>
<pre>body:first-of-type .test { color: red }</pre>
</li>
    <li>
<h3>Safaris 3+, Chrome1+</h3>
<pre>   @media screen and (-webkit-min-device-pixel-ratio:0) {
            .test  { color: red }
    }</pre>
</li>
    <li>
<h3>iPhone / Webkit mobile</h3>
<pre>   @media screen and (max-device-width: 480px) {
            .test { color: red }
    }</pre>
</li>
    <li>
<h3>Safari 2 &#8212; 3.1</h3>
<pre>html[xmlns*=""]:root .test  { color: red }</pre>
</li>
    <li>
<h3>Safari 2 &#8212; 3.1, Opera 9.25</h3>
<pre>*|html[xmlns*=""] .test { color: red }</pre>
</li>
    <li>
<h3>Safari &#8212; Chrome</h3>
<pre>.test { [color: #000000; }</pre>
</li>
    <li>
<h3>Tout sauf IE6 &#8212; 8</h3>
<pre>:root *&gt; .test { color: red  }</pre>
</li>
    <li>
<h3>IE7</h3>
<pre>*+html .test { color: red }</pre>
</li>
    <li>
<h3>Uniquement Firefox. 1+</h3>
<pre>.test,  x:-moz-any-link  { color: red }</pre>
</li>
    <li>
<h3>Firefox 3.0+</h3>
<pre>.test,  x:-moz-any-link, x:default  { color: red }</pre>
</li>
</ol>

<h2>Hacks sur les attributs</h2>

<ol>
    <li>
<h3>IE6</h3>
<pre>.test { _color: blue }</pre>
</li>
    <li>
<h3>IE6, IE7</h3>
<pre>.test { *color: blue /* or #color: blue */ }</pre>
</li>
    <li>
<h3>Tout sauf IE6</h3>
<pre>.test { color/**/: blue }</pre>
</li>
    <li>
<h3>IE6, IE7, IE8</h3>
<pre>.test { color: blue\9 }</pre>
</li>
    <li>
<h3>IE7, IE8</h3>
<pre>.test { color/*\**/: blue\9 }</pre>
</li>
    <li>
<h3>IE6, IE7 &#8212; fonctionne comme !important</h3>
<pre>.test { color: blue !ie } /* la chaine après <code>!</code> peut être n'importe quoi */</pre>
</li>
        <li>
<h3>IE8</h3>
<pre>.test { color: #0000FF\0; }</pre>
</li>
</ol>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/livre-css-avancees-vers-html5-et-css3' title='Notes de lecture &#8212; Livre CSS avancées, vers HTML5 et CSS3'>Notes de lecture &#8212; Livre CSS avancées, vers HTML5 et CSS3</a></li><li><a href='http://css4design.com/le-petit-journal-de-l-integrateur-web-html5-et-css' title='HTML5 et CSS pour l&#039;intégrateur web'>HTML5 et CSS pour l&#039;intégrateur web</a></li><li><a href='http://css4design.com/un-seul-fichier-css-pour-cibler-ie6-et-ie7-avec-les-commentaires-conditionnels' title='Un seul fichier CSS pour cibler IE6 et IE7 avec les commentaires conditionnels'>Un seul fichier CSS pour cibler IE6 et IE7 avec les commentaires conditionnels</a></li><li><a href='http://css4design.com/tester-un-site-dans-plusieurs-navigateurs-mais-surtout-dans-ie6-avec-vista' title='Tester un site dans plusieurs navigateurs (mais surtout dans IE6 avec Vista)'>Tester un site dans plusieurs navigateurs (mais surtout dans IE6 avec Vista)</a></li><li><a href='http://css4design.com/le-petit-journal-du-web-janvier-2011-typographie-css-photoshop-et-developpement-web' title='Le petit journal du Web &#8212; Janvier 2011 (Typographie, CSS, Photoshop et développement web)'>Le petit journal du Web &#8212; Janvier 2011 (Typographie, CSS, Photoshop et développement web)</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=5631&amp;md5=c7b71daedcbf03b36eb927c7a79a65e3" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/une-feuille-de-style-et-des-hacks-css-pour-cibler-ie6-ie7-ou-ie8/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=5631&amp;md5=c7b71daedcbf03b36eb927c7a79a65e3" type="text/html" />
	</item>
		<item>
		<title>Installer Drupal (ou les tribulations d&#8217;un WordPressien en Drupalie)</title>
		<link>http://css4design.com/installer-drupal</link>
		<comments>http://css4design.com/installer-drupal#comments</comments>
		<pubDate>Wed, 20 Jan 2010 17:54:03 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Editeur HTML]]></category>
		<category><![CDATA[Edito]]></category>
		<category><![CDATA[Images]]></category>
		<category><![CDATA[Système de gestion de contenu (CMS)]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WYSIWYG]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=4858</guid>
		<description><![CDATA[Drupal est un outil hors pair qui permet à ses utilisateurs de créer rapidement des sites internet complexes et sur-mesure et répondre ainsi aux cahiers des charges des clients les plus exigeants. Dans le monde des CMS Drupal fait partie des poids lourds. Sa réputation d&#8217;usine à gaz peut freiner les plus motivés, d&#8217;autant plus que son installation réserve parfois des surprises. Si vous avez l&#8217;habitude d&#8217;utiliser WordPress, vous risquez de ne plus retrouver votre confort habituel. Chez Drupal tout est affaire de modules et il faut en installer quelques-uns pour se sentir comme à la maison.  Ma connaissance de [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Finstaller-drupal">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Finstaller-drupal&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p><q cite="http://drupalfr.org/apropos"><a href="http://drupal.org/">Drupal</a> est un outil hors pair qui permet à ses utilisateurs de créer rapidement des sites internet complexes et sur-mesure et répondre ainsi aux cahiers des charges des clients les plus exigeants.</q> Dans le monde des CMS Drupal fait partie des poids lourds. Sa réputation d&#8217;usine à gaz peut freiner les plus motivés, d&#8217;autant plus que son installation réserve parfois des surprises. Si vous avez l&#8217;habitude d&#8217;utiliser WordPress, vous risquez de ne plus retrouver votre confort habituel. Chez Drupal tout est affaire de modules et il faut en installer quelques-uns pour se sentir comme à la maison. <span id="more-4858"></span></p>

<p>Ma connaissance de Drupal est proche de zéro : j&#8217;ai abordé cet article sous l&#8217;angle de celui qui a l&#8217;habitude d&#8217;utiliser WordPress au quotidien. <strong>Il ne s&#8217;agit pas d&#8217;un comparatif entre Drupal et WordPress</strong> : les deux CMS présentent des différences dans leur mode de fonctionnement dont vous aurez un bon aperçu en lisant l&#8217;excellent billet <a href="http://www.lumieredelune.com/encrelune/logique-wordpress-drupal,2010,01">Drupal et WordPress : deux logiques proches, mais différentes</a> de <a href="http://www.lumieredelune.com/encrelune/">Marie-Aude</a>.</p>

<h2>Amadouer Drupal</h2>

<p>La première chose à faire est de télécharger la <a href="http://drupal.org/">dernière version stable de Drupal</a> et de décompresser l&#8217;archive pour la copier sur votre serveur. Pour information, j&#8217;utilise un hébergement mutualisé chez <a href="http://www.phpnet.org/">PHPNET</a> qui semble posséder les pré-requis nécessaires, ce qui peut ne pas être le cas partout.</p>

<p>Saisissez l&#8217;adresse de votre site web et suivez les étapes de l&#8217;installateur automatique. En ce qui me concerne, l&#8217;assistant s&#8217;est arrêté à l&#8217;étape de la saisie des informations permettant la connexion à la base de données MySQL. A ce niveau, deux problèmes au moins sont susceptibles de survenir (et sont comme par hasard survenus) :</p>

<ol>
    <li>Un caractère spécial dans le mot de passe peut empêcher la connexion à la base de données. Méfiez-vous donc des caractères : <code>/ @ + ( ) ? = &amp;</code> car vous risquez de ne pas aller très loin. Des caractères d&#8217;échappement sont prévus, mais sait-on jamais.</li>
    <li><p>Il semble que l&#8217;installation automatique soit comme les antiobiotiques et qu&#8217;il soit nécessaire d&#8217;écrire en dur les éléments pour la connexion avec la base de données : nom de la base, nom d&#8217;utilisateur, mot de passe et nom du serveur dans le fichier <em>/sites/default/default.settings.php</em> qu&#8217;il faudra renommer en <em>settings.php</em>. Saisissez à nouveau ces informations dans l&#8217;assistant pour passer à l&#8217;étape suivante.</p>
        <p class="small"><strong>Notes :</strong> Il ne faut pas simplement renommer le fichier. Il faut créer un fichier <em>settings.php</em> à côté du dossier <em>default.settings.php</em> soit en dupliquant et renommant ce dernier, soit en créant un fichier vide nommé <em>settings.php</em></p>
</li>
</ol>

<p>Lire <a href="http://drupalfr.org/document/installation_de_drupal">Installation de Drupal</a>.</p>

<h2>Drupal, au pied !</h2>

<p>Une fois que vous aurez posé la souris dans le menu <em>Administer, </em>la palanquée d&#8217;options et de paramètres disponibles vous fera prendre  conscience du potentiel de Drupal. N&#8217;ayez pas peur et suivez le guide pour avoir un Drupal fonctionnel à votre service plutôt que l&#8217;inverse !</p>

<p>Vous aurez besoin d&#8217;installer de <a href="http://drupal.org/project/modules">nombreux modules</a> parfois dépendants d&#8217;autres modules. C&#8217;est le prix à payer pour&#8230; la modularité. Et oui, la force de Drupal est d&#8217;être entièrement composé de modules ; les éléments de base du moteur ne sont finalement que des modules obligatoires.</p>

<p>L&#8217;installation de ces modules s&#8217;effectue en suivant généralement les étapes suivantes :</p>

<ul>
    <li>Téléchargez et décompressez le module,</li>
    <li>Faites glisser le dossier du module vers le dossier <em>modules</em> de votre installation,</li>
    <li>Activez le modules et ses sous-modules éventuels dans le dossier <em>Administrer › Construction du site › Modules</em>,</li>
    <li>Personnalisez les paramètres dans <em>Administrer › Configuration du site › Votre_Module</em>.</li>
</ul>

<p class="small">Notes : Les pages permettant d&#8217;installer les modules sont assez peu <em>friendly</em>. Toutefois, les explications sont concises et claires ; les dépendances entre les modules sont bien indiquées et sont d&#8217;ailleurs rappelées dans la page permettant d&#8217;activer les modules. Les dépendances peuvent même s&#8217;activer automatiquement lorsqu&#8217;elles se trouvent toutes dans le dossier <em>modules</em>. C&#8217;est assez bien fait.</p>

<h3>Des URLs propres</h3>

<p>Tout se passe bien ? Ok, passons à la suite. Une des premières choses que je fais lorsque j&#8217;installe un CMS, c&#8217;est de jeter un oeil sur les paramètres permettant d&#8217;avoir des URL&#8217;s propres (sans le point d&#8217;interrogation). Dans Drupal, ça se passe dans <em>Administer <em>›</em> Site configuration <em>›</em> Clean URLs</em>.</p>

<p>La case <em>Disabled</em> est cochée et si tout va bien vous pourrez cliquer sur <em>Enabled</em>. Si ce n&#8217;est pas le cas, ouvrez le fichier <em>.htaccess</em> à la racine de votre installation et supprimez le commentaire <code>#</code> devant la ligne <code># RewriteBase /</code> (ligne 107 vers la fin du document). L&#8217;adresse <em>http://votresite.fr/?q=admin/settings/clean-urls</em> se transforme alors en <em>http://votresite.fr/admin/settings/clean-urls</em>.</p>

<h3>Drupal en français</h3>

<p>Pour avoir Drupal en français, rendez-vous sur la <a href="http://drupal.org/project/Translations">page de téléchargement</a> et choisissez votre traduction. Contrairement à WordPress où un seul fichier est nécessaire pour la traduction de l&#8217;interface d&#8217;administration, vous verrez qu&#8217;il faut ajouter pas moins de 44 fichiers de traduction répartis dans 77 dossiers.</p>

<p>Heureusement, il suffit de faire glisser les dossiers décompressés aux emplacements adéquats sur votre serveur pour qu&#8217;ils fusionnent avec ceux qui sont déjà là (si vous travaillez sur <em>Windows</em>, prenez garde de <strong>ne pas remplacer les dossiers</strong>).</p>

<p>Assurez-vous ensuite que les modules <em>Locales</em> et <em>Content Translation</em> sont activés dans <em>Administer </em><em>›</em><em> Modules</em>. Allez ensuite dans <em>Administer <em>› </em>Site Configuration <em>›</em> Languages</em> et cliquez sur l&#8217;onglet <em>Add Language</em> et choisissez <em>French</em> dans le menu déroulant. Validez et sélectionnez <em>French</em> par défaut. Enregistrez la configuration et voilà ! Drupal est en français.</p>

<p>Lire <a href="http://biboo.net/traduire-en-francais-drupal-6">Drupal 6 : comment installer la langue française</a>.</p>

<h3>Un éditeur WYSIWYG</h3>

<p>Une fois Drupal en français, il est temps de passer à la rédaction des contenus. Dans Drupal, l&#8217;éditeur pour rédiger les pages ou les billets est livré en deux parfums :</p>

<ol>
    <li><strong>Filtered HTML</strong> :  les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement. Les tags HTML autorisés sont limités à  &lt;a&gt;, &lt;em&gt;, &lt;strong&gt;, &lt;cite&gt;, &lt;code&gt;, &lt;ul&gt;, &lt;ol&gt;, &lt;li&gt;, &lt;dl&gt;, &lt;dt&gt;, &lt;dd&gt;. Les lignes et les paragraphes vont à la ligne automatiquement.</li>
    <li><strong>Full HTML :</strong> les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement. Les lignes et les paragraphes vont à la ligne automatiquement. Tous les tags HTML sont autorisés.</li>
</ol>

<p class="small">Notes : vous verrez plus tard qu&#8217;il est possible d&#8217;associer un éditeur selon les droits accordés aux utilisateurs de Drupal. Vous pourrez ainsi réserver la version <em>Full HTML</em> de l&#8217;éditeur aux administrateurs du site et la version <em>Filtered HTML</em> aux autres contributeurs. Point positif, le champs d&#8217;édition peut se scinder en deux pour créer un résumé ou un chapô.</p>

<h4>Installer un nouvel éditeur visuel</h4>

<p>Malgré tout, cet éditeur est un peu rustique comparé à ce que l&#8217;on a l&#8217;habitude de voir sur WordPress. Pour avoir un éditeur digne de ce nom, il faut installer <a href="http://drupal.org/project/wysiwyg">WYSIWYG API</a> qui gère l&#8217;installation d&#8217;autres éditeurs comme <em>TinyMCE</em> ou <em>FCKEditor</em>, bien plus conviviaux. Et si vous en profitiez pour <a href="http://css4design.com/bbcomposer-editeur-html-a-consommer-sur-place-ou-a-emporter">utiliser BBComposer</a> ?</p>

<p class="small">Notes : arrivés là, vous avez certainement eu l&#8217;occasion de voir la richesse des options disponibles dans Drupal. L&#8217;édition des articles ne fait pas exception et on commence déjà à voir des différences significatives avec WordPress. Notamment en ce qui concerne les paramètres du menu qui permettent de donner un titre plus court pour faire apparaitre l&#8217;article dans un menu. Il est même possible de choisir le poids de l&#8217;entrée du menu pour préciser son emplacement.</p>

<p>Dès que le module <em>wysiwyg</em> est décompressé, faites-le glisser dans le répertoire <em>modules</em> de votre installation Drupal et activez-le dans <em>Administrer <em>›</em> Construction du site <em>›</em> Modules <em>›</em> User Interface <em>›</em> Wysiwyg</em>.</p>

<p>Cliquez ensuite dans <em>Administrer</em> et sur <em>Par module</em> (à côté de <em>Par tâche</em>) pour installer ou choisir un éditeur visuel à votre convenance. Vous avez le choix entre 9 éditeurs côté client :</p>

<ol>
    <li><a href="http://code.google.com/p/jwysiwyg/">jWYSIWYG</a></li>
    <li><a href="http://www.fckeditor.net/">FCKeditor</a></li>
    <li><a href="http://markitup.jaysalvat.com/">markItUp</a></li>
    <li><a href="http://nicedit.com/">NicEdit</a></li>
    <li><a href="http://www.openwebware.com/">openWYSIWYG</a></li>
    <li><a href="http://tinymce.moxiecode.com/">TinyMCE</a></li>
    <li><a href="http://www.unverse.net/">Whizzywig</a></li>
    <li><a href="http://www.wymeditor.org/">WYMeditor</a></li>
    <li><a href="http://developer.yahoo.com/yui/editor/">YUI editor</a></li>
</ol>

<p class="small">Notes : si vous installez <em>FCKeditor</em>, faites attention à ne pas télécharger la nouvelle version <em>CKEditor 3.1,</em> qui ne semble pas encore compatible avec le module <em>wysiwyg</em>. Descendez plus bas dans la page et choisissez <em>FCKeditor 2.6.5.</em> Ou dirigez-vous vers <em>TinyMCE</em>. Notez toutefois que si l&#8217;éditeur <a href="http://ckeditor.com/">CKeditor</a> n&#8217;est pas pris en charge directement par le module <em>Wysiwyg</em>, il est tout de même disponible comme <a href="http://drupal.org/project/ckeditor">module indépendant</a>.</p>

<p class="small">J&#8217;ai voulu installer <em>openWYSIWYG</em>, mais la version de démonstration m&#8217;indique que mon navigateur (Google Chrome) n&#8217;est pas pris en charge. C&#8217;est balot qu&#8217;un projet <em>open source</em> ne prenne pas en charge un produit basé lui aussi sur de l&#8217;<em>open source</em> :/</p>

<p>Une fois l&#8217;archive décompressée, créez le répertoire <em>/sites/all/libraries</em> et copiez le dossier <em>tinymce</em>. Lorsque vous cliquerez sur <em>Administrer <em>› </em>Configuration du site <em>›</em> Wysiwyg</em>, vous aurez la possibilité d&#8217;associer <em>TinyMCE</em> au format d&#8217;entrée <em>Filtered HTML</em> ou <em>Full HTML</em> (ou les deux). Comme vous le devinez sans doute, il est bien entendu possible d&#8217;associer un éditeur visuel différent par <em>format d&#8217;entrée</em>. Il suffit de répéter les étapes précédentes pour comparer <em>TinyMCE</em> avec <em>FCKeditor,</em> par exemple, qui dispose d&#8217;une interface en français, ce qui n&#8217;est pas négligeableNotez que si l&#8217;éditeur CKeditor (nouvelle version de FCKeditor) n&#8217;est pas pris en charge directement par le module Wysiwyg, il est tout de même disponible en tant que module indépendant..</p>

<p><strong>Modifier les préférences de tinyMCE ou FCKeditor</strong></p>

<p>Le point fort de Drupal dans sa gestion des éditeurs wysiwyg, c&#8217;est sa capacité de pouvoir associer un éditeur différent selon les contributeurs en fonction de leurs besoins ou des restrictions que vous voudrez leur imposer, ou de modifier les préférences d&#8217;un même éditeur visuel selon les contributeurs pour affiner encore plus la gestion des droits.</p>

<p>Pour cela, retournez dans le module <em>wysiwyg</em> et modifiez le <em>format d&#8217;entrée</em> pour accéder aux options <em>Paramètrage de base</em>, <em>Boutons et plugins</em>, <em>Apparence de l&#8217;éditeur</em>, <em>Nettoyage et sortie</em> et <em>CSS</em>. Notez que seuls les boutons cochés seront activés au final ; ils ne s&#8217;ajoutent pas à ceux qui sont définis par défaut, mais constituent en quelque sorte un nouveau <em>package</em>. En gros, il manque une case <em>Tout sélectionner</em> ;)</p>

<p>Voir <a href="http://learnbythedrop.com/drop/144">Install FCKeditor Using WYSIWYG API</a>.</p>

<h3>Insérer des images dans Drupal, mission impossible ?</h3>

<p>Quand on a l&#8217;habitude de WordPress, il semble tout naturel de télécharger une image depuis le web ou à partir de son poste de travail pour l&#8217;afficher où bon nous semble dans un article. C&#8217;est encore plus vrai depuis WordPress 2.9 qui autorise quelques traitements sympathiques sur les images.</p>

<p>Dans Drupal, c&#8217;est comment dire&#8230; Bref, c&#8217;est pas évident. La documentation précise bien qu&#8217;il est possible d&#8217;<a href="http://drupalfr.org/document/inserer_une_image_dans_un_contenu">insérer une image dans un contenu</a> via FTP puis d&#8217;utiliser la balise HTML <code>img</code>, mais quelque chose me dit que ça ne va pas plaire à tout le monde. Heureusement, il existe plusieurs solutions pour y remédier (ou pas).</p>

<h4>Module Image (Bof)</h4>

<p>Le pitch : <a href="http://drupal.org/project/image">le module Image</a> permet aux utilisateurs ayant les permissions adéquates d&#8217;<em>uploader</em> des images dans Drupal, de les afficher individuellement en page d&#8217;accueil, de les insérer dans un article ou encore de les grouper dans une galerie et de créer automatiquement des miniatures de différentes tailles.</p>

<p>Faites glisser <em>Image</em> dans le dossier <em>modules</em> de votre installation et activez-le dans <em>Administrer <em>›</em> Construction du site <em>›</em> Modules</em> puis <em>Image</em>. Vous remarquerez à cette occasion que Drupal installe automatiquement les fichiers de langue pour les modules qui en possèdent. Frambi-framboise sur le gâteau, le module <em>Image</em> crée pour nous les répertoires <em>/sites/default/files/images</em> et <em>/sites/default/files/images/temp</em>.</p>

<p>Malheureusement, tout ne fonctionne pas comme sur des roulettes : le tableau de bord indique que <em>Image Import</em> et <em>ImageMagick advanced options</em> ne sont pas configurés correctement. Pour le premier, le message précise que le répertoire d&#8217;import n&#8217;a pas été configuré et pour le second, qu&#8217;il n&#8217;a pas été installé correctement.</p>

<p>Pour spécifier le répertoire d&#8217;import, je vais donc dans <em>Administrer › Configuration du site › Images</em> et dans le doute j&#8217;indique<em>/home/temporaire/upload</em>. Pour <em>ImageMagick</em> je me contente de le désactiver dans <em>Administrer › Configuration du site › Boite à outils image.</em> En attendant de voir si tout est OK au niveau de mon hébergement je me contenterai de la librairie GD.</p>

<p>Bref, après toutes ces péripéties j&#8217;ai toujours bien envie d&#8217;afficher une image. Or, il semble que ce module ne fait qu&#8217;ajouter un type de contenu <em>Image</em> à côté des <em>Pages</em> et des <em>Story</em>. Ce qui ne correspond pas vraiment à mes besoins (Je n&#8217;exclus pas, bien évidemment, le fait d&#8217;être passé à côté de quelque chose d&#8217;essentiel). Mais au moins avons-nous déjà la possibilité d&#8217;<em>uploader</em> des images dans Drupal, ce qui n&#8217;est pas rien ;)</p>

<h4>ImageField (Bof)</h4>

<p>Dépendant des modules <a href="http://drupal.org/project/cck">CCK</a> et <a href="http://drupal.org/project/filefield">FileField</a>, <a href="http://drupal.org/project/imagefield">ImageField</a> fournit un <em>uploader</em> dans la lignée du module <em>Image</em> vu plus haut. Des modules complémentaires permettent de <a href="http://drupal.org/project/imagecache">générer des miniatures</a>, de <a href="http://drupal.org/project/imagefield_extended">saisir des méta-données</a> en plus des traditionnels alt et title, de <a href="http://drupal.org/project/imagefield_crop">recadrer les images</a> ou encore de <a href="http://drupal.org/project/image_fupload">télécharger des images par lot</a>.</p>

<p>Une fois que vous aurez copié ces modules, vous vous apercevrez que CCK est un gros morceau : il bénéficie d&#8217;un menu pour ses dépendances dans la liste des modules. Ne sachant pas encore de quoi j&#8217;aurais exactement besoin, j&#8217;ai tout coché. Mais impossible d&#8217;activer le module <em>FileField</em> à cause de l&#8217;absence du <a href="http://drupal.org/project/getid3">module getID3</a> (gestions des informations contenus dans les fichiers audios). Dans le doute, je l&#8217;installe. Un message d&#8217;erreur m&#8217;avertit que je n&#8217;ai pas installé la <a href="http://sourceforge.net/projects/getid3/">bibliothèque getID3</a> dans le dossier <em>sites/all/libraries/getid3/</em>.</p>

<p>Mais nous ne somme pas au bout de nos peines car à la lecture de la documentation de ImageField, il semble nécessaire d&#8217;installer les modules <a href="http://drupal.org/project/imagecache">ImageCache</a> et <a href="http://drupal.org/project/imageapi/">ImageAPI</a> qui n&#8217;était nécessaire que pour la version 5.x de Drupal&#8230;</p>

<p>Une fois <em>ImageCache</em> installé, mis à jour et <a href="http://drupal.org/node/163561">assimilé dans les grandes lignes</a> (les plus pressés regarderont directement la vidéo <a href="http://blip.tv/file/256997">Maintainable Image Gallery</a>), vous pourrez vous rendre sur <em>Administrer › Construction du site › ImageCache</em> pour voir les possibilités du module. J&#8217;ai également installé le <a href="http://drupal.org/project/views">module Views</a> qui de toutes façons fait partie des incontournables de Drupal (pendant que vous y êtes, installez également le <a href="http://drupal.org/project/advanced_help">module d&#8217;aide avancé</a> pour <em>Views</em>).</p>

<p>Une fois que vous aurez terminé le tutoriel <a href="http://drupal.org/node/609628">Imagefield &#8211; how to set up and make a basic view</a> vous aurez plus ou moins la même chose qu&#8217;avec le module <em>Image</em> présenté plus haut&#8230;</p>

<p>Lire <a href="http://www.kolossaldrupal.org/docs/preparer-drupal-pourmanipulation-dimages">Préparer Drupal pour la manipulation d&#8217;images</a>.</p>

<h4>IMCE (Yeah!)</h4>

<p>Le <a href="http://drupal.org/project/imce">module IMCE</a> permet d&#8217;<em>uploader</em> des fichiers et des images avec la gestion des répertoires distants en prime. Le tout compatible avec <em>FCKeditor</em>, <em>TinyMCE</em> et <em>WYMEditor</em>. Pour éviter certaines incompatibilités entre les éditeurs et/ou certains modules, il est préférable de passer par le module <a href="http://drupal.org/project/imce_wysiwyg">IMCE Wysiwyg bridge</a> qui facilite l&#8217;intégration du module <em>IMCE</em> dans les éditeurs visuels <em>TinyMCE</em> et <em>FCKeditor</em> pour le moment.</p>

<p>Pour éviter de tout mélanger, je vous conseille de désactiver le module <em>Image</em> installé précédemment et d&#8217;installer <em>IMCE</em> et <em>IMCE Wysiwyg bridge</em> puis de jeter un oeil sur les options de <em>IMCE</em> dans <em>Administrer › Configuration du site › IMCE</em>.</p>

<p>Pour accéder à ce qui nous intéresse, une dernière étape est nécessaire : cocher la case <code>IMCE</code> dans la liste des boutons et plugins de l&#8217;éditeur visuel <em>TinyMCE</em> dans <em>Administrer › Configuration du site › Wysiwyg</em> !</p>

<p>Faites la même chose pour <em>FCKeditor</em> pendant que vous y êtes, histoire de passer rapidement d&#8217;un éditeur visuel à l&#8217;autre. L&#8217;idéal étant de créer deux nouveaux <em>formats d&#8217;entrée</em> en plus de <em>Filtered HTML</em> et de <em>Full HTML</em> pour leur associer nos deux éditeurs visuels nouvellement installés.</p>

<p>Le résultat de nos manipulations prend la forme d&#8217;une icône <em>Browse</em> ou d&#8217;un bouton <em>Parcourir le Serveur</em> juste à droite du champs URL de l&#8217;image (quand on a cliqué sur l&#8217;icône <em>Insérer/modifier l&#8217;image).</em> Un clic sur ce bouton affiche enfin la boite de dialogue qui permet d&#8217;<em>uploader</em>, de générer les miniatures et d&#8217;envoyer le tout à l&#8217;éditeur qui se chargera d&#8217;afficher l&#8217;image dans l&#8217;article, enfin !</p>

<p>Notez que le module <em>IMCE</em> est également disponible pour le module <em>CKeditor</em>.</p>

<h5>Ca ne marche toujours pas ?</h5>

<p>Que l&#8217;image s&#8217;affiche correctement dans l&#8217;éditeur ne signifie pas qu&#8217;elle s&#8217;affichera dans votre article une fois publié&#8230; La raison est que même si vous spécifiez un éditeur visuel comme <em>FCKeditor</em>, le comportement par défaut est de filtrer les balises HTML à la manière de <em>Filtered HTML</em>. Pour y remédier, rendez-vous dans <em>Administrer › Configuration du site › Formats d&#8217;entrée</em> et décochez la case <em>filtre HTML.</em></p>

<h4>Drupal 7 (Yeah?)</h4>

<p><a href="http://drupal.org/drupal-7.0-alpha1">La prochaine version de Drupal</a> devrait gérer nativement les images avec des champs <em>Image</em> pouvant être ajoutés aux contenus et auxquels peuvent être attachés des effets tels que le redimensionnement, le recadrage, etc. Cette version est actuellement en Alpha1.</p>

<p class="small">Notes : cette prochaine mouture de Drupal marquera un tournant dans l&#8217;ergonomie du CMS qui devrait avoir été amélioré de manière significative par rapport à la version 6.15 que je teste actuellement.</p>

<h2>En attendant la suite des tribulations d&#8217;un WordPressien en Drupalie&#8230;</h2>

<p>Malgré la longueur de ce billet, l&#8217;installation de Drupal est moins compliquée qu&#8217;il n&#8217;y parait. Les problèmes que j&#8217;ai rencontrés vous seront sans doute épargnés. L&#8217;installation des différents modules prend du temps et de nombreux aller-retours sont nécessaires pour installer, activer ou modifier les paramètres.</p>

<p>Les critiques concernant l&#8217;ergonomie perfectible de Drupal (qui va être radicalement modifiée avec l&#8217;arrivée de la version 7) sont sans doute un moindre mal au regard des possibilités. Et puis, entre nous, si vous trouvez que Drupal est trop riche, c&#8217;est peut-être que WordPress ou votre CMS préféré suffit à votre bonheur ^_^</p>

<p>Toutefois, la saisie et la mise en forme de textes et d&#8217;images sont le coeur et la raison d&#8217;être de tout CMS et l&#8217;absence d&#8217;un éditeur visuel intégrant images, son, vidéos, etc. se fait cruellement sentir. D&#8217;autant plus que les solutions proposées par la communauté Drupal n&#8217;offrent pas le même confort d&#8217;utilisation que ce qu&#8217;on trouve dans WordPress 2.9 où le module d&#8217;<em>upload</em> et d&#8217;édition d&#8217;image est une petite merveille. Mais la <a href="http://linuxfr.org/2010/01/20/26364.html">version 7 pointe son nez</a> et tout ces inconvénients ne seront sans doute qu&#8217;un mauvais souvenir ;)</p>

<h2>Quelques liens</h2>

<ul>
    <li><a href="http://drupalfr.org/">Drupalfr</a></li>
    <li><a href="http://www.kolossaldrupal.org">Kolossaldrupal</a></li>
    <li><a href="http://biboo.net/">Biboo</a></li>
    <li><a href="http://www.drupalistic.net/">Drupalistic</a></li>
    <li><a href="http://learnbythedrop.com/">Learn By The Drop</a></li>
</ul>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/bbcomposer-editeur-html-a-consommer-sur-place-ou-a-emporter' title='BBComposer &#8212; l&#8217;éditeur HTML à consommer sur place ou à emporter'>BBComposer &#8212; l&#8217;éditeur HTML à consommer sur place ou à emporter</a></li><li><a href='http://css4design.com/le-petit-journal-du-web-novembre-2011' title='Le petit journal du web &#8212; WordPress, développement web, etc.'>Le petit journal du web &#8212; WordPress, développement web, etc.</a></li><li><a href='http://css4design.com/phpcrossref-reference-open-source-wordpress-drupal-joomla-textpattern-zend-framework' title='PHPCrossRef &#8212; Bibliothèques de référence pour projets PHP Open source'>PHPCrossRef &#8212; Bibliothèques de référence pour projets PHP Open source</a></li><li><a href='http://css4design.com/fonction-javascript-contre-bug-classes-multiples-internet-explorer-6' title='IE6 &#8212; 3 fonctions Javascript pour lutter contre le bug des classes multiples'>IE6 &#8212; 3 fonctions Javascript pour lutter contre le bug des classes multiples</a></li><li><a href='http://css4design.com/markdown-on-save-wordpress-html' title='Markdown on Save &#8212; L&#8217;ami HTML de Markdown pour WordPress'>Markdown on Save &#8212; L&#8217;ami HTML de Markdown pour WordPress</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=4858&amp;md5=f8dadd5f01d558d6dd9ffb3a04728f10" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/installer-drupal/feed</wfw:commentRss>
		<slash:comments>27</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=4858&amp;md5=f8dadd5f01d558d6dd9ffb3a04728f10" type="text/html" />
	</item>
		<item>
		<title>Afficher ou ordonner les éléments HTML avec PHP</title>
		<link>http://css4design.com/afficher-ou-ordonner-les-elements-html-avec-php</link>
		<comments>http://css4design.com/afficher-ou-ordonner-les-elements-html-avec-php#comments</comments>
		<pubDate>Mon, 27 Oct 2008 21:19:56 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Javascript & PHP]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutoriels]]></category>

		<guid isPermaLink="false">http://www.css4design.com/?p=2218</guid>
		<description><![CDATA[Je raffole des petites fonctions ou les scripts PHP tout simples qui en ont sous la botte. A l&#8217;aide de deux tableaux Array PHP nous choisirons les balises div à afficher dans notre page web et dans quel ordre afin de modifier la structure de notre document sans toucher au code HTML. Pour ce faire, il suffira de remplir les string qui vont bien dans l&#8217;Array. Les strings dans l&#8217;Array (oui, oui, je sais&#8230; ^_^v) Tout commence par la déclaration des deux Array. Ces tableaux pourront se trouver dans un fichier distinct à inclure avec &#60;?php include 'mon_fichier.php' ?&#62; : [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fafficher-ou-ordonner-les-elements-html-avec-php">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fafficher-ou-ordonner-les-elements-html-avec-php&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Je raffole des petites fonctions ou les scripts PHP tout simples qui en ont sous la botte. A l&#8217;aide de deux tableaux <code>Array</code> PHP nous choisirons les balises <code>div</code> à afficher dans notre page web et dans quel ordre afin de modifier la structure de notre document sans toucher au code HTML. Pour ce faire, il suffira de remplir les <code>string</code> qui vont bien dans l&#8217;<code>Array</code>.<span id="more-2218"></span></p>

<h3>Les strings dans l&#8217;Array (oui, oui, je sais&#8230; ^_^v)</h3>

<p>Tout commence par la déclaration des deux <code>Array</code>. Ces tableaux pourront se trouver dans un fichier distinct à inclure avec <code>&lt;?php include 'mon_fichier.php' ?&gt;</code> :</p>

<ul>
<li><code>$displayDiv</code> &#8212; contient les éléments (<code>div</code>) à afficher,</li>
<li><code>$orderDiv</code> &#8212; permet d&#8217;ordonner les éléments en question.</li>
</ul>

<p><pre><code>
    &lt;?php
        $displayDiv = array(
            'sidebar',
            'content'
        );
        $orderDiv = array(
            '0'=&gt;'sidebar',
            '1'=&gt;'content'
        );
    ?&gt;
</code></pre></p>

<h3>Une boucle for et quelques if.</h3>

<ol>
<li><p>Une boucle <code>for</code> englobe l&#8217;ensemble du document pour incrémenter la variable <code>$i</code> en fonction du nombre d&#8217;éléments contenu dans le tableau <code>$orderDiv</code>,</p></li>
<li><p>Nous vérifions pour chaque élément <code>div</code> concerné :</p>

<ul>
<li>sa présence et son numéro d&#8217;ordre dans le tableau <code>$orderDiv</code>,</li>
<li>sa présence dans le tableau <code>$displayDiv</code>.
<pre><code>
&lt;?php for($i=0;$i&lt;=count($orderDiv);$i++) { ?&gt;
&lt;?php
    if($orderDiv[$i]=='sidebar' &amp;&amp; in_array(&quot;sidebar&quot;,$displayDiv)) {
?&gt;
    &lt;div id=&quot;sidebar&quot;&gt;
            &lt;p&gt;Contenu de la sidebar&lt;/p&gt;
    &lt;/div&gt;
&lt;?php } ?&gt;
&lt;?php
    if($orderDiv[$i]=='content' &amp;&amp; in_array(&quot;content&quot;,$displayDiv)) {
?&gt;
    &lt;div id=&quot;content&quot;&gt;
        &lt;p&gt;Contenu du contenu&lt;/p&gt;
    &lt;/div&gt;
&lt;?php } ?&gt;
&lt;?php } ?&gt;
</code></pre></li>
</ul></li>
</ol>

<p>Pour afficher un élément, mettez-le dans le tableau <code>$displayDiv</code>. Pour modifier l&#8217;ordre d&#8217;affichage des éléments (pour placer <em>#sidebar</em> après <em>#content</em>, par exemple), changez l&#8217;ordre des éléments dans le tableau <code>$orderDiv</code>.</p>

<p>Voici la <a href="http://www.css4design.com/afficher-ou-ordonner-les-elements-html-avec-php#comment-3052">proposition de Josselin</a> qui permet d&#8217;optimiser le code présenté plus haut :</p>

<p><pre><code>
    $orderDiv = array(
        '0' =&gt; 'sidebar',
        '1' =&gt; 'content'
    );
   ksort( $orderDiv ); // Trie le tableau suivant les clefs,
   // la boucle suivante les affichera alors dans l'ordre
   foreach ( $orderDiv as $nameDiv ) {
        include( $nameDiv . '.php' );
    }
</code></pre></p>

<p>Cette méthode implique donc d&#8217;avoir une page HTML pour chaque <code>div</code> portant le même nom que cette <code>div</code> pour mieux séparer le code PHP de la structure HTML, soit <code>sidebar.php</code> et <code>content.php</code> dans notre cas.</p>

<p><em>Stay tuned and mind the gap!</em></p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/feuille-de-style-css-dynamique-avec-php' title='Des feuilles de style CSS dynamiques avec PHP'>Des feuilles de style CSS dynamiques avec PHP</a></li><li><a href='http://css4design.com/quelques-lignes-de-php-pour-proteger-la-serp-diversite' title='Quelques lignes de PHP pour protéger la SERP-diversité'>Quelques lignes de PHP pour protéger la SERP-diversité</a></li><li><a href='http://css4design.com/menu-html-et-css-portes-coulissantes-et-item-current-en-php' title='Menu HTML et CSS, sliding doors et item current en PHP'>Menu HTML et CSS, sliding doors et item current en PHP</a></li><li><a href='http://css4design.com/balise-meta-description-avec-php-pour-dotclear-et-referencement-google' title='Adriana K, Google et balises meta dans DotClear'>Adriana K, Google et balises meta dans DotClear</a></li><li><a href='http://css4design.com/programme-formation-html-css' title='Quelques notes &#8212; Programme de formation HTML &amp; CSS'>Quelques notes &#8212; Programme de formation HTML &#038; CSS</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=2218&amp;md5=d87ee42f1875b4122a2c221b6b2885b3" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/afficher-ou-ordonner-les-elements-html-avec-php/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=2218&amp;md5=d87ee42f1875b4122a2c221b6b2885b3" type="text/html" />
	</item>
		<item>
		<title>IE6 &#8212; Gérer la transparence du format PNG 24 bits</title>
		<link>http://css4design.com/ie6-gerer-la-transparence-du-format-png-24-bits</link>
		<comments>http://css4design.com/ie6-gerer-la-transparence-du-format-png-24-bits#comments</comments>
		<pubDate>Mon, 20 Oct 2008 21:38:47 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[Intégration web]]></category>
		<category><![CDATA[Javascript & PHP]]></category>
		<category><![CDATA[AlphaImageLoader]]></category>
		<category><![CDATA[Commentaires conditionnels]]></category>
		<category><![CDATA[Filtre]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[Image]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Opacité]]></category>
		<category><![CDATA[PNG]]></category>
		<category><![CDATA[Transparent]]></category>
		<category><![CDATA[Tutoriels]]></category>

		<guid isPermaLink="false">http://www.css4design.com/?p=2100</guid>
		<description><![CDATA[Pour afficher la transparence des images au format PNG 24 bits RVBA dans Internet Explorer 6 (IE6) il faut utiliser le filtre AlphaImageLoader, soit directement dans la feuille de style CSS avec la propriété filter ou behavior (pour charger un comportement htc) ou automatiquement avec Javascript.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fie6-gerer-la-transparence-du-format-png-24-bits">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fie6-gerer-la-transparence-du-format-png-24-bits&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Le <a href="http://www.libpng.org/pub/png/">format PNG</a> autorise jusqu&#8217;à 256 niveaux de transparence qui ne sont pas pris en charge par Internet Explorer 6. La <a href="http://www.yoyodesign.org/doc/accessites/graceful-degradation-progressive-enhancement/">dégradation grâcieuse</a> n&#8217;étant pas toujours possible, je me suis rafraichis la mémoire sur les différentes manières d&#8217;utiliser le filtre <em>AlphaImageLoader</em>. J&#8217;ai fini par tomber sur une solution globale pour gérer cette transparence même en présence d&#8217;un <em>background-repeat</em> ou d&#8217;un <em>background-position</em> ! (Cet article est en quelque sorte la suite de <a href="http://www.css4design.com/opacite-avec-css-et-effet-de-trame-avec-un-gif-transparent">Opacité CSS et effet de trame</a> avec GIF/PNG transparent.)<span id="more-2100"></span></p>

<h2>Le format PNG</h2>

<p>Le <acronym>PNG</acronym> est format d&#8217;enregistrement d&#8217;image destiné à remplacer le <a href="http://fr.wikipedia.org/wiki/Graphics_Interchange_Format">format GIF</a> dans sa version 8 bits. La version 24 bits en RVBa &#8212; qui comprend plus de 16 millions de couleurs &#8212; autorise jusqu&#8217;à 256 niveaux de transparence très utiles en webdesign pour superposer deux images dont celle du dessus laisse transparaitre celle du dessous.</p>

<p>Malheureusement, IE6 ne comprend rien à ces différents niveaux de transparence : il faut ruser, c&#8217;est usant. Certains préconisent la dégradation grâcieuse : utiliser la transparence dans les navigateurs qui la prennent en charge et servir autre chose au dernier de la classe : un PNG 8 bits avec une seule couleur de transparence, fusionner les deux images censées se superposer, voire même utiliser une image légèrement différente.</p>

<p>Après tout, les visiteurs ne sont pas toujours des développeurs web utilisant plusieurs versions de navigateurs pour traquer la moindre différence de rendu. Si vous pouvez vous le permettre, foncez ! Dans le cas contraire, il faudra recourir à des solutions plus ou moins fonctionnelles selon que l&#8217;image en question se trouve placée en <code>background</code> d&#8217;un élément (une <code>div</code>, par exemple) ou dans une balise <code>img</code>. Si votre image transparente est placée sur un fond uni, il reste la possible de modifier l&#8217;image par voie logicielle :</p>

<h2>Modifier le chunk (segment) bKGD des png</h2>

<p>Un image au format PNG est composée de <a href="http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html">différents segments</a> (chunks) dont le fameux bKGD qui spécifie une couleur de fond par défaut. A noter que les agents utilisateurs (navigateurs, logiciels, etc.) ne sont pas tenus de respecter cette couleur et peuvent en utiliser une autre. Dans IE6, cette couleur se rapproche d&#8217;un gris-vert tirant sur le turquoise&#8230;</p>

<p>Certains logiciels comme <a href="http://entropymine.com/jason/tweakpng/">TweakPNG</a> permettent de <a href="http://userbarscity.armatronic.com/forum/index.php?showtopic=277">modifier la valeur de bKGD</a>. Si vous disposez d&#8217;un fond de couleur uni, il suffit d&#8217;y mettre la couleur du fond sur laquelle est placé votre image contenant des zones transparentes.</p>

<p>Dans le cas contraire, les filtres Microsoft sont nos amis :</p>

<h2>Le filtre `AlphaImageLoader` de Microsoft</h2>

<p>Internet Explorer (depuis la version 5.5) inclut un <a href="http://msdn.microsoft.com/en-us/library/ms532969.aspx">mécanisme de filtres propriétaires</a> <code>filter</code> dont <em>AlphaImageLoader</em> qui gère la transparence des png 24 bits. L&#8217;utilisation du filtre diffère selon que l&#8217;image est appelé via la balise <code>img</code> ou en tant que <code>background</code> d&#8217;un autre élément.</p>

<h3>Appliqué sur une balise `img`</h3>

<p>Applique le filtre sur les images dont la classe CSS est <code>.img_png</code> à l&#8217;intérieur d&#8217;une feuille de style réservée à IE6 avec les <a href="http://www.css4design.com/commentaires-conditionnels-d-internet-explorer-vs-hacks-css">commentaires conditionnels</a>. Il suffit de renseigner la source de <code>monImageTransparente.png</code> dans la variable <code>src</code> :
<pre><code>
.img_png {
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='pix/monImageTransparente.png', sizingMethod='image');
}
</code></pre></p>

<h3>Appliqué sur une image en `background`</h3>

<p>Pour les navigateurs tenant compte de la transparence, vous aurez la règle CSS :
<pre><code>
.div_png {
    width: 100px;
    height: 150px;
    background: url(../pix/monImageTransparente.png) no-repeat;
}
</code></pre>
Pour Internet Explorer 6, il faudra utiliser :
<pre><code>
.div_png {
    width: 100px;
    height: 150px;
    background: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='pix/monImageTransparente.png', sizingMethod='scale');
}
</code></pre>
Notez l&#8217;attribut <em>sizingMethod</em> qui peut recevoir les valeurs <em>image</em>, <em>scale</em> ou <em>crop</em> (via l&#8217;excellente <a href="http://forum.alsacreations.com/faq/faq-96-Obtenir-la-transparence-PNG-avec-Internet-Explorer-6.html">FAQ du forum</a> d&#8217;Alsacréations.) :</p>

<ul>
    <li><strong>image </strong>&#8211; Réduit ou élargit le bloc pour correspondre aux dimensions de l&#8217;image (valeur par défaut),</li>
    <li><strong>scale </strong>&#8211; Etire l&#8217;image aux dimensions du bloc,</li>
    <li><strong>crop</strong> &#8212; Rogne l&#8217;image pour qu&#8217;elle tienne dans le bloc.</li>
</ul>

<h3>Quelques contraintes</h3>

<ol>
<li><p>La source de l&#8217;image doit être relative au document HTML qui l&#8217;affiche et non à la feuille de style CSS qui la réclame. De sorte qu&#8217;une image se trouvant dans un dossier <em>images</em> appelée dans un fichier CSS se trouvant dans un dossier <em>css</em> ne devra plus se trouver sur le chemin <em>../pix/monImageTransparente.png</em> mais sur <em>pix/monImageTransparente.png</em>.</p></li>
<li><p>Les liens contenus dans un élément HTML possédant une images de fond transparente ne sont plus cliquables, les champs <code>input</code> ne sont plus accessibles et le texte n&#8217;est plus sélectionnable. Une manière générale d&#8217;y remédier est d&#8217;ajouter une déclaration du type :
<pre><code>
.div_png a,
.div_png input {
    position: relative;
    z-index: 1;
}
</code></pre>
Pour plus d&#8217;information sur cette question, lire le <a href="http://forum.alsacreations.com/topic-4-37488-1-Filter-microsoft-alphaloader-et-input-type-button-.html">fil de discussion</a> paru sur le forum d&#8217;Alsacréations et la <a href="http://web.covertprestige.info/test/47-alphaimageloader-absolute.html">synthèse</a> rédigée par <a href="http://webenberry.com/">Frank Galey</a>.</p></li>
<li><p>Il n&#8217;est pas possible d&#8217;utiliser les propriétés <em>background-repeat</em> et <em>background-position</em> avec une image PNG transparente en <code>background</code>.</p></li>
<li><p>Il est difficile d&#8217;utiliser des événements de style <em>rollover</em> pour permuter des images de fond au passage de la souris.</p></li>
</ol>

<h2>Passez-moi l&#8217;<a href="http://www.gatellier.be/css-pseudo-classes-internet-explorer/">expression</a> !</h2>

<p>C&#8217;est assez contraignant. Heureusement, le web est rempli de gens de bonnes volonté qui se sont retroussé les manches pour nous offrir des solutions sur un plateau. Voyez plutôt :
<pre><code>
* html img,
* html .png {
    position:relative;
    behavior: expression((this.runtimeStyle.behavior="none")&amp;&amp;(this.pngSet?this.pngSet=true:(this.nodeName == "IMG" &amp;&amp; this.src.toLowerCase().indexOf('.png')&gt;-1?(this.runtimeStyle.backgroundImage = "none",
this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "', sizingMethod='image')",
this.src = "transparent.gif"):(this.origBg = this.origBg? this.origBg :this.currentStyle.backgroundImage.toString().replace('url("','').replace('")',''),
this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.origBg + "', sizingMethod='crop')",
this.runtimeStyle.backgroundImage = "none")),this.pngSet=true)
);
}
</code></pre>
Trouvé sur <a href="http://www.komodomedia.com/2007/11/css-png-image-fix-for-ie/">komodomedia</a> via <a href="http://www.babylon-design.com/site/index.php/2007/11/13/204-png-transparents-ie6-en-css-sans-javascript">babylon-design</a>.</p>

<p>Le <code>* html</code> est là uniquement pour cibler IE6. Vous pourrez donc vous en passer si vous utilisez une feuille de style dédiée à ce navigateur. Ne fonctionne pas si Javascript est désactivé. Nécessite une image transparente de 1px de côté (<em>transparent.gif</em>).</p>

<p>Note : il sera peut-être nécessaire d&#8217;ajouter un <code>z-index: 1;</code> pour éviter les problèmes de liens, d&#8217;éléments de formulaire ou de sélection de texte évoqués plus haut.</p>

<h2>Une solution globale avec iepngfix</h2>

<p>Il existe de nombreux scripts permettant d&#8217;automatiser avec plus ou moins de bonheur cette gestion de la transparence des images PNG. Ils mettent tous en oeuvre le filtre <em>AlphaImageLoader</em> soit dans un fichier Javascript, soit dans un <a href="http://www.journaldunet.com/developpeur/tutoriel/dht/061222-ie-htc-html-components-behaviors.shtml">fichier HTC</a>. Parmi tous les scripts existants, j&#8217;ai retenu <a href="http://www.twinhelix.com/css/iepngfix/">iepngfix</a> de <a href="http://www.twinhelix.com/">TwinHelix</a> que m&#8217;a conseillé <a href="http://case.oncle-tom.net/">Oncle Tom</a> sur <a href="http://twitter.com/oncletom/statuses/957668242">Twitter</a>.</p>

<p>Ce composant HTC gère la plupart des contraintes énoncées plus haut, y compris l&#8217;absence de prise en compte de <em>background-repeat</em> et <em>background-position</em> dans <a href="http://www.twinhelix.com/test/">iepngfix version 2.0 Alpha 3</a>.</p>

<p>Le script est très simple à utiliser :</p>

<ol>
<li><p>Copiez les fichiers *iepngfix.htc* and *blank.gif* dans le dossier de votre site web,</p></li>

<li><p>Copiez la déclaration CSS suivante dans votre feuille de style ou votre fichier HTML :</p>
<pre>
    img, div {
        behavior: url(iepngfix.htc);
    }
</pre>
<p>Vous pouvez placer dans ce sélecteur CSS toutes les balises HTML, les identifiants ou les classes pour lesquels vous désirer activer la gestion de la transparence des PNG. Séparez-les simplement par une virgule.</p></li>

<li><p>N&#8217;oubliez pas que le chemin vers les fichiers *iepngfix.htc* et *blank.gif* est relatif au document HTML et non à la feuille de style CSS.</p></li>

<li><p>Si votre site est composé de sous-dossier, n&#8217;hésitez pas à ouvrir le fichier *iepngfix.htc* dans un éditeur de texte pour modifier la variable `blankImg` afin de la faire pointer vers votre pixel transparent. Par exemple : `IEPNGFix.blankImg = &#8216;/images/blank.gif&#8217;;`</p>

<p>Cette fois encore, le chemin doit être relatif au document HTML. Si vous désirez activer la prise en charge des propriétés *background-repeat* et *background-position* assurez-vous d&#8217;inclure le fichier Javascript *iepngfix_tilebg.js* dans votre document HTML :</p>
<pre>
&lt;script src="iepngfix_tilebg.js" type="text/javascript"&gt;&lt;/script&gt;
</pre>
</li>
<li><p>Dans certains cas, il sera nécessaire d&#8217;envoyer le bon <a href="http://fr.wikipedia.org/wiki/Type_MIME">type MIME</a> à Internet Explorer 6. L&#8217;auteur du script a prévu un fichier *iepngfix.php* qui inclut le fichier *iepngfix.htc* tout en renvoyant le type MIME `text/x-component` associé aux fichiers `.htc` :</p>
<pre>
    img, div, a, input {
        behavior: url(/css/resources/iepngfix.php);
    }
</pre>
</li>
<li><p>Pour améliorer les performances, soyez le plus sélectif possible : préférez un `#img_header` ou un `.img_png` à l&#8217;utilisation de la balise `img` seule, sauf bien sûr si toutes vos images ont besoin du script !</p>

<li><p>Il se peut que le fond gris-vert apparaisse brièvement lors du chargement de l&#8217;image. Si vous ne voulez pas ce comportement (notamment sur les grandes images), vous n&#8217;aurez qu&#8217;à revenir à une utilisation &laquo;&nbsp;manuelle&nbsp;&raquo; du filtre *AlphaImageLoader* comme indiqué dans la première partie.</p>

<p>N&#8217;hésitez pas à consulter le fichier *iepngfix.html* présent dans l&#8217;archive *.zip* qui apporte une palanquée d&#8217;informations, de trucs et d&#8217;astuces pour utiliser le script et remédier aux problèmes d&#8217;utilisation.</p></li>
</ol>

<h2>Une nouvelle solution globale avec DD_belatedPNG</h2>

<p><a href="http://dillerdesign.com/experiment/DD_belatedPNG/">DD_belatedPNG</a> semble faire l&#8217;unanimité autour de lui pour sa légèreté et son efficacité, y compris lorsqu&#8217;on l&#8217;utilise avec <code>background-position</code> ou <code>background-repeat</code>. Le script s&#8217;utilise très simplement :
<pre>
&lt;!--[if IE 6]&gt;
    &lt;script src="DD_belatedPNG.js"&gt;&lt;/script>
    &lt;script&gt;
        DD_belatedPNG.fix('.png_bg');
    &lt;/script&gt;
&lt;![endif]--&gt;
</pre>
La classe <code>.png_bg</code> n&#8217;est qu&#8217;un exemple et vous pourrez utiliser un ou plusieurs sélecteurs à votre convenance, tels que :
<pre>
&lt;script type="text/javascript"&gt;
// &lt;![CDATA[
             DD_belatedPNG.fix('.example1, .example2, img');
// ]]&gt;&lt;/script&gt;
</pre></p>

<h2>Conclusion</h2>

<p>Ce sujet semble inépuisable, ce qui n&#8217;est pas mon cas. Je laisse cet article en version <em>bêta</em> pendant quelques temps histoire de laisser décanter le sujet : il serait étonnant que des erreurs ou inexactitudes ne se soient pas glissées sous le tapis de souris ;)</p>

<h2>Ressources externes</h2>

<h3>Généralités sur le format PNG</h3>

<dl>
<dt>Gérer la transparence du PNG par voie logicielle</dt>
<dd>Ce logiciel permet d&#8217;accéder aux informations contenues dans un fichier PNG dont notamment le chunk (segment) bKGD pour modifier la couleur de fond sur laquelle s&#8217;applique la transparence (un fond gris/vert/turquoise par défaut dans ie6). Vous trouvez quelques explications concernant son utilisation sur</dd>

<dd>Logiciel très pratique et simple d&#8217;emploi pour améliorer la compression des images au format PNG. Il suffit de faire glisser les images que vous voulez améliorer et le PngOptimizer s&#8217;occupe du reste. Possède quelques options pour manipuler les <em>chunks</em> ou garder une version de l&#8217;image d&#8217;origine.</dd>

<dd>C&#8217;est peu connu, mais <a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#Ancillary_chunks">les spécifications</a> du format PNG 8 bits autorisent plusieurs couleurs dans le segment Alpha, ce qui permet de spécifier plusieurs couleurs transparentes en utilisant un logiciel approprié comme <a href="http://www.adobe.com/fr/products/fireworks/">Fireworks</a>. Voilà une bonne technique pour s&#8217;autoriser une dégradation grâcieuse des images transparentes sous Internet Explorer 6 !</dd>

<dd>Un peu hors-sujet par rapport à la transparence des PNG, je signale l&#8217;existence d&#8217;un plugin pour Photoshop qui permet d&#8217;optimiser le poids des images PNG : le plugin installé par défaut dans Photoshop ne rend pas vraiment justice aux possibilités de compression de ce format.</dd>

<dt>Quelques scripts</dt>
<dd>Version 1.0 et version 2.0 Alpha 3 du script iepngfix.  Gère les <em>background-repeat</em> et <em>background-position</em> dans la version <em>Alpha</em> à l&#8217;aide d&#8217;un fichier Javascript supplémentaire.</dd>

<dd>Ce script est proposé par <a href="http://poleweb.blogspot.com/">Yves Van Goethem</a>. Nombreuses options disponibles réservées à un public averti ;)</dd>

<dd>Fichier Javascript gérant la plupart des pièges posés par l&#8217;application du filtre <code>AlphaImageLoader</code>.</dd>

<dd>Avec Unit PNG Fix pas besoin de définir des classes ou de cibler vos éléments. Fonctionne avec les balises img ou sur les background-image. Très léger. <span class="small">Merci à <a href="http://13sportif.free.fr/">13sportif</a> pour le lien.</span></dd>

<dd>Expression Javascript permettant de gérer la transparence des PNG en <code>img</code> ou en <code>background</code></dd>

<dd>Script très léger et pratique. S&#8217;applique à toutes les images PNG de votre document. Toutefois, certaines images restent en mode <em>téléchargement</em> alors quelles sont bien affichées, ce qui peut donner l&#8217;impression au visiteur que quelque chose ne tourne pas rond sur le site. Malgré tout, ce script vieillissant peut encore rendre quelques services : il m&#8217;a rappellé l&#8217;existence de l&#8217;attribut <code>defer="defer"</code> de la balise <code>script</code> qui permet de différer le chargement (ou l&#8217;application) du script en question. Voir cet <a href="http://www.websiteoptimization.com/speed/tweak/defer/">article très complet sur l&#8217;analyse de <em>defer</em></a>.</dd>

<dd>Propose une version modifiée du script précédent pour les champs de formulaires `</dd>

<dt><input type="image" />`</dt>
<dd>Encore un Javascript à se mettre sous la souris ! Crée une balise <code>div</code> dans laquelle est affichée l&#8217;image traitée par le filtre DirectX :</dd>

<dd>Plus ou moins la même chose avec un composant HTC.</dd>

<dd>Une solution originale en PHP.</dd>

<dt>Autres ressources sur la transparence des PNG</dt>
<dd>La blonde propose avec pédagogie un récapitulatif des différentes méthodes pour gérer cette transparence sur 256 niveaux.</dd>

<dd>Présente de nombreuses solutions et contournement pour afficher les images transparentes.</dd>

<dd>La FAQ du forum Alsacréations sur comment obtenir la transparence des PNG avec Internet Explorer 6</dd>

<dd>Tutoriel pour pallier les effets secondaires du filtre AlphaImageLoader en cas de positionnement absolu.</dd>

<dd>Mise en garde d&#8217;Eric Daspet sur l&#8217;utilisation des filtres : <q cite="http://performance.survol.fr/2008/07/ne-pas-filtrer-les-pngs/">Si vous l’utilisez pour une petite icône de présentation qui apparaît vingt fois dans votre page, c’est vingt exécutions du filtres qui sont faites. À chaque exécution du filtre le rendu est bloqué, en attente. Sur Yahoo! Search en retirant AlphaImageLoader de la feuille CSS c’est jusqu’à 100ms qu’ils ont gagné (information donnée par Stoyan Stefanov sur sa dernière présentation). </q></dd>

<dd>Article très instructif sur la transparences du format PNG et l&#8217;application de <code>AlphaImageLoader</code></dd>
</dl>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/css-toolbox' title='Trucs et astuces CSS'>Trucs et astuces CSS</a></li><li><a href='http://css4design.com/ajouter-une-classe-css-dans-body-ou-html-pour-internet-explorer-ie6-ie7-ie8-ou-ie9' title='Ajouter une classe CSS dans BODY ou HTML pour Internet Explorer (IE6 &#8212; IE9)'>Ajouter une classe CSS dans BODY ou HTML pour Internet Explorer (IE6 &#8212; IE9)</a></li><li><a href='http://css4design.com/opacite-avec-css-et-effet-de-trame-avec-un-gif-transparent' title='Opacité CSS et effet de trame avec GIF/PNG transparent'>Opacité CSS et effet de trame avec GIF/PNG transparent</a></li><li><a href='http://css4design.com/une-feuille-de-style-et-des-hacks-css-pour-cibler-ie6-ie7-ou-ie8' title='Une Feuille de style et des « hacks CSS » pour cibler IE6, IE7 ou IE8'>Une Feuille de style et des « hacks CSS » pour cibler IE6, IE7 ou IE8</a></li><li><a href='http://css4design.com/css-navigateurs-10-problemes-de-compatibilite-recurrents' title='CSS &amp; Navigateurs &#8212; 10 problèmes de compatibilité récurrents'>CSS &#038; Navigateurs &#8212; 10 problèmes de compatibilité récurrents</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=2100&amp;md5=ad4fa203bafabb6830e530342f1fcf46" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/ie6-gerer-la-transparence-du-format-png-24-bits/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=2100&amp;md5=ad4fa203bafabb6830e530342f1fcf46" type="text/html" />
	</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced (User agent is rejected)

Served from: css4design.com @ 2012-02-09 03:21:02 -->
