<?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>Le Blog de LunaWeb &#187; Intégration</title>
	<atom:link href="http://www.lunaweb.fr/blog/sujet/integration/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lunaweb.fr/blog</link>
	<description>Regards sur les tendances et technologies web d'aujourd'hui.</description>
	<lastBuildDate>Fri, 30 Jul 2010 10:32:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>IE8 et :last-child : une alternative</title>
		<link>http://www.lunaweb.fr/blog/ie8-et-last-child-une-alternative/</link>
		<comments>http://www.lunaweb.fr/blog/ie8-et-last-child-une-alternative/#comments</comments>
		<pubDate>Tue, 19 May 2009 13:30:45 +0000</pubDate>
		<dc:creator>Kaelig</dc:creator>
				<category><![CDATA[Intégration]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.lunaweb.fr/blog/?p=1102</guid>
		<description><![CDATA[L&#8217;autre jour je mettais en ligne un site qui fut mon premier à avoir nécessité des ajustements pour Internet Explorer 8. En effet Microsoft a mis le paquet sur le respect des standards, mais peut-être un peu trop. Je m&#8217;explique : la pseudo-classe &#171;&#160;:last-child&#160;&#187; (dernier enfant d&#8217;un élément parent) n&#8217;est pas reconnue par IE8, et [...]]]></description>
			<content:encoded><![CDATA[<img class='authorgravatar' src='http://www.gravatar.com/avatar.php?gravatar_id=90125d640eef203da48fcf5e7b4b6315&amp;default=http://use.perl.org/images/pix.gif' alt='No Gravatar' width='60' height='60' /><p>L&#8217;autre jour je mettais en ligne un site qui fut mon premier à avoir nécessité des ajustements pour Internet Explorer 8. En effet Microsoft a mis le paquet sur le respect des standards, mais peut-être un peu trop. Je m&#8217;explique : <strong>la pseudo-classe &laquo;&nbsp;:last-child&nbsp;&raquo; (dernier enfant d&#8217;un élément parent) n&#8217;est pas reconnue par IE8</strong>, et bien qu&#8217;extrèmement pratique, elle n&#8217;est pas valide d&#8217;après les <a href="http://www.yoyodesign.org/doc/w3c/css2/cover.html" target="_blank">spécifications CSS 2.0 du W3C</a>. Je l&#8217;utilisais souvent et peut-être à tort, vu que la plupart des navigateurs la supportent.</p>
<p><strong>Mon objectif : insérer le caractère &nbsp;&raquo; | &nbsp;&raquo; (pipe) entre chaque item d&#8217;une liste</strong><strong>, sauf le dernier. Tout cela en CSS.</strong></p>
<p><span id="more-1102"></span></p>
<h3>Avant</h3>
<pre class="brush: css;">li {
list-style-type: none;
display: inline;
float: left;
}
li:after {
content: ' | ';
}
li:last-child:after {
content: '';
}</pre>
<p>Sous IE8, donne :<br />
<strong><code>item | item | item |</code></strong></p>
<p>Nous avons un &nbsp;&raquo; | &nbsp;&raquo; de trop à la fin, il faut trouver une autre manière d&#8217;écrire notre déclaration CSS :</p>
<h3>Après</h3>
<p>En utilisant le <a title="Les sélecteurs d'enfants adjacents : propriété CSS 2 dans les spécifications w3c" href="http://www.yoyodesign.org/doc/w3c/css2/selector.html#adjacent-selectors" target="_blank">sélecteur d&#8217;enfant adjacent</a> &laquo;&nbsp;li + li&nbsp;&raquo;.</p>
<pre class="brush: css;">li {
list-style-type: none;
display: inline;
float: left;
}
li+li:after {
content: ' | ';
}</pre>
<p>Qui sous Internet Explorer 8, donne :<br />
<strong><code>item | item | item</code></strong></p>
<p>› Notre liste est désormais correctement stylée sous tous les navigateurs modernes. <em>Merci IE8 de m&#8217;avoir remis sur le droit chemin du codage CSS, je n&#8217;utiliserai plus :last-child.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lunaweb.fr/blog/ie8-et-last-child-une-alternative/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Réussir le découpage d&#8217;un design web en 10 étapes</title>
		<link>http://www.lunaweb.fr/blog/10-etapes-pour-reussir-le-decoupage-dun-design-web/</link>
		<comments>http://www.lunaweb.fr/blog/10-etapes-pour-reussir-le-decoupage-dun-design-web/#comments</comments>
		<pubDate>Tue, 05 May 2009 10:44:18 +0000</pubDate>
		<dc:creator>Kaelig</dc:creator>
				<category><![CDATA[Intégration]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.lunaweb.fr/blog/?p=80</guid>
		<description><![CDATA[À LunaWeb, nous voyons passer quotidiennement de nombreux designs sur nos bureaux. E-mailings, refonte de site Internet, nouvelle charte web, mini-site événementiel&#8230; Ils passent entre nos mains et nous devons transformer ces maquettes images en pages web, mais il n&#8217;existe pas de règle dans le domaine. Chaque intégrateur aura sa manière de travailler faute de [...]]]></description>
			<content:encoded><![CDATA[<img class='authorgravatar' src='http://www.gravatar.com/avatar.php?gravatar_id=90125d640eef203da48fcf5e7b4b6315&amp;default=http://use.perl.org/images/pix.gif' alt='No Gravatar' width='60' height='60' /><p>À LunaWeb, nous voyons passer quotidiennement de nombreux designs sur nos bureaux. E-mailings, refonte de site Internet, nouvelle charte web, mini-site événementiel&#8230; Ils passent entre nos mains et nous devons transformer ces maquettes images en pages web, mais<strong> il n&#8217;existe pas de règle dans le domaine. Chaque intégrateur aura sa manière de travailler faute de méthode technique universellement approuvée et éprouvée.</strong></p>
<p><a href="http://www.lunaweb.fr/blog/10-etapes-pour-reussir-le-decoupage-dun-design-web/"><img class="alignnone size-full wp-image-1084" title="psdtocss" src="http://www.lunaweb.fr/blog/wp-content/uploads/2009/05/psdtocss.jpg" alt="psdtocss" width="410" height="141" /></a><br />
<span id="more-80"></span><br />
Lors de ces 10 dernières années j&#8217;ai pu établir une &laquo;&nbsp;routine&nbsp;&raquo; de conception des pages, qui s&#8217;est optimisée de manière plus ou moins empirique à force de recommencer ce process :</p>
<ol>
<li><strong>Travaillez avec une grille</strong>, ou imposez-le au webdesigner (<a rel="external" href="http://960.gs/">960.gs</a> fournit des modèles pour photoshop, fireworks&#8230;). Votre découpage sera ensuite plus rapide et vous limiterez ainsi la <a rel="external" href="http://www.smashingmagazine.com/2009/04/08/from-table-hell-to-div-hell/">prolifération de div inutiles</a></li>
<li>Pensez déjà aux éléments qui devront être des sprites. Vous devez les extraire de votre design pour en composer les différents états (rollover des menu, boutons réactifs&#8230;). <a rel="external" href="http://www.smashingmagazine.com/2009/04/27/the-mystery-of-css-sprites-techniques-tools-and-tutorials/">Sprites : Tutorials et conseils techniques</a>.</li>
<li><strong>Tracez toutes les découpes</strong> en veillant à prévoir les marges, bordures et padding pour les backgrounds. En partant de là, <strong>imaginez  une imbrication de div simple</strong>, puis passez à l&#8217;étape suivante. Si le design est compliqué, n&#8217;hésitez pas à coucher cette structure sur papier.</li>
<li><strong>Commencez à intégrer votre code html en respectant la structure que vous venez d&#8217;imaginer.</strong> Conteneur principal, en-tête, menu, contenu, navigation latérale, footer. Tout doit y être. Soyez lisibles dans votre manière de coder, l&#8217;indentation n&#8217;est pas un luxe.<strong><br />
</strong></li>
<li><strong>Nommez vos blocs de façon sémantique.</strong> &laquo;&nbsp;menu_left&nbsp;&raquo; ou &laquo;&nbsp;content_right&nbsp;&raquo; sont souvent utilisés à tort car trop spécifiques : <a href="http://www.3point7designs.com/blog/2006/11/15/the-symantic-div-id-class-and-span/" target="_blank">préférez &laquo;&nbsp;sidebar&nbsp;&raquo; et &laquo;&nbsp;content&nbsp;&raquo;</a>.<br />
<strong>Conseil pratique :</strong> pour mieux vous repérer dans votre structure, vous pouvez suffixer vos balises fermantes par un commentaire. Ex. : &lt;/div&gt;&lt;!&#8211; #content &#8211;&gt;</li>
<li>Retournez à votre image et <strong>optimisez le format de vos découpes</strong> comme suit : gif (ou png 8 bit) pour les pictogrammes et aplats, jpeg pour les images riches, png transparent 32 bit pour les images à opacité variable.</li>
<li>Exportez toutes vos découpes dans un sous-dossier.</li>
<li>Très important : <a href="http://www.css4design.com/blog/5-reset-css-a-la-loupe-pour-une-remise-a-zero-des-valeurs-par-defaut-des-navigateurs" target="_blank">incluez un reset css</a> dans le header de votre page html.</li>
<li>Utilisez la grille et vos notes pour définir la taille de vos blocs dans une feuille de style séparée.</li>
<li><strong>Remplacez les textes</strong> n&#8217;utilisant pas de polices standard avec la <strong>technique de <a href="http://css-tricks.com/nine-techniques-for-css-image-replacement/" target="_blank">l&#8217;image replacement</a></strong>.</li>
</ol>
<p>Voilà, votre design tient debout dans sa forme la plus basique. Vous pouvez attaquer les détails du menu, la typographie, les formulaires&#8230;</p>
<blockquote><p>Et vous, comment voyez-vous ces étapes ? Quels conseils donner à un débutant pour accélérer le process de découpage ?</p></blockquote>
<h4>À lire sur le même sujet :</h4>
<p><a title="Lien permanent vers Coder en CSS plus rapidement,  plus intelligemment" rel="bookmark" href="/blog/coder-en-css-plus-rapidement-plus-intelligemment/">Coder en CSS plus rapidement, plus intelligemment</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lunaweb.fr/blog/10-etapes-pour-reussir-le-decoupage-dun-design-web/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Coder en CSS plus rapidement, plus intelligemment</title>
		<link>http://www.lunaweb.fr/blog/coder-en-css-plus-rapidement-plus-intelligemment/</link>
		<comments>http://www.lunaweb.fr/blog/coder-en-css-plus-rapidement-plus-intelligemment/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 15:41:47 +0000</pubDate>
		<dc:creator>Kaelig</dc:creator>
				<category><![CDATA[Intégration]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Textmate]]></category>

		<guid isPermaLink="false">http://demo.lunaweb.fr:4444/utf8/lunaweb/blog/?p=4</guid>
		<description><![CDATA[Lors de la conception de sites assez conséquents, il est intéressant de jeter un coup d&#8217;œil à ce qu&#8217;il est possible de faire afin d&#8217;optimiser son rendement en intégration. Après avoir testé en profondeur plusieurs solutions (dont le très bon Blueprint CSS), j&#8217;ai retenu 2 solutions qui me font gagner un temps fou et me [...]]]></description>
			<content:encoded><![CDATA[<img class='authorgravatar' src='http://www.gravatar.com/avatar.php?gravatar_id=90125d640eef203da48fcf5e7b4b6315&amp;default=http://use.perl.org/images/pix.gif' alt='No Gravatar' width='60' height='60' /><p>Lors de la conception de sites assez conséquents, il est intéressant de jeter un coup d&#8217;œil à ce qu&#8217;il est possible de faire afin d&#8217;optimiser son rendement en intégration. Après avoir testé en profondeur plusieurs solutions (dont le très bon Blueprint CSS), j&#8217;ai retenu 2 solutions qui me font gagner un temps fou et me permettent de me concentrer sur l&#8217;aspect créatif des projets que j&#8217;intègre.</p>
<p><a href="http://www.lunaweb.fr/blog/coder-en-css-plus-rapidement-plus-intelligemment/"><img src="http://www.lunaweb.fr/blog/wp-content/uploads/2009/04/boldcss.jpg" alt="CSS Intelligent" title="CSS Intelligent" class="alignnone size-full wp-image-1089" /></a><br />
<span id="more-4"></span></p>
<h3>Gagner en productivité</h3>
<p>Premièrement, si comme moi vous codez sous <a href="http://macromates.com">Textmate</a>, je vous conseille le très bon bundle de chez <a href="http://minimaldesign.net">Minimal Design</a> : <a href="http://minimaldesign.net/downloads/tools/textmate-css-bundle">Textmate CSS Bundle</a>.</p>
<p>Sur le principe des &laquo;&nbsp;snippets&nbsp;&raquo;, accédez aux propriétés CSS les plus communes en tappant ses initiales.</p>
<p>Exemple : <kbd>lstn</kbd> + <kbd>⇥</kbd><br />
Donnera : list-style-type: none;</p>
<p>Le gain de temps lors de la construction de vos éléments est incroyable. Personnellement je ne pourrai plus me passer de cet outil.</p>
<h3>Vers un CSS &laquo;&nbsp;intelligent&nbsp;&raquo;</h3>
<p>Ensuite, nous avons tous eu l&#8217;expérience suivante : les desiderata du client qui varient en cours de production (la femme du dg &laquo;&nbsp;préfère le jaune&nbsp;&raquo; et il ne veut rien entendre après des heures d&#8217;explication laborieuse). Pour faciliter la propagation de changements &laquo;&nbsp;site-wide&nbsp;&raquo;, nous avons plusieurs solutions :</p>
<ol>
<li>La bonne vieille technique du &laquo;&nbsp;Rechercher / Remplacer&nbsp;&raquo; (parfois trop &laquo;&nbsp;bourrin&nbsp;&raquo;, ou pas assez)</li>
<li>Coder le style en dur dans la source html, il l&#8217;aura voulu son jaune (quick&#8217;n'dirty)</li>
<li>Se baser sur un framework CSS dynamique, permettant d&#8217;attribuer des variables (de la couleur dominante à l&#8217;épaisseur de la bordure des champs de formulaire)</li>
</ol>
<p>Je trouve que le grand point faible du CSS est que ce langage ne permet pas la réutilisation de classes ou de constantes. Même en optimisant son code on produira toujours de l&#8217;excédent, du redondant. Certains intégrateurs s&#8217;acharnent avec minutie à factoriser les propriétés, à optimiser les sélecteurs&#8230; Je pense que c&#8217;est une perte de temps. La machine doit être là pour épauler le créatif, pas l&#8217;inverse.</p>
<p>Avec <a href="http://retired.haveamint.com/archive/2008/05/30/check_out_css_cacheer">CSS Cacheer</a>, un préprocesseur php qui traite vos feuilles de style, vous accédez à de nombreuses fonctionnalités qui révolutionneront votre manière de coder :</p>
<h4>Les constantes</h4>
<p>Voici une partie des constantes que je déclare en début de css :</p>
<pre class="brush: css;">
@constants
{
 ma_couleur: #3D7017;
 links_color: #FF752D;
 grid: 950; /* largeur de la grille */
 sidebar: 7; /* nombre de colonnes  pour la barre latérale */
 content: 18; /* nombre de colonnes  pour le contenu */
 gutter: 10; /* marge entre les colonnes */
 body_color: #121;
 headers_text: &quot;Lucida Grande&quot;, &quot;Lucida Sans Unicode&quot;, Arial, Helvetica, sans-serif;
 body_text: Georgia, Times, &quot;Times new roman&quot;, serif;
}
</pre>
<p>Appelables ainsi :</p>
<pre class="brush: css;">
h1 {
 font-family: const(headers_text);
 color: const(ma_couleur);
}
</pre>
<h4>Réutilisez vos classes !</h4>
<p>Je veux que mon élément (&nbsp;&raquo;.lien&nbsp;&raquo;) reprenne toutes les propriétés d&#8217;un autre élément (&nbsp;&raquo;.bouton&nbsp;&raquo;), sans avoir à les saisir à nouveau ni toucher à mon code html:</p>
<pre class="brush: css;">
.lien {
 class: bouton; /* je reprends les propriétés des éléments .bouton */
 border-width: 3px; /* mais avec une bordure de 3 pixels */
}
</pre>
<h4>Alignez vos éléments facilement</h4>
<p>Le système de grille génère à la volée un background reprenant des valeurs comme &laquo;&nbsp;nombre de colonnes&nbsp;&raquo;, &laquo;&nbsp;largeur d&#8217;une colonne&nbsp;&raquo;, &laquo;&nbsp;goutière&nbsp;&raquo; (comprenez &laquo;&nbsp;espace entre les colonnes&nbsp;&raquo;) et &laquo;&nbsp;hauteur de ligne&nbsp;&raquo; (baseline). L&#8217;intégralité de son fonctionnement est expliqué en vidéo <a title="Introduction à CSS Scaffold" href="http://anthonyshort.com.au/blog/comments/video-an-introduction-to-csscaffold/">sur le blog d&#8217;Anthony Short</a>.</p>
<h4>Les sélecteurs imbriqués</h4>
<p>Cette fonction vous coupera probablement le souffle. Un petit bout de code vaudra mieux qu&#8217;une longue explication :</p>
<pre class="brush: css;">
ul#exemple {
 list-style-type: none;
 line-height: 1.25em;
 &gt; li {
 margin-top: 14px;
 h3 {
 font-size: 1.3em;
 font-weight: bold;
 margin-bottom: 0;
 }
 p {
 color: #7F9280;
 margin-bottom: 0;
 }
 }
}
</pre>
<p>Oui vous avez bien lu ! L&#8217;élément &laquo;&nbsp;h3&#8243; qui appartient à l&#8217;élément &laquo;&nbsp;li&nbsp;&raquo; qui lui-même appartient à l&#8217;élément &laquo;&nbsp;ul#exemple&nbsp;&raquo; sont imbriqués !</p>
<p>CSS Scaffold reconnaît les relations d&#8217;appartenances et nous servira le css qui suit :</p>
<pre class="brush: css;">ul#exemple {
 list-style-type: none;
 line-height: 1.25em;
}
ul#exemple &gt; li {
 margin-top: 14px;
}
ul#exemple &gt; li h3 {
 font-size: 1.3em;
 font-weight: bold;
 margin-bottom: 0;
}
ul#exemple &gt; li p {
 color: #7F9280;
 margin-bottom: 0;
}</pre>
<h4>Factorisation automatique</h4>
<p>Si plusieurs éléments ont les mêmes propriétés, ils seront regroupés pour optimiser le poids total de votre fichier.</p>
<h4>Minification, mise en cache &#038; compression gzip</h4>
<p>Une fois passé à la moulinette, votre code tient en une seule ligne, mis en cache et gzippé. Ainsi votre css est optimisée et vos pages sont plus rapides à charger.</p>
<h3>Et bien plus encore&#8230;</h3>
<p>Faire une liste de toutes les fonctionnalités du framework aurait gâché votre plaisir de les découvrir par vous même. Malgré tout, j&#8217;ai apporté quelques modifications et améliorations aux plugins de <a href="http://retired.haveamint.com/archive/2008/05/30/check_out_css_cacheer">CSS Cacheer</a>, et je tenais à les partager :</p>
<p style="text-align: center;"><a style="font-size: 20px" href="http://www.lunaweb.fr/blog/wp-content/uploads/2009/03/plugins.zip">Plugins CSS Cacheer</a><br />
<span class="quiet">(à extraire dans le dossier css-cacheer/plugins/ de votre installation)</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lunaweb.fr/blog/coder-en-css-plus-rapidement-plus-intelligemment/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
