<?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>JBJ's Blog &#187; (x)HTML/CSS</title>
	<atom:link href="http://www.lyxia.org/blog/category/developpement/xhtmlcss/feed" rel="self" type="application/rss+xml" />
	<link>http://www.lyxia.org/blog</link>
	<description>Lyxia.org</description>
	<lastBuildDate>Sat, 27 Feb 2010 10:24:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CSS: 5 possibilités haut de gamme</title>
		<link>http://www.lyxia.org/blog/developpement/xhtmlcss/css-5-possibilites-haut-de-gamme-293</link>
		<comments>http://www.lyxia.org/blog/developpement/xhtmlcss/css-5-possibilites-haut-de-gamme-293#comments</comments>
		<pubDate>Mon, 26 May 2008 07:37:14 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[(x)HTML/CSS]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[galerie]]></category>
		<category><![CDATA[graphiques]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/?p=293</guid>
		<description><![CDATA[Les css – feuilles de style en cascade – proposent de très nombreuses possibilités pour le rendu visuel de votre site web. Après mes listes sur les meilleurs scripts Javascript pour sublimer votre site, je vous propose les meilleurs codes css trouvés sur le web. Au menu: Graphiques, coins arrondis, galeries photos...]]></description>
			<content:encoded><![CDATA[<p>Les css – feuilles de style en cascade – proposent de très nombreuses possibilités pour le rendu visuel de votre site web. Après mes listes sur les meilleurs scripts Javascript pour sublimer votre site, je vous propose les meilleurs codes css trouvés sur le web. Au menu: Graphiques, coins arrondis, galeries photos...</p>
<h2>Graphiques</h2>
<p><img style="float:right;margin-left:10px;" src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/graph-css.gif" alt="Graphiques en CSS" /><br />
Bien qu'il soit tout à fait possible de générer des graphiques coté serveur, notamment grâce à la lib GD, ce code vous permettra de faire des économies d'images qui prennent de la place sur le serveur et bouffent de la bande passante.</p>
<p>Voici un <a href="http://applestooranges.com/blog/post/css-for-bar-graphs/?id=55">tutorial complet</a> sur la création de graphiques au visuel saisissant, le tout en 100% pur css à partir d'une simple liste html.</p>
<h2>Coins arrondis</h2>
<p><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/spiffy.jpg" alt="Spiffy Corners" /><br />
Ce n'est pas un scoop: Dans l'univers du web 2.0, les coins arrondis ont plus que jamais la cote. Si visuellement ils sont saisissants, ils ont l'inconvénient d'être parfois assez lourds à mettre en place. Heureusement, le site <a href="http://www.spiffycorners.com/">Spiffy Corners</a> à tout prévu et vous propose un générateur de coins arrondis. Si le rendu visuel est excellent, je ne peut par contre pas en dire autant du code généré: Balises <em>&lt;b&gt;</em> dépréciées, code non sémantique... A vous de choisir entre rendu visuel et respect des standards.</p>
<h2>Galerie photo avec effet au survol</h2>
<p><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/galerie.jpg" alt="Galerie photo en css" /><br />
Niveau scripts pour galeries photos, il y a de quoi faire, surtout via des librairies javascript "Nouvelle génération" du style Mootools ou JQuery. Mais si vous ne souhaitez pas implémenter de solution javascript pour l'affichage de vos images, voici un code CSS qui devrait vous satisfaire: <a href="http://sonspring.com/journal/hoverbox-image-gallery">Hoverbox</a>, Une galerie photo simple, sobre, avec un agrandissement automatique des images survolées, le tout en 100% css.</p>
<h2>Mettre une photo en valeur avec une bordure, ou même une ombre</h2>
<p><img style="float:left;margin-right:5px;" src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/catFace.jpg" alt="Ombre portée en CSS" /><br />
Dans le cadre d'un site dynamique, si vous souhaitez décorer vos photos à l'aide d'un cadre, vous n'avez pas des milliers de possibilités: Passer par Php et GD pour générer de nouvelles images au termes de codages parfois fastidieux. Ou alors, utiliser css et ses possibilités souvent sous estimées.<br />
Dans ce second cas, le célèbrissime site <a href="http://www.alistapart.com/articles/cssdropshadows/">A List Apart</a> propose un tutorial précis sur l'ajout d'une ombre de bordure à vos images, en pur css, bien sûr.</p>
<h2>Et pour finir sur une note amusante...</h2>
<p>...mais pas pour autant exempte de technique: Il s'agit d'Homer Simpson, totalement réalisé en CSS par Román Cortés. ça vaut le détour, et ça se passe <a href="http://www.romancortes.com/blog/homer-css/">ici</a>.</p>
<p>Source: <a href="http://www.cameronolthuis.com/2006/04/top-10-css-tutorials">Cameron Olthuis</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/xhtmlcss/css-5-possibilites-haut-de-gamme-293/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>XRAY, un nouvel outil efficace pour le développement web</title>
		<link>http://www.lyxia.org/blog/developpement/xhtmlcss/xray-un-nouvel-outil-efficace-pour-le-developpement-web-197</link>
		<comments>http://www.lyxia.org/blog/developpement/xhtmlcss/xray-un-nouvel-outil-efficace-pour-le-developpement-web-197#comments</comments>
		<pubDate>Sun, 17 Feb 2008 09:58:52 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[(x)HTML/CSS]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[xray]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/developpement/xhtmlcss/xray-un-nouvel-outil-efficace-pour-le-developpement-web-197</guid>
		<description><![CDATA[Si vous êtes développeur ou intégrateur web, il vous arrive certainement souvent de vouloir regarder le code css d'un élément précis sur une page trouvée au hasard du web.  Avant, il fallait utiliser le <em>web developper</em> de Firefox pour repérer la classe de l'élément, puis faire une recherche dans la feuille de style. Désormais, un simple clic sur le bouton <em>xray</em> et vous pourrez  voir  la totalité des détails  liés à l'élément, tel que les propriétés css et l'héritage de l'élément.]]></description>
			<content:encoded><![CDATA[<p>Si vous êtes développeur ou intégrateur web, il vous arrive certainement souvent de vouloir regarder le code css d'un élément précis sur une page trouvée au hasard du web.  Avant, il fallait utiliser le <em>web developper</em> de Firefox pour repérer la classe de l'élément, puis faire une recherche dans la feuille de style. Désormais, un simple clic sur le bouton <em>xray</em> et vous pourrez  voir  la totalité des détails  liés à l'élément, tel que les propriétés css et l'héritage de l'élément.</p>
<p>L'installation d'<em>xray</em> est d'une simplicité déconcertante: Il vous suffira de vous rendre sur <a href="http://westciv.com/xray/">le site du projet</a>, puis de glisser-déposer le bouton <em>xray</em> dans votre barre de favoris. <em>Xray</em> fonctionne avec Safari, Firefox ainsi qu'Internet Explorer à partir de la version 6.<br />
Une fois cette opération effectuée, vous aurez un beau bouton "<em>xray</em>" dans votre barre de favoris, comme le montre l'image ci-dessous:</p>
<p style="text-align: center"> <img src="http://www.lyxia.org/blog/wp-content/uploads/2008/02/xray-outil-developpeur-web.png" alt="xray-outil-developpeur-web.png" /></p>
<p>Cliquez sur le bouton: Une fenêtre grise apparait et vous propose de cliquer sur un élément du document html. Au clic, <em>xray</em> affichera de nombreuses informations sur l'élément: hauteur/largeur, héritage html, nom d'id où de classe, ainsi que ces propriétés css.</p>
<p>Même si on regrettera l'impossibilité de copier les informations dans le presse papier et celle de modifier les valeurs des propriétés css en visualisant le rendu directement sur la page, un peu à la manière du web developper de Firefox, <em>xray</em> est un outil efficace qui sera utile ou développeur web lors de débogage,  ou tout simplement pour comprendre le fonctionnement d'un élément sur une page web en particulier.</p>
<p><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/02/voir-les-proprietes-css-avec-xray.png" alt="voir-les-proprietes-css-avec-xray.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/xhtmlcss/xray-un-nouvel-outil-efficace-pour-le-developpement-web-197/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Appliquer une propriété uniquement à Internet Explorer 7</title>
		<link>http://www.lyxia.org/blog/developpement/xhtmlcss/appliquer-une-propriete-uniquement-a-internet-explorer-7-185</link>
		<comments>http://www.lyxia.org/blog/developpement/xhtmlcss/appliquer-une-propriete-uniquement-a-internet-explorer-7-185#comments</comments>
		<pubDate>Fri, 08 Feb 2008 22:08:33 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[(x)HTML/CSS]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/developpement/xhtmlcss/appliquer-une-propriete-uniquement-a-internet-explorer-7-185</guid>
		<description><![CDATA[A la sortie de la dernière version de son navigateur, Microsoft avait prévenu que le bon vieux hack consistant à insérer un underscore devant le nom de la propriété CSS que l'on souhaitait voir appliquer uniquement par Internet Explorer ne fonctionnerait plus avec IE7, ce qui est effectivement vrai.
Pourtant, il existe un hack relativement méconu et au effets semblables: Appliquer seulement une propriété à IE, version 7 cette fois-ci.]]></description>
			<content:encoded><![CDATA[<p>A la sortie de la dernière version de son navigateur, Microsoft avait prévenu que le bon vieux hack consistant à insérer un underscore devant le nom de la propriété CSS que l'on souhaitait voir appliquer uniquement par Internet Explorer ne fonctionnerait plus avec IE7, ce qui est effectivement vrai.<br />
Pourtant, il existe un hack relativement méconu et au effets semblables: Appliquer seulement une propriété à IE, version 7 cette fois-ci.</p>
<p><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/02/fuck-ie.gif" alt="fuck-ie.gif" style="float: left" />Avant de rentrer dans les détails, il faut bien savoir que ce genre, c'est du 100% quick &amp; dirty: Aucune feuille de style dotée de ce genre de bidouille ne passera la validation w3c. Si votre objectif est d'obtenir un code irréprochable, alors utilisez plutôt un commentaire conditionnel.<br />
Toutefois, devant les  innombrables idiosyncrasies propres au navigateur de microsoft, il faut savoir s'armer. Et même si c'est discutable, la plupart des clients préfereront 100 fois un code avec une ou deux erreurs w3c mais 100% compatible IE à l'inverse.</p>
<p>Passons au hack en lui-même: IE6 utilisait l'underscore, pour IE7, un simple point fera l'affaire:</p>
<pre>.uneClasse{
        width: 150px; /* Tous les browsers */
        _width: 150px; /* Uniquement appliqué par IE6 */
        .width: 150px; /* Uniquement appliqué par IE7 */
}</pre>
<p>J'avoue avoir été quelque peu suspicieux lorsque j'ai entendu parler de cette technique pour la première fois, mais je l'ai testée hier au boulot (gloups!) et tout fonctionne comme escompté.<br />
Un hack bien cracra à garder pour les cas désespérés...</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/xhtmlcss/appliquer-une-propriete-uniquement-a-internet-explorer-7-185/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Sublimez vos titres et entêtes avec CSS</title>
		<link>http://www.lyxia.org/blog/design/sublimez-vos-titres-et-entetes-avec-css-160</link>
		<comments>http://www.lyxia.org/blog/design/sublimez-vos-titres-et-entetes-avec-css-160#comments</comments>
		<pubDate>Thu, 17 Jan 2008 17:54:44 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[(x)HTML/CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/tutoriaux/sublimez-vos-titres-et-entetes-avec-css-160</guid>
		<description><![CDATA[Voici deux techniques pour rendre vos titres et entêtes (<em>h1</em>, <em>h2</em>, etc) plus beau et originaux. La première concernera un effet de dégradé sur le texte, quand à la deuxième, elle nous permettra de styliser nos balises de titres grâce à l'emploi de la balise <em>&#60;span></em>.]]></description>
			<content:encoded><![CDATA[<p>Voici deux techniques pour rendre vos titres et entêtes (h1, h2, etc) plus beau et originaux. La première concernera un effet de dégradé sur le texte, quand à la deuxième, elle nous permettra de styliser nos balises de titres grâce à l'emploi de la balise &lt;span&gt;.</p>
<h2>Dégradé sur un texte</h2>
<p>Je tire cette technique  de l'excellent <a href="http://www.webdesignerwall.com/tutorials/css-gradient-text-effect/">Web Designer Wall</a>.  Le principe est d'ajouter une image png  comprenant un dégradé du blanc au transparent sur notre titre. Nous utiliserons ici la balise span afin de paramètrer l'effet sur le texte lui-même, et non sur le background comme on pourrais facilement le faire en utilisant la propriété CSS background-image.</p>
<p><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/01/screen5.gif" alt="screen5.gif" /><br />
Sympa, n'est-ce pas?</p>
<p>Rien de bien compliqué: Il suffit d'ajouter la balise span dans votre header:</p>
<pre>&lt;h1&gt;&lt;span&gt;&lt;/span&gt;Hello, I'm Shinely&lt;/h1&gt;</pre>
<p>Le code CSS n'est guère plus compliqué, le plus important étant de bien paramètrer <em>h1</em> en position relative et <em>h1 span</em> en position absolue.</p>
<pre>h1 {
    font: bold 330%/100% "Lucida Grande";
    position: relative;
    color: #464646;
}

h1 span {
    background: url(gradient.png) repeat-x;
    position: absolute;
    display: block;
    width: 100%;
    height: 31px;
}</pre>
<p>Malheureusement, il y à plusieurs inconvénients à cette technique:<br />
Premièrement, sémantiquement parlant, le &lt;span&gt;&lt;/span&gt; n'a pas de sens.<br />
L'image dégradée ne devra pas être plus grande que votre texte, autrement celui-ci ne sera plus sélectionnable.<br />
Il est nécessaire d'utiliser un hack si l'on souhaite assurer une compatibilité avec IE6.<br />
La couleur de fond de votre titre devra être solide: Tout blanc, tout gris, tout noir mais ni image ni dégradé.</p>
<h2>Entêtes stylisés</h2>
<p>J'ai pris connaissance de cette technique il y à quelques temps déja via le blog <a href="http://devilcantburn.com/Tutoriel-2.html">Devil can't burn</a>.  Niveau principe, on reste dans le même esprit que ce dont je vous ai parlé plus haut: Utiliser la balise <em>span</em> afin de s'ouvrir de nouvelles possibilités en terme de style de titre.<br />
Voilà pour l'exemple:<br />
<img src="http://www.lyxia.org/blog/wp-content/uploads/2008/01/h23.gif" alt="h23.gif" /><br />
Le code xhtml:</p>
<pre>&lt;h2&gt;&lt;span&gt;Des entetes stylisés en css&lt;/span&gt;&lt;/h2&gt;</pre>
<p>Niveau CSS, nous allons définir une image de fond se répetant en x sur l'élément <em>h2</em>, Puis, nous allons utiliser <em>background-color</em> sur <em>h2 span</em> de manière à cacher l'image de fond à l'endroit ou se situe le texte.</p>
<pre>
h2 {
    font: 1.4em "Arial Narrow", Helvetica, Arial, Geneva, sans-serif;
    font-weight: bold;
    text-align: center;
    color: #9cf;
    background: transparent url(background.gif) repeat-x 0 50%;
}

h2 span {
    padding: 0 4px;
    background: #FFF;
}</pre>
<p>Voilà pour aujourd'hui. Bonnes décorations <img src='http://www.lyxia.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/design/sublimez-vos-titres-et-entetes-avec-css-160/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Une barre de recherche originale</title>
		<link>http://www.lyxia.org/blog/developpement/xhtmlcss/une-barre-de-recherche-originale-147</link>
		<comments>http://www.lyxia.org/blog/developpement/xhtmlcss/une-barre-de-recherche-originale-147#comments</comments>
		<pubDate>Wed, 02 Jan 2008 23:08:18 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[(x)HTML/CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/tutoriaux/une-barre-de-recherche-originale-147</guid>
		<description><![CDATA[Ceux qui ont testé Cat Print, mon dernier thème pour Wordpress, auront sans doute remarqué la barre de recherche assez originale. Rien de bien compliqué: deux trois images, un peu de CSS et un zeste d'inspiration.]]></description>
			<content:encoded><![CDATA[<p>Ceux qui ont testé <a href="http://www.lyxia.org/blog/actualite/nouveau-theme-wordpress-cat-print-145">Cat Print, mon dernier thème pour Wordpress</a>, auront sans doute remarqué la barre de recherche assez originale. Rien de bien compliqué: deux trois images, un peu de CSS et un zeste d'inspiration.</p>
<h2>L'idée</h2>
<p><img src="http://www.lyxia.org/blog/wp-content/uploads/2007/12/screenshot.png" alt="screenshot.png" style="float: left; margin-right: 5px" />Pour <a href="http://www.lyxia.org/blog/actualite/nouveau-theme-wordpress-cat-print-145">Cat Print</a>, l'idée était d'intégrer parfaitement la barre de recherche à la barre de navigation en respectant le design. La barre de recherche est composée en tout et pour tout de deux images: le fond, et la loupe. L'image de fond à été créé sous Photoshop, en utilisant un calque que j'avais téléchargé <a href="http://www.azork.net/dotclear/index.php?post/2007/10/28/Styles-de-calque-pour-le-Web-Adobe-Photoshop">ici</a> il y à quelques semaines. Quand à l'image de la loupe...c'est tout simplement celle qui est fourni avec l'excellent thème d'icones Ubuntu Studio.<br />
Quand au html/css, il s'agit ici de masquer totalement le champ input text (bordure, couleur de fond, etc) et d'afficher une image en lieu et place du bouton submit. Toutefois, rien ne vous empêche de mettre un input image à la place.</p>
<p>Vous trouverez ici le <a href="http://www.jbjweb.com/v3/wp-content/themes/cat-print/images/search.png">background</a> et la <a href="http://www.jbjweb.com/v3/wp-content/themes/cat-print/images/loupe.png">loupe</a>.</p>
<h2>Le xhtml</h2>
<pre>
&lt;div id="searchbar"&gt;
    &lt;form method="get" id="searchform" action="http://www.lyxia.org/blog/"&gt;
        &lt;div&gt;
            &lt;input type="text" name="s" id="s"/&gt;
            &lt;input type="submit" value="" id="loupe"/&gt;
        &lt;/div&gt;
    &lt;/form&gt;
&lt;/div&gt;</pre>
<h2>La CSS</h2>
<pre>
#searchbar{
    background: transparent url('images/search.png') no-repeat top left;
    float:right;
    height:41px;
    width:280px;
}

#searchbar #s{
    background:none;
    border:none;
    color:#222;
    float:left;
    font-family:"Trebuchet MS";
    font-size:22px;
    height:30px;
    line-height:35px;
    margin-left:15px;
    padding-top:5px;
}

#searchbar #loupe{
    background: transparent url('images/loupe.png') no-repeat top left;
    border:none;
    float:right;
    height:38px;
    margin-right:5px;
    width:38px;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/xhtmlcss/une-barre-de-recherche-originale-147/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Un beau bouton submit avec CSS</title>
		<link>http://www.lyxia.org/blog/developpement/xhtmlcss/un-beau-bouton-submit-avec-css-109</link>
		<comments>http://www.lyxia.org/blog/developpement/xhtmlcss/un-beau-bouton-submit-avec-css-109#comments</comments>
		<pubDate>Fri, 16 Nov 2007 12:49:19 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[(x)HTML/CSS]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/developpement/un-beau-bouton-submit-avec-css-109</guid>
		<description><![CDATA[Styler un bouton submit n'est pas toujours évident: Comme souvent avec les styles CSS, si l'on souhaite assurer une compatibilité cross-browser avec IE6, il faut prendre son mal en patience.
J'ai eu l'occasion d'étudier diverses techniques à ce sujet, voici celle qui me semble la meilleure.]]></description>
			<content:encoded><![CDATA[<p>Styler un bouton submit n'est pas toujours évident: Comme souvent avec les styles CSS, si l'on souhaite assurer une compatibilité <em>cross-browser</em> avec IE6, il faut prendre son mal en patience.<br />
J'ai eu l'occasion d'étudier diverses techniques à ce sujet, voici celle qui me semble la meilleure.</p>
<h2>Pour commencer, une bonne base</h2>
<p>Déja, la première chose à savoir est qu'Internet Explorer 6 ne gere pas ce type de codage css, pourtant bien pratique:</p>
<pre>input[type="submit"]{...}</pre>
<p>Pour contrer ce problème, il suffit d'ajouter une classe à chaque submit que l'on voudra styler. Ce qui nous donne, en html:</p>
<pre>&lt;input type="submit" value="ok" id="valider" class="submit" /&gt;</pre>
<p>Le principe de la classe CSS submit est simple: Nous allons enlever les bordures définies par défauts par les browsers sur les boutons submit et affecter une image de fond de notre choix. Il ne faudra pas non plus oublier de préciser la longueur et largeur de l'image afin qu'elle ne soit pas tronquée:</p>
<pre>
.submit{
     border:none;
     color:#fff;
     background: transparent url('images/monimage.png') no-repeat top left;
     width:75px;
     height:20px;
}</pre>
<h2>Pour aller plus loin</h2>
<p>Il erait fort tentant de vouloir ajouter un effet de type <em>rollover</em> au survol du bouton, malheureusement, encore une fois le navigateur de Micro$oft va mettre des barrières à notre créativité: Il ne gère pas la pseudo classe <em>:hover</em> sur un autre élément qu'un lien.<br />
Il existe toutefois plusieurs solutions plus ou moins propres qui tentent de pallier à ce problème. La moins cracra à mon gout consiste à entourer le bouton d'un lien hypertexte comme dans l'exemple proposé ci-dessous:</p>
<pre>
&lt;a href="javascript:void(0)"&gt;
&lt;input type="submit" id="valider" class="submit" value="ok" /&gt;
&lt;/a&gt;</pre>
<p>Dans la feuille de style, il faudra mettre:</p>
<pre>
a:hover input.submit {
cursor:pointer;
background-image: url('images/secondeimage.png');
}</pre>
<p>Ce même effet peut facilement être implémenté avec un peu de javascript. Ici nous appellons la fonction <em>rollover</em> au survol du bouton.</p>
<pre>
&lt;input type="submit" id="valider" class="submit" value="ok" onmouseover="rollover();"/&gt;</pre>
<p>La fonction Javascript <em>rollover</em> se chargera de modifier l'image de fond:</p>
<pre>
function rollover(){
    document.getElementById('valider').style.backgroundImage = 'url(images/secondeimage.png)';
}</pre>
<p>Bien entendu, il ne faudra pas oublier de replacer la première image lorsque le curseur ne survolera plus le bouton!</p>
<p>Une autre solution, <a href="http://www.nikohk.com/2006/04/11/internet-explorer-et-hover/">expliquée ici</a>, indique comment faire comprendre la pseudo-classe <em>:hover</em> à IE6. Toutefois, il faut noter que cette méthode n'est pas valide CSS. Comme (trop) souvent, avec IE, les développeurs se voient obligés de choisir entre fonctionnalité et respect des standards...</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/xhtmlcss/un-beau-bouton-submit-avec-css-109/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>CSS: Domptez IE (Et les autres&#8230;)</title>
		<link>http://www.lyxia.org/blog/developpement/xhtmlcss/css-domptez-ie-et-les-autres-15</link>
		<comments>http://www.lyxia.org/blog/developpement/xhtmlcss/css-domptez-ie-et-les-autres-15#comments</comments>
		<pubDate>Mon, 06 Aug 2007 21:29:28 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[(x)HTML/CSS]]></category>
		<category><![CDATA[hacks css]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/tutoriaux/css-domptez-ie-et-les-autres-15</guid>
		<description><![CDATA[Toute personne s'étant déja essayée aux joies des css et des standards web sait à quel point les problèmes potentiels sont nombreux. On à beau respecter à la lettre les recommendations du W3C, Internet Explorer (particulièrement les versions 6 et inférieures) à trop souvent un comportements étrange.
Pour celà, les développeurs et intégrateurs ont inventé diverses [...]]]></description>
			<content:encoded><![CDATA[<p>Toute personne s'étant déja essayée aux joies des css et des standards web sait à quel point les problèmes potentiels sont nombreux. On à beau respecter à la lettre les recommendations du W3C, Internet Explorer (particulièrement les versions 6 et inférieures) à trop souvent un comportements étrange.<br />
Pour celà, les développeurs et intégrateurs ont inventé diverses techniques, nommées <em>hacks</em> et qui ont pour but de modifier le comportement d'un ou plusieurs navigateur afin de lui faire prendre en compte une propriété, ou encore de corriger certains bugs.</p>
<p>Les hacks que vous trouverez ici sont de qualité diverses: Si certains sont recommandés, d'autres ne le sont pas et il faudrait, dans la mesure du possible, s'en passer.</p>
<h2>1 - Les commentaires conditionnels</h2>
<p>Les commentaires conditionnels sont une façon propre d'isoler une règle à Internet Explorer (depuis sa version 5).<br />
Leur usage consiste à dire "Si le navigateur du client est IE6, alors inclure cette feuille de style complémentaire". C'est une technique que j'utilise très souvent, car malheureusement, vous vous en êtes probablement rendu compte, il est ardu, voire impossible de coder une CSS valide qui s'adaptera sans soucis à Internet Explorer.</p>
<p>La syntaxe des commentaires conditionnels est la suivante:</p>
<pre>
&lt;!--[if IE]&gt;
   &lt;link rel="stylesheet" type="text/css" media="screen" href="only_ie.css"&gt;
&lt;![endif]--&gt;</pre>
<p>Vous pouvez également spécifier la version (exemple, uniquement la version 6)</p>
<pre>
&lt;!--[if IE 6]&gt;
   &lt;link rel="stylesheet" type="text/css" media="screen" href="only_ie6.css"&gt;
&lt;![endif]--&gt;</pre>
<p>Ou encore, une version et les version inférieures...</p>
<pre>
&lt;!--[if lte IE6]&gt;
   &lt;link rel="stylesheet" type="text/css" media="screen" href="only_ie.css"&gt;
&lt;![endif]--&gt;</pre>
<p>...Ou supérieures</p>
<pre>
&lt;!--[if IE gte 6]&gt;
   &lt;link rel="stylesheet" type="text/css" media="screen" href="only_ie.css"&gt;
&lt;![endif]--&gt;</pre>
<p>Les commentaires conditionnels ne peuvent être inclus directement dans la feuille de style. Mettez les dans la partie head de votre document (x)html.</p>
<h2>2 - Cacher des règles à IE</h2>
<p>Internet Explorer ne comprends pas la règle !important.<br />
En CSS, si un id ou classe est répétée plusieurs fois, c'est la dernière déclaration qui sera appliquée au document. la règle !important fera appliquer cette déclaration, même si elle est répétée avec des propriétés différentes.</p>
<pre>
#header{
    width: 200 px !important;
    width: 300px;
}</pre>
<p>Dans cet exemple, #header aura une longuer de 200px sous Firefox (qui comprends !important et donc ne tiens pas compte de la seconde déclaration) tandis qu'IE affectera 300px de longueur à #header car il ne comprends pas la règle !important.</p>
<h2>3 - Une règle spécifique à IE</h2>
<p>Si une propriété est préfixée par un underscore, IE sera le seul à la comprendre.</p>
<pre>
#header{
    width: 200 px;
    _width: 300px;
}</pre>
<p>Sur l'exemple ci-dessus, seul IE comprendra _width, et par conséquent, cette déclaration remplacera la précédente. Il affectera donc 300px à #header contrairement aux autres navigateurs qui, ne connaissant pas cette règle, l'ignoreront.<br />
A noter, les déclarations préfixées d'un underscore sont marquées comme erreur dans la console d'erreur de Firefox. A utiliser uniquement en dernier recours...</p>
<h2>4 - Transparence des images PNG</h2>
<p>Le gros avantage des images PNG est qu'elle peuvent être transparentes, avec une qualité hautement supérieure à celle proposée par le format GIF. Malheureusement, les versions d'Internet Explorer (encore lui!) inférieures à 7 ne gèrent pas sa transparence.<br />
Pour celà, vous avez deux options:</p>
<p>-Utiliser un commentaire conditionnel et spécifier qu'IE &lt; 6 doit afficher des images GIF<br />
au lieu des images PNG.</p>
<p>-Utiliser le script JavaScript suivant:</p>
<pre>
/*Correctly handle PNG transparency in Win IE 5.5 &amp; 6.http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006.
Use in &lt;HEAD&gt; with DEFER keyword wrapped in conditional comments:
&lt;!--[if lt IE 7]&gt;
&lt;script defer type="text/javascript" src="pngfix.js"&gt;&lt;/script&gt;
&lt;![endif]--&gt;
*/

var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])

if ((version &gt;= 5.5) &amp;&amp; (document.body.filters))
{
    for(var i=0; i&lt;document.images.length; i++)
    {
	var img = document.images[i]
	var imgName = img.src.toUpperCase()

	if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
	{
	    var imgID = (img.id) ? "id='" + img.id + "' " : ""
	    var imgClass = (img.className) ? "class='" + img.className + "' " : ""
 	    var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
	    var imgStyle = "display:inline-block;" + img.style.cssText

	    if (img.align == "left") imgStyle = "float:left;" + imgStyle

	    if (img.align == "right") imgStyle = "float:right;" + imgStyle

	    if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle

	    var strNewHTML = "<span>
</span>            + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
            + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
            + "(src=\'" + img.src + "\', sizingMethod='scale');\"&gt;"
            img.outerHTML = strNewHTML
            i = i-1
       }
   }
}</pre>
<p>Ce script permettra que votre image PNG s'affiche de manière transparente, comme c'est le cas sur Firefox ou Opera. Esthétiquement parlant, le résultat est à la hauteur, mais n'oublions pas qu'un peu moins de 10% des gens n'ont pas JavaScript activé sur leur machine.</p>
<h2>5 - Min-Height</h2>
<p>La propriété <em>min-height</em> est intéréssante: Elle permet de donner une hauteur minimale à une bloc, qui pourra par la suite s'étendre verticalement si son contenu l'y oblige. Particulièrement pratique si vous avez une page avec très peu de contenu et que vous ne souhaitez pas que votre footer soit placé au beau millieu de la page...<br />
Mais une fois de plus, l'ami IE6 rechigne à prendre cette propriété en compte. Sur ce navigateur, la propriété <em>height</em> à quand à elle un comportement plus ou moins semblable à <em>min-height</em>.</p>
<p>Voici le hack proposé par <a href="http://www.dustindiaz.com/">Dustin Diaz</a>:</p>
<pre>
selector {
    min-height:500px;
    height:auto !important;
    height:500px;
}</pre>
<p>Cette technique, respectueuse des standards est un must: Personellement je ne peux plus m'en passer.</p>
<h2>6 - Min-Width, Max-Width...</h2>
<p>Encore des propriétées non implémentées par IE6 et inférieurs. Ce hack permet de contourner le problème, mais bien entendu cette syntaxe n'est absolument pas valide W3C.<br />
Elle n'est prise en compte que par Internet Explorer, n'oubliez donc pas de spécifier normallement la propriété pour les autres browsers.</p>
<p>Le hack suivant simulera la propriété <em>min-width</em> avec une longueur minimum de 170px:</p>
<pre>width:expression(document.body.clientWidth &gt; 170? "170px": "auto" );</pre>
<h2>7 - Les hacks, ça craint?</h2>
<p>Le site <a href="http://www.stylegala.com">Stylegala</a> à expliqué pourquoi l'usage de hacks css était déconseillé.<br />
Leur technique de contournement est très simple mais ô combien intéréssante:<br />
Utiliser une fonction PHP pour détecter le navigateur puis générer la feuille de style avec des propriétés adaptées au navigateur utilisé par le client.<br />
Puisque nous utilisons PHP dans cet exemple, j'en profiterais pour présenter une technique d'optimisation des CSS en PHP, présentée il y a peu par <a href="http://paulstamatiou.com/2007/03/18/how-to-optimize-your-css-even-more/">Paul Stamatiou sur son blog</a>. Celle-ci permet de réduire une feuille de style de 35kb à environ 22Kb.</p>
<p>Pour mettre en pratique la solution de Stylegala, créez un fichier portant l'extension .php.<br />
Au début du fichier, incluez ce code:</p>
<pre>
header("Content-type: text/css");
$d = detect();
$b = $d['browser'];
$v = $d['version'];
$o = $d['os'];

function detect()
{
    $browser = array ("IE","OPERA","MOZILLA","NETSCAPE","FIREFOX","SAFARI");
    $os = array ("WIN","MAC");
    $info['browser'] = "OTHER";
    $info['os'] = "OTHER";

    foreach ($browser as $parent)
    {
        $s = strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent);
        $f = $s + strlen($parent);
        $version = substr($_SERVER['HTTP_USER_AGENT'], $f, 5);
        $version = preg_replace('/[^0-9,.]/','',$version);

        if ($s)
        {
            $info['browser'] = $parent;
            $info['version'] = $version;
        }

    }

    foreach ($os as $val)
    {
        if (eregi($val,strtoupper($_SERVER['HTTP_USER_AGENT']))) $info['os'] = $val;
    }

    return $info;

}</pre>
<p>Le principe est simple: la fonction detect() renvoie un tableau contenant l'os, le navigateur et la version du navigateur utilisée par le client. Avec ces informations, une simple instruction conditionnelle permettra d'afficher la propriété et la valeur adéquate pour le browser que le visiteur utilise.<br />
Exemple:</p>
<pre>
.content {
    padding: 0 100px;
    width: &lt;?php
    if ($o == "WIN" &amp;&amp; $b == "IE" &amp;&amp; $v &lt; 6) echo "700px;"
    else echo "500px;";
    ?&gt;
}</pre>
<p>Si l'OS du client est Windows, son navigateur est IE et la version du navigateur est inférieure à 6, <em>.content</em> aura une longueur de 700px. Dans tous les autres cas, ce sera 500px.</p>
<p>Et maintenant, l'optimisation de Paul Stamatiou:<br />
A placer au tout début de votre fichier style.php:</p>
<pre>
&lt;?php
    if(extension_loaded('zlib'))
    {
        ob_start('ob_gzhandler');
    }
    header("Content-type: text/css");
?&gt;</pre>
<p>A placer à la dernière ligne du fichier:</p>
<pre>
&lt;?php
    if(extension_loaded('zlib'))
    {
        ob_end_flush();
    }
?&gt;</pre>
<p>Vous pourrez en apprendre plus sur cette technique en lisant <a href="http://paulstamatiou.com/2007/03/18/how-to-optimize-your-css-even-more/">le post original</a>.</p>
<h2>En guise de conclusion...</h2>
<p>Vous l'aurez remarqué, IE6 cause bien des soucis à quiconque souhaite utiliser des styles CSS proprement. Rare sont les développeurs ou intégrateurs web qui n'ont jamais été confrontés à ce problème. Heureusement, IE7 corrige certains des problèmes que j'ai exposé ici, mais il va falloir attendre encore longtemps avant qu'IE6 ai disparu du web au point ou il sera possible de ne plus le prendre en compte.<br />
Selon moi, un des meilleurs "hacks" consiste à faire connaitre et utiliser <a href="http://www.mozilla-europe.org/fr/products/firefox/">FireFox</a>. Malheureusement, énormément de clients et utilisateurs ne jurent encore que par le E bleu...Propagande Micro$oft quand tu nous tiens...</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/xhtmlcss/css-domptez-ie-et-les-autres-15/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
