<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.pabloprieto.net/index.php/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Pablo Prieto - Blog - css</title>
  <link>http://blog.pabloprieto.net/index.php/</link>
  <description>&quot;Faire des sites web c'est pas facile tous les jours&quot;</description>
  <language>fr</language>
  <pubDate>Wed, 18 Aug 2010 15:35:35 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>13 règles pour accélérer son site web</title>
    <link>http://blog.pabloprieto.net/index.php/post/2007/08/01/13-regles-pour-accelerer-son-site-web</link>
    <guid isPermaLink="false">urn:md5:e331a353c1e9adbd869edeea72e4ced0</guid>
    <pubDate>Wed, 01 Aug 2007 11:24:00 +0200</pubDate>
    <dc:creator>Pab.</dc:creator>
        <category>Conception HTML et CSS</category>
        <category>css</category><category>html</category><category>javascript</category><category>optimisation</category><category>performance</category><category>yahoo</category><category>yslow</category>    
    <description>    &lt;p&gt;Yahoo nous propose &lt;a href=&quot;http://developer.yahoo.com/performance/&quot; hreflang=&quot;en&quot;&gt;sur cette page&lt;/a&gt; 13 règles pour optimiser et accélérer l'affichage de son site.&lt;/p&gt;


&lt;p&gt;En résumé et en français&amp;nbsp;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Minimiser le nombre de requêtes HTTP&lt;/li&gt;
&lt;li&gt;Utiliser un &lt;a href=&quot;http://en.wikipedia.org/wiki/Content_Delivery_Network&quot; hreflang=&quot;en&quot;&gt;réseau de diffusion de contenu&lt;/a&gt; (&quot;Content Delivery Network&quot;)&lt;/li&gt;
&lt;li&gt;Configurer un en-tête d'expiration pour tous les composants images, scripts et styles&lt;/li&gt;
&lt;li&gt;Utiliser la compression Gzip&lt;/li&gt;
&lt;li&gt;Placer les styles CSS dans la partie head de la page&lt;/li&gt;
&lt;li&gt;Placer les scripts en bas de page&lt;/li&gt;
&lt;li&gt;Eviter les &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ms537634.aspx&quot; hreflang=&quot;en&quot;&gt;expressions javascript&lt;/a&gt; dans les feuilles de styles&lt;/li&gt;
&lt;li&gt;Utiliser des fichiers externes pour les scripts et les styles CSS&lt;/li&gt;
&lt;li&gt;Réduire le nombre de résolutions DNS&lt;/li&gt;
&lt;li&gt;Compresser le code Javascript (avec des outils comme &lt;a href=&quot;http://www.crockford.com/javascript/jsmin.html&quot; hreflang=&quot;en&quot;&gt;JSMin&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Eviter les redirections&lt;/li&gt;
&lt;li&gt;Retirer les scripts en double (visiblement ça arrive souvent quand on travaille en équipe...)&lt;/li&gt;
&lt;li&gt;Configurer correctement les &quot;entity tags&quot; si besoin&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chaque règle est très bien expliquée et documentée, et Yahoo nous fournit même &lt;a href=&quot;http://developer.yahoo.com/yslow/&quot; hreflang=&quot;en&quot;&gt;une extension&lt;/a&gt; pour &lt;a href=&quot;http://www.getfirebug.com/&quot; hreflang=&quot;en&quot;&gt;Firebug&lt;/a&gt; permettant d'analyser la page en cours vis-à-vis de chacune de ces règles.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.pabloprieto.net/index.php/post/2007/08/01/13-regles-pour-accelerer-son-site-web#comment-form</comments>
      <wfw:comment>http://blog.pabloprieto.net/index.php/post/2007/08/01/13-regles-pour-accelerer-son-site-web#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.pabloprieto.net/index.php/feed/rss2/comments/28</wfw:commentRss>
      </item>
    
  <item>
    <title>Pourquoi ai-je un rendu différent entre Firefox Windows et Firefox Mac ?</title>
    <link>http://blog.pabloprieto.net/index.php/post/2007/06/13/Pourquoi-ai-je-un-rendu-different-entre-Firefox-Windows-et-Firefox-Mac</link>
    <guid isPermaLink="false">urn:md5:8eacda8d7fb3b36472a44ec0a385785d</guid>
    <pubDate>Wed, 13 Jun 2007 14:18:00 +0200</pubDate>
    <dc:creator>Pab.</dc:creator>
        <category>Conception HTML et CSS</category>
        <category>css</category><category>firefox</category><category>line-height</category><category>mac</category><category>windows</category>    
    <description>&lt;p&gt;Vous l'avez peut-être déjà constaté, il arrive parfois que le rendu d'une page soit différent entre Firefox sous Windows et son homologue sous Mac. Certains en concluent un peu trop vite à un bug du moteur gecko ou encore que celui-ci serait différent entre les 2 plates-formes. Heureusement il n'en est rien, il s'agit bel et bien du même moteur. Alors d'ou vient cette différence&amp;nbsp;?&lt;/p&gt;    &lt;p&gt;Voici un exemple extrêmement simple, un paragraphe de texte de 300 pixels de large&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot;
	&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&amp;gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;fr&amp;quot; lang=&amp;quot;fr&amp;quot;&amp;gt;
&amp;lt;head&amp;gt;
	&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;/&amp;gt;
	&amp;lt;title&amp;gt;untitled&amp;lt;/title&amp;gt;	
	&amp;lt;style type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;
		p{width:300px; background:#EEE;}
	&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;	
	&amp;lt;p&amp;gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, (...) anim id est laborum.&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Et voici ce que l'on obtient sous Firefox Mac (à gauche) et Firefox Windows (à droite)&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/firefox_lineheight_1.png&quot; alt=&quot;firefox_lineheight_1.png&quot; /&gt;&lt;/p&gt;


&lt;p&gt;On le voit bien ici, &lt;strong&gt;la différence vient tout simplement d'une hauteur de ligne différente&lt;/strong&gt;. On n'y pense jamais assez, mais la propriété line-height est fixée par défaut à &quot;normal&quot; lorsque le concepteur ne la précise pas, laissant alors libre le navigateur de calculer une valeur &quot;raisonnable&quot; pour celle-ci. Cette valeur varie selon les systèmes d'exploitation, en fonction notamment de la résolution logique.&lt;/p&gt;


&lt;p&gt;Voici l'extrait de la &lt;a href=&quot;http://www.w3.org/TR/REC-CSS2/visudet.html#line-height&quot; hreflang=&quot;en&quot;&gt;norme CSS 2&lt;/a&gt; concernant la valeur &quot;normal&quot;&amp;nbsp;:&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;normal&lt;/strong&gt;&lt;br /&gt;
Tells user agents to set the computed value to a &quot;reasonable&quot; value based on the font size of the element. The value has the same meaning as &amp;lt;number&amp;gt;. We recommend a computed value for 'normal' between 1.0 to 1.2.&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;Voici maintenant la même page avec une hauteur de ligne fixée à 1.2&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/firefox_lineheight_2.png&quot; alt=&quot;firefox_lineheight_2.png&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Le rendu est maintenant uniforme sur l'ensemble des navigateurs, et conforme au résultat attendu.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Conclusion&amp;nbsp;: pensez à fixer vos hauteurs de ligne !&lt;/strong&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.pabloprieto.net/index.php/post/2007/06/13/Pourquoi-ai-je-un-rendu-different-entre-Firefox-Windows-et-Firefox-Mac#comment-form</comments>
      <wfw:comment>http://blog.pabloprieto.net/index.php/post/2007/06/13/Pourquoi-ai-je-un-rendu-different-entre-Firefox-Windows-et-Firefox-Mac#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.pabloprieto.net/index.php/feed/rss2/comments/25</wfw:commentRss>
      </item>
    
  <item>
    <title>Apollo, WebKit et Windows</title>
    <link>http://blog.pabloprieto.net/index.php/post/2007/03/19/Apollo-WebKit-et-Windows</link>
    <guid isPermaLink="false">urn:md5:4cf77b920af2ea7b924b18c6d9624eaa</guid>
    <pubDate>Mon, 19 Mar 2007 17:37:00 +0100</pubDate>
    <dc:creator>Pab.</dc:creator>
        <category>Conception HTML et CSS</category>
        <category>apollo</category><category>css</category><category>flash</category><category>html</category><category>safari</category><category>scout</category><category>webkit</category><category>windows</category>    
    <description>    &lt;p&gt;&lt;a href=&quot;http://labs.adobe.com/wiki/index.php/Apollo&quot; hreflang=&quot;en&quot;&gt;Apollo&lt;/a&gt; vient de sortir aujourd'hui en version alpha sur &lt;a href=&quot;http://labs.adobe.com/&quot; hreflang=&quot;en&quot;&gt;le labs d'Adobe&lt;/a&gt;. En très bref, Apollo permet de créer des applications Internet riches (RIA) multi-plateformes en mixant Flash, HTML, CSS et JavaScript.&lt;/p&gt;


&lt;p&gt;Une bonne nouvelle c'est que Apollo utilise &lt;a href=&quot;http://webkit.org/&quot; hreflang=&quot;en&quot;&gt;WebKit&lt;/a&gt; pour le rendu HTML/CSS, c'est à dire le même moteur de rendu que Safari. Apollo permet donc d'avoir le moteur WebKit disponible sous Windows, ce qui est plutôt intéressant pour les designers qui veulent tester leurs pages sans avoir de mac sous la main...&lt;/p&gt;


&lt;p&gt;Et justement, Adobe fournit &lt;a href=&quot;http://labs.adobe.com/wiki/index.php/Apollo:Applications:Samples&quot; hreflang=&quot;en&quot;&gt;dans ses exemples&lt;/a&gt;, une application dénommée Scout et qui permet d'afficher n'importe quelle page web au sein d'Apollo. Un bon plan pour vérifier le rendu d'un design html/css (presque) comme sous Safari ;) Grand luxe, Scout permet même d'analyser le DOM, le code source, ... un peu comme &lt;a href=&quot;http://www.getfirebug.com/&quot; hreflang=&quot;en&quot;&gt;Firebug&lt;/a&gt; pour Firefox.&lt;/p&gt;


&lt;p&gt;Je ne pense pas que la version de WebKit utilisée soit exactement la même que celle de Safari mais les différences de rendus sont à priori négligeables. Le moteur JavaScript en revanche n'est pas le même, donc prudence là dessus.&lt;/p&gt;


&lt;p&gt;Pour utiliser Scout, &lt;a href=&quot;http://www.adobe.com/go/getapollo&quot; hreflang=&quot;en&quot;&gt;installez d'abord Apollo&lt;/a&gt; puis télécharger ensuite Scout à partir de &lt;a href=&quot;http://labs.adobe.com/wiki/index.php/Apollo:Applications:Samples&quot; hreflang=&quot;en&quot;&gt;cette page&lt;/a&gt; (l'enregistrement sur le site d'Adobe est nécessaire).&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/scout_apollo.png&quot; alt=&quot;Scout&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.pabloprieto.net/index.php/post/2007/03/19/Apollo-WebKit-et-Windows#comment-form</comments>
      <wfw:comment>http://blog.pabloprieto.net/index.php/post/2007/03/19/Apollo-WebKit-et-Windows#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.pabloprieto.net/index.php/feed/rss2/comments/19</wfw:commentRss>
      </item>
    
  <item>
    <title>Elements en ligne et marges internes</title>
    <link>http://blog.pabloprieto.net/index.php/post/2006/12/18/Elements-en-ligne-et-marges-internes</link>
    <guid isPermaLink="false">urn:md5:c48a8c5263844f49a09c2cbeac84bf0d</guid>
    <pubDate>Mon, 18 Dec 2006 13:59:00 +0100</pubDate>
    <dc:creator>Pab.</dc:creator>
        <category>Conception HTML et CSS</category>
        <category>css</category>    
    <description>&lt;p&gt;Ou comment bien appréhender la mise en forme des éléments en ligne et créer de jolis boutons...&lt;/p&gt;    &lt;h3&gt;La gestion des marges internes&lt;/h3&gt;


&lt;p&gt;Voici le code html qui va nous servir d'exemple&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot;
&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
	&amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot; /&amp;gt;
	&amp;lt;title&amp;gt;test1&amp;lt;/title&amp;gt;
	
	&amp;lt;style type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;
	
		body{
			margin:1em;
			padding:0;
			border:1px solid #F00;
		}
		
		p{
			margin:2em 0;
			background:#CCC;
		}
		
		strong{
			padding:10px;
			border:1px solid #00F;
		}
		
		a{
			padding:10px;
			border:1px dotted #F00;
			color:#00F;
		}
		
	&amp;lt;/style&amp;gt;	
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
	
	&amp;lt;p&amp;gt;
		Lorem ipsum &amp;lt;strong&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;dolor&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt; sit amet
	&amp;lt;/p&amp;gt;
	
&amp;lt;/body&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Cet exemple contient donc un paragraphe, dans lequel se trouve une emphase (strong) qui elle-même contient un lien, soit deux éléments en ligne imbriqués. En appliquant comme ici un padding de 10px sur l'élément strong et sur l'élément a, voici ce que l'on obtient sous Firefox&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/inline/inline-1.png&quot; alt=&quot;Résultat sous Firefox&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Et voici la même page sous Internet Explorer (6 et 7, même combat)&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/inline/inline-2.png&quot; alt=&quot;Résultat sous IE&quot; /&gt;&lt;/p&gt;


&lt;p&gt;On constate ainsi plusieurs choses&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un padding appliqué à un élément en ligne ne repousse pas les boites voisines (y compris les blocs parents)&lt;/li&gt;
&lt;li&gt;Firefox (idem pour Opera et Safari) respecte ce principe, et donc les padding verticaux sur des éléments en ligne imbriqués &lt;strong&gt;se superposent&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Sur IE au contraire &lt;strong&gt;ils s'ajoutent&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Sur IE, un élément en ligne ne peut pas s'afficher en dehors d'un bloc parent possédant &lt;a href=&quot;http://www.test.blog-and-blues.org/haslayout/trad_temp.html&quot; hreflang=&quot;fr&quot; title=&quot;Le concept de hasLayout dans IE/Win &quot;&gt;le layout&lt;/a&gt; (ici le body, entouré en rouge)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ce dernier point peut être vérifié en forçant le layout sur le paragraphe conteneur (avec une propriété zoom:1), voici alors ce que l'on obtient&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/inline/inline-3.png&quot; alt=&quot;Résultat sous IE, attention au layout !&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Alors comment faire&amp;nbsp;?&lt;/h3&gt;


&lt;p&gt;Cette différence de rendu est plutôt contraignante et ne peux pas être résolue sans utiliser des styles différents pour IE et le reste du monde. Pas le choix, il va falloir annuler pour IE les paddings verticaux sur l'élément strong, pour éviter qu'ils ne s'ajoutent à ceux du lien. Encore une fois, les &lt;a href=&quot;http://www.blog-and-blues.org/articles/Les_syntaxes_de_commentaires_conditionnels_pour_IE_Windows&quot; hreflang=&quot;fr&quot; title=&quot;La syntaxe des commentaires conditionnels&quot;&gt;commentaires conditionnels&lt;/a&gt; sont à privilégier pour ce genre de chose&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;!--[if lte IE 7]&amp;gt;
&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;		
	strong{
		padding-top:0;
		padding-bottom:0;
	}
&amp;lt;/style&amp;gt;
&amp;lt;![endif]--&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Reste ensuite le problème du débordement, que l'on va régler en fixant la hauteur de ligne au niveau de l'élément strong, dans le code CSS principal. Vous pouvez calculer cette hauteur en additionnant la hauteur de ligne du lien + ses paddings haut et bas + un espace supplémentaire pour que le texte au dessus ou en dessous ne soit pas trop collé à l'élément.&lt;/p&gt;

&lt;pre&gt;
strong{
	line-height:4em;
}
&lt;/pre&gt;


&lt;p&gt;On assure ainsi que la boite crée par l'élément strong sera toujours à l'intérieur du bloc parent et que les lignes du dessous ne chevaucheront pas cet élément. Le résultat est maintenant identique sur tous les navigateurs&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/inline/inline-4.png&quot; alt=&quot;Le résultat final&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Mise en pratique&lt;/h3&gt;


&lt;p&gt;Une application assez courante est la création de boutons, à partir d'un lien, d'un span et de 2 images de fond&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/inline/bouton-final.png&quot; alt=&quot;Le bouton final&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Voici le code html nécessaire&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;p&amp;gt;
  Cliquez sur ce bouton :  &amp;lt;a class=&amp;quot;bouton&amp;quot;&amp;gt;&amp;lt;span&amp;gt;Click me !&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/p&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Et ensuite le code CSS correspondant&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
a.bouton{
	background:url(&amp;quot;bouton-left.png&amp;quot;) no-repeat center left;
	padding:12px 0 12px 20px;
	color:#666;
	line-height:4em;
}
a.bouton span{
	background:url(&amp;quot;bouton-right.png&amp;quot;) no-repeat center right;
	padding:12px 20px 12px 0;
}
a.bouton:hover{
	color:#000;
}
&lt;/pre&gt;


&lt;p&gt;Et pour IE&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
a.bouton{
	padding-top:0;
	padding-bottom:0;
}
&lt;/pre&gt;


&lt;p&gt;Et voilà le travail, vous pouvez &lt;a href=&quot;http://blog.pabloprieto.net/tests/bouton.html&quot; hreflang=&quot;fr&quot;&gt;voir le résultat en ligne&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.pabloprieto.net/index.php/post/2006/12/18/Elements-en-ligne-et-marges-internes#comment-form</comments>
      <wfw:comment>http://blog.pabloprieto.net/index.php/post/2006/12/18/Elements-en-ligne-et-marges-internes#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.pabloprieto.net/index.php/feed/rss2/comments/13</wfw:commentRss>
      </item>
    
  <item>
    <title>Les bugs d'IE7</title>
    <link>http://blog.pabloprieto.net/index.php/post/2006/11/06/Les-bugs-dIE7</link>
    <guid isPermaLink="false">urn:md5:3eb58903b823c942c44b09fbc2753882</guid>
    <pubDate>Mon, 06 Nov 2006 10:05:00 +0100</pubDate>
    <dc:creator>Pab.</dc:creator>
        <category>Conception HTML et CSS</category>
        <category>css</category><category>internet explorer</category>    
    <description>    Il n'aura pas fallu longtemps avant de découvrir qu'IE7 avait lui aussi quelques petits problèmes d'interprétation, notamment en matière de DOM et CSS... plusieurs sites recensent déjà les bugs spécifiques à cette version :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://www.gtalbot.org/BrowserBugsSection/MSIE7Bugs/&quot;&gt;http://www.gtalbot.org/BrowserBugsSection/MSIE7Bugs/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://css-discuss.incutio.com/?page=IE7&quot;&gt;http://css-discuss.incutio.com/?page=IE7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://www.quirksmode.org/bugreports/archives/explorer_7_beta_2/index.html&quot;&gt;http://www.quirksmode.org/bugreports/archives/explorer_7_beta_2/index.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;Ces quelques liens sont donc à garder sous le coude en cas de désaccord profond entre IE7 et les autres.&lt;br /&gt;&lt;br /&gt;Alors attention, IE7 reste néanmoins une grande avancée par rapport à son prédécesseur, et certain de ces bugs CSS listés dans cette page ne sont pas très critiques, c'est à dire qu'on a peu de chance de les croiser tous les jours (à la différence d'un peekaboo bug par exemple sous IE6). Bref si vous voulez mon avis, &lt;strong&gt;IE7 est un bon navigateur&lt;/strong&gt; même si il a ses limites, comme les autres ;)&lt;br /&gt;</description>
    
    
    
          <comments>http://blog.pabloprieto.net/index.php/post/2006/11/06/Les-bugs-dIE7#comment-form</comments>
      <wfw:comment>http://blog.pabloprieto.net/index.php/post/2006/11/06/Les-bugs-dIE7#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.pabloprieto.net/index.php/feed/rss2/comments/12</wfw:commentRss>
      </item>
    
  <item>
    <title>La fusion des marges, partie 2</title>
    <link>http://blog.pabloprieto.net/index.php/post/2006/10/12/sdfsdfsdfdsfdsf</link>
    <guid isPermaLink="false">urn:md5:304b6a0b920e40308b60062278ea646d</guid>
    <pubDate>Thu, 12 Oct 2006 11:45:00 +0200</pubDate>
    <dc:creator>Pab.</dc:creator>
        <category>Conception HTML et CSS</category>
        <category>css</category>    
    <description>&lt;p&gt;La suite logique de la &lt;a hreflang=&quot;fr&quot; href=&quot;http://blog.pabloprieto.net/index.php/post/2006/08/11/La-fusion-des-marges&quot;&gt;première partie&lt;/a&gt;, consacrée cette-fois au cas des blocs flottants&lt;/p&gt;    &lt;h3&gt;Le cas des blocs flottants&lt;/h3&gt;
&lt;p&gt;Les blocs flottants (float:left ou float:right) ne fusionnent &lt;strong&gt;jamais&lt;/strong&gt; leur marges avec aucun autre bloc. Ainsi l'exemple suivant illustre ce principe (les paragraphes ont une marge haut et bas par défaut de 1em) :&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;pre&gt;&amp;lt;div id=&quot;conteneur&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;p id=&quot;flottant&quot;&amp;gt;Lorem ipsum dolor sit amet...&amp;lt;/p&amp;gt;&lt;br /&gt;  &amp;lt;p&amp;gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. &lt;br /&gt;  Curabitur posuere neque mattis dolor. &lt;br /&gt;  In hac habitasse platea dictumst.&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;pre&gt;#conteneur{&amp;nbsp; &lt;br /&gt;background: #DDD;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#flottant{&amp;nbsp; &lt;br /&gt;float: left;&amp;nbsp; &lt;br /&gt;background: #666;&lt;br /&gt;} &lt;/pre&gt;
&lt;p&gt;ceci produira l'affichage suivant :&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://blog.pabloprieto.net/public/fusion06.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Malheureusement pour nous, Internet Explorer (y compris la version 7, dommage...) ignore totalement cette exception à la règle : &lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://blog.pabloprieto.net/public/fusion07.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Attention donc à cette différence de rendu entre Internet Explorer et les autres navigateurs (y compris en mode de rendu strict). Pour éviter cela, le mieux est d'harmoniser l'affichage en supprimant les marges du bloc flottant pour tous les navigateurs.&lt;/p&gt;
&lt;h4&gt;La proprieté clear&lt;/h4&gt;
&lt;p&gt;Ajoutons maintenant un troisième paragraphe doté de la proprieté clear:both :&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://blog.pabloprieto.net/public/fusion08.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ici sous Firefox, on constate que l'espace entre le bloc flottant et le bloc clear est de 1em, on pourrait donc croire que leur marges fusionnent. Or il n'en est rien, cet espace est uniquement du à la marge du bloc flottant. Les marges du bloc clear n'affectent en rien le bloc flottant, on le constate si l'on applique une marge de 3em au bloc clear :&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://blog.pabloprieto.net/public/fusion09.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L'espace entre celui-ci et le bloc flottant est toujours de 1em. La marge de 3em du bloc clear servira à créer un espace uniquement avec les blocs suivants et précédents dans le flux de page, ici en particulier avec le 2e paragraphe.&lt;/p&gt;
A ce moment, le comportement d'Internet Explorer est un peu étrange :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sous IE6, le deuxième paragraphe &quot;disparait&quot; si le bloc flottant touche le bloc clear, c'est le fameux &lt;a hreflang=&quot;en&quot; href=&quot;http://www.positioniseverything.net/explorer/peekaboo.html&quot;&gt;peekaboo bug&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Sous IE6 et 7, selon la hauteur du deuxième paragraphe, la marge du bloc flottant pousse le bloc clear ou pas :&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt=&quot;&quot; src=&quot;http://blog.pabloprieto.net/public/fusion10.png&quot; /&gt; &lt;br /&gt;&lt;img alt=&quot;&quot; src=&quot;http://blog.pabloprieto.net/public/fusion11.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Pour le peekaboo bug, la solution est simple et connue, il faut dotter le bloc conteneur &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.test.blog-and-blues.org/haslayout/trad_temp.html&quot;&gt;d'un layout&lt;/a&gt;, avec un height:1% par exemple.&lt;br /&gt;&lt;br /&gt;Pour le reste il s'agit du même souci que plus haut, la solution encore une fois consiste à harmoniser l'affichage pour tous les navigateurs en fixant les marges du bloc flottant à 0.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
    
    
    
          <comments>http://blog.pabloprieto.net/index.php/post/2006/10/12/sdfsdfsdfdsfdsf#comment-form</comments>
      <wfw:comment>http://blog.pabloprieto.net/index.php/post/2006/10/12/sdfsdfsdfdsfdsf#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.pabloprieto.net/index.php/feed/rss2/comments/10</wfw:commentRss>
      </item>
    
  <item>
    <title>La fusion des marges, partie 1</title>
    <link>http://blog.pabloprieto.net/index.php/post/2006/08/11/La-fusion-des-marges</link>
    <guid isPermaLink="false">urn:md5:7683cd1dfa3c10cbd7ef2fd869badfee</guid>
    <pubDate>Thu, 17 Aug 2006 11:55:00 +0200</pubDate>
    <dc:creator>Pab.</dc:creator>
        <category>Conception HTML et CSS</category>
        <category>css</category>    
    <description>&lt;p&gt;La règle de fusion des marges en CSS, souvent mal connue, est la source de beaucoup d'incompréhensions de la part des concepteurs web. Pourtant, bien maîtriser cette notion permet avant tout de bien comprendre et maîtriser le résultat de son design CSS.&lt;/p&gt;    &lt;p&gt;La règle de base de la fusion des marges est la suivante&amp;nbsp;: &lt;strong&gt;2 marges consécutives fusionnent si aucune marge interne (padding) ou bordure (border) ne s'interpose entre les deux&lt;/strong&gt;.&lt;/p&gt;


&lt;p&gt;Il faut noter que cette règle ne concerne que les marges &lt;strong&gt;verticales&lt;/strong&gt; (haut et bas donc) et en aucun cas les marges horizontales.&lt;/p&gt;


&lt;p&gt;Pour la partie théorique, je vous renvoie à &lt;a href=&quot;http://www.w3.org/TR/CSS21/box.html#collapsing-margins&quot; hreflang=&quot;en&quot;&gt;l'inévitable site du W3C&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Hop, passons maintenant à la pratique.&lt;/p&gt;


&lt;h3&gt;Un premier exemple de base&lt;/h3&gt;


&lt;p&gt;Voici deux paragraphes l'un à la suite de l'autre, avec chacun une marge haut et bas de 10 pixels&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
p{ margin:1em 0;}
&lt;/pre&gt;

&lt;pre&gt;
&amp;lt;p&amp;gt;Lorem ipsum&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Dolor sit amet&amp;lt;/p&amp;gt;
&lt;/pre&gt;


&lt;p&gt;L'espacement crée par les marges entre ces deux paragraphes sera de 10px. On constate bien que la marge bas du premier et la marge haut du second paragraphe fusionnent pour n'en former qu'une&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/fusion01.png&quot; alt=&quot;Fusion des marges, exemple 1&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;La fusion entre blocs de niveau différents&lt;/h3&gt;


&lt;p&gt;Entourons maintenant ces 2 paragraphe d'un élément div, lui aussi doté d'une marge&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;div id=&amp;quot;conteneur&amp;quot;&amp;gt;
  &amp;lt;p&amp;gt;Lorem ipsum&amp;lt;/p&amp;gt;
  &amp;lt;p&amp;gt;Dolor sit amet&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;

&lt;pre&gt;
#conteneur{ margin:10px 0;}
p{ margin:10px 0;}
&lt;/pre&gt;


&lt;p&gt;On pourrait s'attendre à ce que la marge des paragraphe crée un espace à l'intérieur du div. Or là encore la règle de fusion des marges s'applique entre les marges du div et celles des élements p. Le résultat sera donc le suivant&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/fusion02.png&quot; alt=&quot;Fusion des marges, exemple 2&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Appliquons à présent une bordure à l'élement conteneur&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#conteneur{ margin:10px 0; border:2px dashed #000;}
p{ margin:10px 0;}
&lt;/pre&gt;


&lt;p&gt;Comme le précise la règle, la fusion ne s'opère plus car la bordure du bloc conteneur fait obstacle entre la marge de celui-ci et celles des paragrapes. Les marges des paragraphes sont alors contenues &lt;strong&gt;à l'intérieur&lt;/strong&gt; du bloc conteneur&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/fusion03.png&quot; alt=&quot;Fusion des marges, exemple 3&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Appliquons à présent une marge interne (padding) à notre div conteneur&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#conteneur{ margin:10px 0; padding:10px;}
p{ margin:10px;}
&lt;/pre&gt;


&lt;p&gt;Là encore la règle précise que la fusion ne doit plus s'appliquer, nous allons alors nous retrouver avec un espace &lt;strong&gt;non pas de 10px mais de 20 pixels&lt;/strong&gt; (le padding du bloc conteneur + la marge du p)&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/fusion04.png&quot; alt=&quot;Fusion des marges, exemple 4&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Cette situation (plutôt fréquente) peut être gênante si l'on souhaite simplement créer un espacement de 10px, tout en gardant les marges entre les paragraphes. Pour y remedier, la solution la plus simple et la plus rapide consiste à appliquer un padding au bloc conteneur non pas de 10 mais de 1 pixel seulement&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#conteneur{ margin:10px 0; padding:1px 10px;}
p{ margin:10px 0;}
&lt;/pre&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/fusion05.png&quot; alt=&quot;Fusion des marges, exemple 5&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Et voilà le travail :) Bon, en réalité l'espacement est maintenant de 11px, mais la différence visuelle peut être considerée comme négligeable (comment ça non ?)&lt;/p&gt;


&lt;p&gt;(A suivre...)&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.pabloprieto.net/index.php/post/2006/08/11/La-fusion-des-marges#comment-form</comments>
      <wfw:comment>http://blog.pabloprieto.net/index.php/post/2006/08/11/La-fusion-des-marges#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.pabloprieto.net/index.php/feed/rss2/comments/6</wfw:commentRss>
      </item>
    
  <item>
    <title>IE6 et PNG, je t'aime moi non plus</title>
    <link>http://blog.pabloprieto.net/index.php/post/2006/08/07/IE6-et-PNG-je-taime-moi-non-plus</link>
    <guid isPermaLink="false">urn:md5:741dceef9a1fb0012abc00d2362408da</guid>
    <pubDate>Mon, 07 Aug 2006 09:54:00 +0200</pubDate>
    <dc:creator>Pab.</dc:creator>
        <category>Conception HTML et CSS</category>
        <category>css</category><category>internet explorer</category><category>png</category>    
    <description>&lt;p&gt;Malgré le bug d'IE6 empêchant l'affichage des PNG transparents (32 bits) il existe quelques solutions de contournement. Je vais essayer de rassembler dans ce billet les différents techniques utilisées, en insistant sur leur fiabilité dans la pratique, si vous décidez de les utiliser dans le cadre d'un projet professionnel.&lt;/p&gt;    &lt;h3&gt;Cas d'un PNG dans une CSS (en image de fond)&lt;/h3&gt;


&lt;p&gt;Cette technique fonctionne à 2 conditions&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;le bloc recevant l'image de fond doit être positionné &lt;strong&gt;en absolute&lt;/strong&gt; ou avoir &lt;strong&gt;ses propriétés width ou height fixées&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;l'image ne peut être &lt;strong&gt;ni répétée ni positionnée&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Voici un bloc auquel nous allons appliquer un png en image de fond&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;div id=&amp;quot;test&amp;quot;&amp;gt;	
	&amp;lt;ul&amp;gt;
		&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;Item 1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;Item 2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;Item 3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
	&amp;lt;/ul&amp;gt;		
&amp;lt;/div&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Voici ensuite le code CSS&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#test{
	width:400px;
	background: url(&amp;quot;fond.png&amp;quot;) no-repeat  0 0;
}
&lt;/pre&gt;


&lt;p&gt;Pour IE, grâce aux &lt;a href=&quot;http://www.blog-and-blues.org/articles/Les_syntaxes_de_commentaires_conditionnels_pour_IE_Windows&quot; hreflang=&quot;fr&quot;&gt;commentaires conditionnels&lt;/a&gt;, nous allons ensuite annuler l'image de fond et appliquer la propriété &lt;code&gt;filter&lt;/code&gt; à la place&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;!--[if lt IE 7]&amp;gt;
&amp;lt;style type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;
#test{
	background-image: none;
	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fond.png', sizingMethod='crop');
}
&amp;lt;/style&amp;gt;		
&amp;lt;![endif]--&amp;gt;
&lt;/pre&gt;


&lt;p&gt;la propriété sizingMethod peut recevoir comme valeur 'image', 'scale' ou 'crop'. La valeur 'scale' ajuste les dimensions de l'image à la taille du bloc, pour plus de détail je vous invite à consulter &lt;a href=&quot;http://msdn.microsoft.com/workshop/author/filter/reference/filters/alphaimageloader.asp&quot; hreflang=&quot;en&quot;&gt;la doc officielle chez Microsoft&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Bizarrement, l'url de l'image dans la propriété filter &lt;strong&gt;doit être relative à la page html&lt;/strong&gt;, et non à la feuille de style, pensez-y si les 2 fichiers ne sont pas au même niveau.&lt;/p&gt;


&lt;h4&gt;Un problème de liens...&lt;/h4&gt;


&lt;p&gt;Vous allez maintenant vous rendre compte que les liens à l'intérieur de notre bloc ne fonctionnent pas... plutôt bloquant.&lt;/p&gt;


&lt;p&gt;Pour y remédier, il faut alors rajouter la propriété &lt;code&gt;position:relative&lt;/code&gt; aux liens&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;!--[if lt IE 7]&amp;gt;
&amp;lt;style type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;
#test{
	background-image: none;
	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fond.png', sizingMethod='crop');
}	
#test a{
	position:relative;
}
&amp;lt;/style&amp;gt;		
&amp;lt;![endif]--&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Et voilà, les liens redeviennent cliquables.&lt;/p&gt;



&lt;h3&gt;Cas d'une image dans le corps de page&lt;/h3&gt;


&lt;p&gt;Ici une seule condition&amp;nbsp;: les attributs width et height de l'image doivent être fixés.&lt;/p&gt;


&lt;p&gt;Le principe consiste à remplacer l'image par un gif transparent et lui appliquer en fond le png grâce à l'attribut filter ci-dessus. Ce comportement peut être automatisé grâce à un fichier htc (à télécharger en annexe). On applique simplement ce comportement aux images, avec la propriété CSS behavior&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
img{
	behavior: url(&amp;quot;png.htc&amp;quot;);
}
&lt;/pre&gt;


&lt;p&gt;pour affiner la chose, on peut choisir de l'utiliser dans une classe&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
img.png{
	behavior: url(&amp;quot;png.htc&amp;quot;);
}
&lt;/pre&gt;

&lt;pre&gt;
&amp;lt;img src=&amp;quot;image.png&amp;quot; width=&amp;quot;100&amp;quot; height=&amp;quot;100&amp;quot; alt=&amp;quot;&amp;quot; class=&amp;quot;png&amp;quot; /&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Placez de préférence les fichiers png.htc et blank.gif au même endroit que votre page html. Ici encore, l'url du fichier htc doit être relative à la page html, et non à la feuille de style.&lt;/p&gt;


&lt;p&gt;Bien évidement, &lt;code&gt;behavior&lt;/code&gt; et &lt;code&gt;filter&lt;/code&gt; ne sont pas des propriétés valides. Encore une fois utilisez les commentaires conditionnels ;)&lt;/p&gt;


&lt;p&gt;Pour conclure, je vous conseille de rester prudent avec ces techniques sur des projets sensibles (et des clients pointilleux... ;) ), et prenez le temps de tester &quot;en conditions réelles&quot; avant de vous prononcer sur la faisabilité.&lt;/p&gt;</description>
    
          <enclosure url="http://blog.pabloprieto.net/public/iepng_burnyourbrowser.zip"
      length="6868" type="application/zip" />
    
    
          <comments>http://blog.pabloprieto.net/index.php/post/2006/08/07/IE6-et-PNG-je-taime-moi-non-plus#comment-form</comments>
      <wfw:comment>http://blog.pabloprieto.net/index.php/post/2006/08/07/IE6-et-PNG-je-taime-moi-non-plus#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.pabloprieto.net/index.php/feed/rss2/comments/2</wfw:commentRss>
      </item>
    
</channel>
</rss>