<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>css 4 design &#187; DIV</title>
	<atom:link href="http://css4design.com/tag/div/feed" rel="self" type="application/rss+xml" />
	<link>http://css4design.com</link>
	<description>Le blog de l&#039;intégrateur web</description>
	<lastBuildDate>Sun, 05 Feb 2012 18:10:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<atom:link rel='hub' href='http://css4design.com/?pushpress=hub'/>
		<item>
		<title>8 composés HTML pour le logo et la « baseline » et leur potentiel SEO</title>
		<link>http://css4design.com/composes-html-logo-baseline-potentiel-seo</link>
		<comments>http://css4design.com/composes-html-logo-baseline-potentiel-seo#comments</comments>
		<pubDate>Fri, 12 Nov 2010 15:57:48 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Google & Référencement]]></category>
		<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[Intégration web]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[Baseline]]></category>
		<category><![CDATA[Composé HTML]]></category>
		<category><![CDATA[DIV]]></category>
		<category><![CDATA[Edito]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[h1]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Image]]></category>
		<category><![CDATA[Liste de défintion]]></category>
		<category><![CDATA[Logo]]></category>
		<category><![CDATA[Motto]]></category>
		<category><![CDATA[Référencement]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Slogan]]></category>
		<category><![CDATA[span]]></category>
		<category><![CDATA[Tagline]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=7158</guid>
		<description><![CDATA[Mon petit manifeste concernant la création des balises logo et motto dans les spécifications HTML5 n&#8217;a pas encore eu l&#8217;effet escompté. En attendant que le W3C valide cette modeste proposition, les enveloppeurs Web font preuve d&#8217;imagination. Voici un florilège de composés HTML (HTML Compound) plus ou moins sémantiques pour baliser l&#8217;identité d&#8217;un site internet. Cerise sur le SEO, j&#8217;ai demandé à Didier Sampaolo de nous dire ce qu&#8217;il pense &#8212; ou ce que Google pense &#8212; des différentes solutions présentées. @dsampaolo est éditeur du site Brave New World et consultant e-business spécialisé en référencement naturel. Ces marquages HTML trouvés sur le Web (pour la plupart) [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fcomposes-html-logo-baseline-potentiel-seo">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fcomposes-html-logo-baseline-potentiel-seo&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Mon petit manifeste concernant la <a href="http://css4design.com/html5-manifeste-logo-motto">création des balises logo et motto</a> dans les spécifications HTML5 n&#8217;a pas encore eu l&#8217;effet escompté. En attendant que le W3C valide cette modeste proposition, les <a href="http://css4design.com/metiers-du-web-je-suis-enveloppeur-web-moi-monsieur">enveloppeurs Web</a> font preuve d&#8217;imagination. Voici un florilège de composés HTML (<em>HTML Compound</em>) plus ou moins sémantiques pour baliser l&#8217;identité d&#8217;un site internet. Cerise sur le SEO, j&#8217;ai demandé à <a href="http://bravenewworld.fr/didier-sampaolo">Didier Sampaolo</a> de nous dire ce qu&#8217;il pense &#8212; ou ce que Google pense &#8212; des différentes solutions présentées. @dsampaolo est éditeur du site <em>Brave New World</em> et consultant e-business spécialisé en <a href="http://bravenewworld.fr/">référencement naturel</a>.<span id="more-7158"></span></p>

<p>Ces marquages HTML trouvés sur le Web (pour la plupart) seront brièvement commentés par mes soins, puis par l&#8217;expert SEO. J&#8217;ai évoqué la CSS pour le premier exemple seulement pour alléger l&#8217;article. <em>Grosso modo</em>, dans ce contexte, les CSS sont souvent utilisées pour afficher une image en <em>background</em> d&#8217;une balise et «évacuer» le texte avec <code>display: none</code>, <code>text-indent: -99999em</code> ou <code>position: absolute</code>, en ajoutant éventuellement une balise <code>span</code>, comme dans <code>h1 span { position: absolute; top: -9999px; }</code>.</p>

<h2>1. Logo texte dans «h1»</h2>

<p><pre>&lt;div id="top"&gt;
    &lt;h1&gt;
        &lt;a href="/"&gt;ici &amp;amp; ailleurs&lt;/a&gt;
    &lt;/h1&gt;
&lt;/div&gt;</pre>
C&#8217;est simple et efficace. Pour info, le logo apparait sous la forme d&#8217;une image placée dans le <em>background</em> de <code>#top</code> :
<pre>background: transparent url(top_bg.png) no-repeat 0px 3px;</pre>
Quant à l&#8217;ancre du lien, elle est masquée par la déclaration CSS suivante :
<pre>#top h1 {
    font-size: 0px;
    text-indent: -5000px;
}</pre>
Source : <a href="http://neokraft.net/">http://neokraft.net</a></p>

<p><strong>L&#8217;avis de l&#8217;expert SEO</strong> &#8212; Le texte est positionné &laquo;&nbsp;hors de l&#8217;écran&nbsp;&raquo; via CSS, et donc caché pour le visiteur. Je ne pense pas qu&#8217;un site ait déjà été pénalisé pour cette seule raison (cela semblerait un peu abusif), mais Google demande aux webmasters d&#8217;éviter ce genre de techniques, qui pourraient donner l&#8217;impression que leur site est &laquo;&nbsp;peu fiable&nbsp;&raquo; (source <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=66353">Google</a>). Note : j&#8217;aurais plutôt utilisé un lien absolu reprenant l&#8217;URL complète de la <em>homepage</em> plutôt qu&#8217;un <code>"/"</code> qui signifie &laquo;&nbsp;vers la racine du site&nbsp;&raquo;.</p>

<h2>2. Logo texte dans «h1» et Motto dans «p»</h2>

<p>Un marquage HTML similaire avec une <em>tagline</em> à la clé :
<pre>&lt;div id='logo'&gt;
    &lt;h1&gt;&lt;a href="http://t37.net/"&gt;Ergonomie Web, Expérience Utilisateur et Ruby On Rails&lt;/a&gt;&lt;/h1&gt;
    &lt;p&gt;Blog professionnel de Frédéric de Villamil sur les métiers du web&lt;/p&gt;
&lt;/div&gt;</pre>
Source : <a href="http://t37.net/">http://t37.net</a></p>

<p>Ces deux premiers exemples sont probablement la forme la plus courante en raison de leur simplicité et d&#8217;une certaine logique. La marque répétée sur l&#8217;ensemble des pages du site se voit attribuer une balise d&#8217;en-tête de premier niveau. Au temps de HTML 4 ou XHTML 1.0 on s&#8217;interrogeait sur le bien-fondé de cette utilisation d&#8217;une précieuse balise <code>h1</code> que l&#8217;on réserve normalement aux titres des articles. Le débat est encore houleux entre les partisan de la balise <code>h1</code> unique pour l&#8217;ensemble de la page et ceux qui voudrait en mettre partout. Avec HTML5, les intégrateurs peuvent utiliser au moins une balise <code>h1</code> par section&#8230;</p>

<p><strong>L&#8217;avis de l&#8217;expert SEO</strong> &#8212; Etant partisan de la balise <code>h1</code> unique pour chaque page, je trouve dommage de l&#8217;utiliser pour un logo commun à toutes les pages du site. Cela ne permet pas de différencier sémantiquement les pages entre elles. Le <code>p</code>, ici, est neutre, et permet d&#8217;améliorer la densité des mots-clefs qu&#8217;il contient. Pour preuve, le blog ressort très bien sur Google quand on cherche le nom de son auteur.</p>

<p><em>Mise à jour (14/11/2010)</em> : comme le fait remarquer Frédéric dans les commentaires, le fragment de code a été prélevé sur la page d&#8217;accueil. Sur <a href="http://t37.net/">http://t37.net</a>, le marquage HTML pour la page affichant les articles présente une différence importante : la balise <code>h1</code> est remplacée par une balise <code>p</code>.
<pre>&lt;div id='logo'&gt;
    &lt;p id='title'&gt;&lt;a href="http://t37.net"&gt;Ergonomie Web, Expérience Utilisateur et Ruby On Rails&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;Frédéric de Villamil analyse l'écosystème Web en temps presque réel&lt;/p&gt;
&lt;/div&gt;</pre></p>

<h2>3. Logo image dans «div»</h2>

<p><pre>&lt;div id="logo"&gt;
    &lt;a title="Le blog de intégrateur HTML &amp; CSS" href="http://css4design.com/"&gt;
        &lt;img src="css-4-design.png" alt="css 4 design" /&gt;
    &lt;/a&gt;
&lt;/div&gt;</pre>
Source : <em>css4design</em></p>

<p>Voici le marquage que j&#8217;utilise sur ce blog : pas de balise d&#8217;en-tête, l&#8217;image est purement décorative et permet d&#8217;identifier le site lors de l&#8217;impression de la page. Le premier élément <code>h1</code> que l&#8217;on trouve dans la page est le titre des articles.</p>

<p><strong>L&#8217;avis de l&#8217;expert SEO</strong> &#8212; Voilà qui me semble très bien. Les balises utilisées (<code>div</code>) sont sémantiquement neutres et permettent de réserver les éléments <code>h1</code> pour des données contextuelles ciblées. L&#8217;utilisation combinée du <em>title</em> sur le lien et du <em>alt</em> sur l&#8217;image permet aux moteurs de savoir précisément de quoi parle la <em>homepage</em> du blog, et n&#8217;impacte pas la page en cours, qu&#8217;il reste possible d&#8217;optimiser finement.</p>

<h2>4. Logo image et Motto dans «span» enveloppés dans «address»</h2>

<p><pre>&lt;div="header"&gt;
    &lt;address id="site_contact" class="vcard"&gt;
        &lt;a class="url home bookmark" href="http://identi.ca/"&gt;
            &lt;img class="logo photo" src="http://theme.status.net/0.9.5/identica/logo.png" alt="Identi.ca"/&gt;
            &lt;span class="fn org"&gt;Identi.ca&lt;/span&gt;
        &lt;/a&gt;
        &lt;span class="poweredby"&gt;propulsé par &lt;a href="http://status.net/"&gt;StatusNet&lt;/a&gt;&lt;/span&gt;
    &lt;/address&gt;
&lt;/div&gt;</pre>
Probablement le balisage qui m&#8217;a le plus surpris dans cette quête. Le logo et le slogan sont considérés comme la carte de visite du site, via l&#8217;utilisation du <a href="http://fr.wikipedia.org/wiki/VCard">microformat vcard</a>. Lecture complémentaire : <a href="http://css4design.com/proposition-de-balisage-html-semantique-du-microformat-hcard">Proposition de balisage HTML sémantique du microformat hCard</a> et <a href="http://dev.w3.org/html5/spec/Overview.html#the-address-element">http://dev.w3.org/html5/spec/Overview.html#the-address-element</a></p>

<p>Source : <a href="http://identi.ca/">http://identi.ca</a></p>

<p><strong>L&#8217;avis de l&#8217;expert SEO</strong> &#8212; Effectivement, ce balisage est un peu surprenant mais ne manque pas de sens. Google a annoncé sa volonté d&#8217;utiliser de plus en plus les microformats (dont <em>hCard</em>) qui permettent de structurer l&#8217;information. Identi.ca fait un pari à long terme sur la généralisation des traitements de ces formats, qui permettront, à terme, une mise en avant visuelle dans les pages de résultats de recherches sur les moteurs (qu&#8217;on appelle SERP&#8217;s, pour <em>Search Engines Results Pages</em>).</p>

<h2>5. Logo image dans «h1» et logo texte dans «span»</h2>

<p><pre>&lt;h1 class="logo"&gt;
    &lt;a tabindex="2" accesskey="1" href="/"&gt;
        &lt;img src="/logo.png" width="90" height="53" alt="W3C" /&gt;
    &lt;/a&gt;
    &lt;span class="alt-logo"&gt;W3C&lt;/span&gt;
&lt;/h1&gt;</pre>
Source :<a href=" http://www.w3.org/"> http://www.w3.org</a></p>

<p><strong>L&#8217;avis de l&#8217;expert SEO</strong> &#8212; Là encore, l&#8217;utilisation d&#8217;une balise <code>h1</code> commune à toutes les pages est à déplorer. A mon sens, cette balise peut (et donc<em> doit</em>) qualifier la page en cours, et non l&#8217;ensemble du site.</p>

<h2>6. Logo image dans «h1» avec baseline évènementielle</h2>

<p><pre>&lt;div id="title" class="vevent"&gt;
    &lt;h1 class="span-5"&gt;
        &lt;img class="summary" src="/img/paris-web.png" alt="Paris-Web" title="" width="178" height="36"&gt;
        &lt;img class="print" src="/img/paris-web-print.png" alt="" title="" width="202" height="36" /&gt;
    &lt;/h1&gt;
    &lt;abbr class="dtstart" title="2010-10-14"&gt;&lt;!-- --&gt;&lt;/abbr&gt;
    &lt;abbr class="dtend" title="2010-10-16"&gt;&lt;!-- --&gt;&lt;/abbr&gt;
    &lt;p class="baseline"&gt;
        &lt;img src="/img/du_14_au_16_octobre_2010.png" alt="Du 14 au 16 octobre 2010" title="" width="202" height="36" /&gt;
        &lt;span class="hide"&gt;
            à &lt;span class="location"&gt;Paris&lt;/span&gt;.
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;hr class="hide"&gt;
&lt;/div&gt;</pre>
Source : <a href="http://www.paris-web.fr/">http://www.paris-web.fr/</a></p>

<p>Actualité oblige, voici le marquage choisi pour le site Paris Web. Un peu complexes au premier abord, les choix s&#8217;expliquent par la nature évènementielle du site, d&#8217;où l&#8217;image réservée à l&#8217;impression ou les dates de début et de fin.</p>

<p><strong>L&#8217;avis de l&#8217;expert SEO</strong> &#8212; Comme Identi.ca, Paris Web fait le pari des microformats en utilisant <em>hCalendar</em>, qui semble adapté pour de l&#8217;évènementiel. La prise en charge des microformats par Google reste à ce jour aléatoire (au mieux), mais reste une piste très intéressante car sémantiquement très poussée, et normalisée.</p>

<h2>7. Logo image dans «span»</h2>

<p><pre>&lt;div id="tete"&gt;
    &lt;span&gt;&lt;img src="/style/ici-michel-fortin.png" alt="ici Michel Fortin" /&gt;&lt;/span&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Journal&lt;/strong&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="/logiciels/"&gt;Logiciels&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="/services/"&gt;Services&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="/joindre/"&gt;Me joindre&lt;/a&gt;&lt;/li&gt;
        &lt;li class="alt"&gt;&lt;a href="/weblog/" hreflang="en"&gt;English&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;</pre>
Ici l&#8217;auteur a mis l&#8217;accent sur le menu de navigation au lieu de mettre le logo en avant.</p>

<p>Source : <a href="http://michelf.com/journal/">http://michelf.com/journal</a></p>

<p><strong>L&#8217;avis de l&#8217;expert SEO</strong> &#8212; L&#8217;utilisation de balises neutres (<code>div</code>, <code>span</code>, <code>ul</code>&#8230;) est une bonne chose (les <code>h1</code> étant libres d&#8217;être utilisés pour le contenu de la page), mais la mise en avant du menu de navigation est un choix qu&#8217;il faut assumer. L&#8217;écueil vient plutôt des pages que l&#8217;on va placer dans le menu : ces pages seront <em>linkées</em> depuis toutes les pages du site, dès le début du code-source, et seront donc sur-pondérées aux yeux des moteurs. Il faut les choisir avec soin, et se limiter à quelques pages. Le lien vers la page <em>Contact</em> (qui n&#8217;a que très peu de valeur ajoutée en référencement) pourrait être caché (en utilisant du Javascript).</p>

<h2>8. Logo texte et image dans «dt» et motto dans «dd»</h2>

<p><pre>&lt;dl&gt;
    &lt;dt&gt;Nom du site&lt;/dt&gt;
    &lt;dt&gt;&lt;img src="" alt="logo du site"&gt;&lt;/dt&gt;
    &lt;dd&gt;HTML5 &amp; CSS3, vous le savez, c'est ma grande passion !&lt;/dd&gt;
&lt;/dl&gt;</pre>
En attendant que le W3C ne songe à créer les balises <code>logo</code> et <code>motto</code>, j&#8217;explore l&#8217;utilisation des listes de définition qui permettent en l&#8217;occurence d&#8217;indiquer un lien «sémantique» entre le slogan, le nom du site (version texte), son logo (version image) et la <em>tagline</em>. L&#8217;idée est de profiter de la possibilité d&#8217;utiliser un seul couple de <code>dt</code> et <code>dd</code> et plusieurs <code>dt</code> pour un ou plusieurs <code>dd</code>. On peut également envisager de remplacer la balise <code>dl</code> par <code>dialog</code> apparue avec HTML5 :
<pre>&lt;dialog&gt;
    &lt;dt&gt;Nom du site&lt;/dt&gt;
    &lt;dt&gt;&lt;img src="" alt="logo du site"&gt;&lt;/dt&gt;
    &lt;dd&gt;Pinailler, c'est mon dada !&lt;/dd&gt;
&lt;/dialog&gt;</pre>
Il s&#8217;agit avant tout d&#8217;une tentative de mettre en pratique les conseils de Didier Sampaolo en évitant d&#8217;utiliser les niveaux de titre <code>hn</code>  et les <code>p</code> réservés aux articles tout en mettant un peu de sémantique à la place de <code>div</code> et de <code>span</code>. L&#8217;idée est de personnifier le site et de lui faire dire son petit compliment avec la jolie voix de Betty grâce à une feuille de style <a href="http://www.w3.org/TR/CSS2/aural.html">@media aural</a> :
<pre>@media aural {
    dialog {
        voice-family: betty, female;
    }
}</pre>
Source : N/A
<strong>L&#8217;avis de l&#8217;expert SEO</strong> &#8211; Les balises <code>dl</code>, <code>dt</code> et <code>dd</code> sont faites pour contenir un terme et sa définition. L&#8217;usage proposé ici est presque un &laquo;&nbsp;détournement&nbsp;&raquo; des spécifications HTML mais il n&#8217;est pas dénué de sens : le logo et le motto (dans mon jargon, j&#8217;aurais dit &laquo;&nbsp;la baseline&nbsp;&raquo;) sont effectivement censés définir une marque (ici, le nom du site). Ce qui me chagrine un peu, c&#8217;est la répétition sur chaque page du site de la même définition. En tout cas, ce marquage a l&#8217;avantage d&#8217;être original, et ne semble pas dangereux (j&#8217;entends par là : &laquo;&nbsp;ce n&#8217;est pas contraire aux <em>guidelines</em> de Google&nbsp;&raquo;). Sans aller jusqu&#8217;à le conseiller spécialement, je ne pense pas non plus qu&#8217;il faille le déconseiller. Pour aller encore plus loin dans l&#8217;expérimentation, on pourrait utiliser l&#8217;attribut <em>Title</em> sur les <code>dd</code> pour introduire des variations d&#8217;une page à l&#8217;autre.</p>

<h2>La conclusion de l&#8217;expert SEO</h2>

<p>Lorsqu&#8217;on conçoit le code HTML d&#8217;un site, il faut garder à l&#8217;esprit qu&#8217;un moteur de recherche a besoin d&#8217;être guidé. Je recommande d&#8217;utiliser les balises <code>h1</code> à <code>h3</code> de manière à ce qu&#8217;en les lisant, on ait une sorte de &laquo;&nbsp;plan de la page&nbsp;&raquo; (rappelez-vous de vos cours : grand I, petit b, etc.) qui suffira à la résumer. De cette manière, les moteurs sauront d&#8217;emblée quel est (ou sont) le(s) thème(s) de la page, et par voie de conséquence, quand la présenter à l&#8217;internaute qui effectue une recherche. Pour les balisages communs à toutes les pages du site, je recommande l&#8217;utilisation d&#8217;éléments sémantiquement &laquo;&nbsp;neutres&nbsp;&raquo; (comme <code>div</code> et <code>span</code>).</p>

<h2>La conclusion de l&#8217;intégrateur</h2>

<p>La banalité et la récurrence de la présence du logo et du slogan aurait pu laisser supposer une relative homogénéïté des pratiques. Il n&#8217;en est rien :  on trouve un nombre important de combinaisons. Certaines sont sémantiques mais ne sont pas optimisées en terme de référencement ; d&#8217;autres ne paient pas de mine, mais permettent aux articles de transmettre plus de «jus» aux termes et aux expressions utilisées.</p>

<p>A part celui que j&#8217;utilise déjà, les deux derniers composés HTML ont ma préférence. Ils permettent de lier sémantiquement le nom du site avec sa <em>baseline</em> (ainsi que le logo) sans utiliser de balise hiérarchique <code>h1</code> ou de balise de contenu <code>p</code>.</p>

<p>Par ailleurs &#8212; et même si on peut considérer l&#8217;absence de feuille de style comme une légende urbaine &#8212; j&#8217;aime assurer un maximum de lisibilité en dehors de toute mise en forme : le contenu doit être «tout terrain» même s&#8217;il ne sort que rarement accompagné sans CSS ou Javascript.</p>

<p><small>Merci à <a href="http://bravenewworld.fr/didier-sampaolo">Didier Sampaolo</a> d&#8217;avoir pris le temps de se pencher sur ces composés HTML et d&#8217;avoir donné un point de vue extérieur, ce qui donne à cet article un supplément d&#8217;âme :-)</small></p>

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

<ul class='related_post'><li><a href='http://css4design.com/html5-manifeste-logo-motto' title='Manifeste pour la création des éléments LOGO et MOTTO dans HTML5'>Manifeste pour la création des éléments LOGO et MOTTO dans HTML5</a></li><li><a href='http://css4design.com/solution-css-accessible-remplacer-texte-html-par-image' title='Une solution CSS accessible pour remplacer du texte HTML par une image'>Une solution CSS accessible pour remplacer du texte HTML par une image</a></li><li><a href='http://css4design.com/quelques-notes-sur-la-balise-h1-avec-html5' title='Quelques notes sur la balise h1 avec HTML5'>Quelques notes sur la balise h1 avec HTML5</a></li><li><a href='http://css4design.com/apercu-instantane-google-webdesign-referencement-naturel' title='Aperçu instantané de Google, Webdesign et référencement naturel'>Aperçu instantané de Google, Webdesign et référencement naturel</a></li><li><a href='http://css4design.com/astuce-ameliorer-referencement-google' title='Référencement de sites Web &#8212; Chassez le naturel, il revient au SEO !'>Référencement de sites Web &#8212; Chassez le naturel, il revient au SEO !</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=7158&amp;md5=e077067f40b606f8ad580dbf60d1c935" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/composes-html-logo-baseline-potentiel-seo/feed</wfw:commentRss>
		<slash:comments>31</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=7158&amp;md5=e077067f40b606f8ad580dbf60d1c935" type="text/html" />
	</item>
		<item>
		<title>Marquage HTML des micro-contenus : p, div ou bien ?</title>
		<link>http://css4design.com/marquage-html-des-micro-contenus-p-div-ou-bien</link>
		<comments>http://css4design.com/marquage-html-des-micro-contenus-p-div-ou-bien#comments</comments>
		<pubDate>Fri, 05 Jun 2009 14:08:10 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[Intégration web]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DIV]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Micro-contenus]]></category>

		<guid isPermaLink="false">http://www.css4design.com/?p=2845</guid>
		<description><![CDATA[Dans la série des problèmes existentiels qui ponctuent la journée de l&#8217;intégrateur web, la question du marquage HTML des petites portions de texte est souvent de la partie. Pour la baseline par exemple, on peut justifier l&#8217;utilisation de la balise blockquote : c&#8217;est une &#171;&#160;citation&#160;&#187; de la marque, elle est souvent mise en italique ou entre guillemets. Ca donne : &#60;blockquote id="baseline"&#62;&#60;p&#62;Ma baseline est plus belle que la tienne&#60;/p&#62;&#60;/blockquote&#62; En ce qui concerne les autres micro-contenus, je suis beaucoup plus partagé. Un paragraphe est un ensemble de phrases et on peut concevoir qu&#8217;en présence d&#8217;une seule phrase voire d&#8217;un seul [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fmarquage-html-des-micro-contenus-p-div-ou-bien">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fmarquage-html-des-micro-contenus-p-div-ou-bien&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Dans la série des problèmes existentiels qui ponctuent la journée de l&#8217;intégrateur web, la question du marquage HTML des petites portions de texte est souvent de la partie. Pour la <em>baseline</em> par exemple, on peut justifier l&#8217;utilisation de la balise <code>blockquote</code> : c&#8217;est une &laquo;&nbsp;citation&nbsp;&raquo; de la marque, elle est souvent mise en italique ou entre guillemets.
<span id="more-2845"></span></p>

<p>Ca donne :
<pre>&lt;blockquote id="baseline"&gt;&lt;p&gt;Ma baseline est plus belle que la tienne&lt;/p&gt;&lt;/blockquote&gt;</pre>
En ce qui concerne les autres micro-contenus, je suis beaucoup plus partagé. Un paragraphe est un ensemble de phrases et on peut concevoir qu&#8217;en présence d&#8217;une seule phrase voire d&#8217;un seul mot, la balise <code>p</code> n&#8217;est pas la plus adaptée : on lui préfère d&#8217;ailleurs souvent la balise <code>div</code>.</p>

<p>Or, en l&#8217;absence de CSS &#8212; notamment sur les périphériques mobiles &#8212; les micro-contenus enveloppés avec <code>div</code> ne possèdent pas de marges, et visuellement, au mieux, c&#8217;est balot, au pire, c&#8217;est illisible (cf. le visionnage du flux <a href="http://www.friendfeed.com/">friendfeed</a>, par ex.) !</p>

<p>Dans ce contexte, vous privilégiez quoi entre :
<pre>&lt;p id="copyright"&gt;copyright, copyleft ou copycenter ?&lt;/p&gt;</pre>
et
<pre>&lt;div id="copyright"&gt;copyright, copyleft ou copycenter ?&lt;/div&gt;</pre>
A vous les studios !</p>

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

<ul class='related_post'><li><a href='http://css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire' title='Rétablir le flux après des éléments flottants en CSS sans balise HTML supplémentaire'>Rétablir le flux après des éléments flottants en CSS sans balise HTML supplémentaire</a></li><li><a href='http://css4design.com/pour-retablir-le-flux-apres-un-float-vous-etes-plutot-hr-br-ou-div' title='Pour rétablir le flux après un float, vous êtes plutôt HR, BR ou DIV ?'>Pour rétablir le flux après un float, vous êtes plutôt HR, BR ou DIV ?</a></li><li><a href='http://css4design.com/le-petit-journal-du-web-les-fruits-de-la-veille-ont-garde-leur-fraicheur' title='Le petit journal du web &#8212; Les fruits de la veille ont gardé toute leur fraicheur'>Le petit journal du web &#8212; Les fruits de la veille ont gardé toute leur fraicheur</a></li><li><a href='http://css4design.com/programme-formation-html-css' title='Quelques notes &#8212; Programme de formation HTML &amp; CSS'>Quelques notes &#8212; Programme de formation HTML &#038; CSS</a></li><li><a href='http://css4design.com/interviews-bruno-bichet-integration-html-css-design' title='Interviews Bruno Bichet, intégration web et css 4 design de 2007 à nos jours'>Interviews Bruno Bichet, intégration web et css 4 design de 2007 à nos jours</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=2845&amp;md5=5b96d05d66f4122768a42ee7b5c52fc9" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/marquage-html-des-micro-contenus-p-div-ou-bien/feed</wfw:commentRss>
		<slash:comments>36</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=2845&amp;md5=5b96d05d66f4122768a42ee7b5c52fc9" type="text/html" />
	</item>
		<item>
		<title>Rétablir le flux après des éléments flottants en CSS sans balise HTML supplémentaire</title>
		<link>http://css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire</link>
		<comments>http://css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire#comments</comments>
		<pubDate>Tue, 26 Feb 2008 21:14:45 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[Intégration web]]></category>
		<category><![CDATA[Clear]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DIV]]></category>
		<category><![CDATA[Float]]></category>
		<category><![CDATA[Flottants]]></category>
		<category><![CDATA[HR]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire</guid>
		<description><![CDATA[Il y a quelques temps, je m&#8217;étais interrogé sur les différentes manières de rétablir le flux après un float. A l&#8217;époque, mon vocabulaire en la matière était rustique mais solide : je contentais souvent d&#8217;un coup de clear: both appliqué soit à une balise div, hr ou br. Comme j&#8217;en ai appris un peu plus sur le clearing suite aux commentaires qui ont suivi, j&#8217;assure le service après-vente, ce qui fait de moi une espèce de Darty Monsieur Plus du CSS&#8230;  Pour &#171;&#160;clearer&#160;&#187; les &#171;&#160;float&#160;&#187;, j&#8217;utilise désormais en première intention un overflow: hidden dont j&#8217;applique soigneusement la pommade sur le [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fretablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fretablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Il y a quelques temps, je m&#8217;étais interrogé sur les différentes manières de <a href="http://www.css4design.com/pour-retablir-le-flux-apres-un-float-vous-etes-plutot-hr-br-ou-div">rétablir le flux après un float</a>. A l&#8217;époque, mon vocabulaire en la matière était rustique mais solide : je contentais souvent d&#8217;un coup de <samp>clear: both</samp> appliqué soit à une balise <samp>div</samp>, <samp>hr</samp> ou <samp>br</samp>. Comme j&#8217;en ai appris un peu plus sur le <em>clearing</em> suite aux commentaires qui ont suivi, j&#8217;assure le service après-vente, ce qui fait de moi une espèce de <del>Darty</del> Monsieur Plus du CSS&#8230; <span id="more-206"></span></p>

<p>Pour &laquo;&nbsp;clearer&nbsp;&raquo; les &laquo;&nbsp;float&nbsp;&raquo;, j&#8217;utilise désormais en première intention un <samp>overflow: hidden</samp> dont j&#8217;applique soigneusement la pommade sur le bloc qui contient les éléments flottants de manière à créer un <a href="http://www.blog-and-blues.org/articles/Float,_clear_et_contextes_de_formatage">contexte de formatage</a>, le tout agrémenté d&#8217;une pincée de <em>Ouidzzz !</em>, de <em>Zzoum !</em> ou de <em>Héiiiitt&#8230;</em> pour IE6 qui a besoin d&#8217;un petit câlin pour déclencher son <del>fumeux</del> fameux <a href="http://forum.alsacreations.com/faq/faq-91-Qu039est-ce-que-le-HasLayout-et-comment-l039utiliser.html">hasLayout</a> sur lequel vous trouverez tout ce qu&#8217;il faut savoir chez <a href="http://www.blog-and-blues.org/">blog-and-blues</a> qui a mené de <a href="http://www.blog-and-blues.org/tests/">nombreux tests XHTML et CSS</a> sur le sujet.</p>

<p>Voici quelques exemples de code que j&#8217;utilise pour rétablir le flux :</p>

<h2>Avec overflow: hidden</h2>

<p><pre>.container-with-overflow {
    overflow: hidden;
    height: 1%;
}</pre>
La propriété <samp>height: 1%</samp> peut être remplacée par <samp>zoom: 1;</samp> pour déclencher le <em>hasLayout</em> dans IE 6, à servir de préférence dans une feuille de style inclue à l&#8217;aide d&#8217;un <a href="http://www.css4design.com/commentaires-conditionnels-d-internet-explorer-vs-hacks-css">commentaire conditionnel</a>. A noter que IE7 &laquo;&nbsp;comprend&nbsp;&raquo; l&#8217;overflow (ce qui peut permettre de cibler uniquement IE6 dans ce cas-là). Notez que <samp>zoom: 1;</samp> est une propriété &laquo;&nbsp;propriétaire&nbsp;&raquo; de IE qui ne passe pas le validateur.</p>

<h2>Avec la pseudo-classe :after</h2>

<p><pre>.container-with-generated-content {
    height: 1%;
}
.container-with-generated-content:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}</pre>
Vous avez remarqué que le <samp>height: 1%</samp> (ou <samp>zoom: 1</samp>) est toujours nécessaire pour déclencher le <em>hasLayout</em> chez IE 6 et IE 7 (et oui, ce dernier ne &laquo;&nbsp;comprend&nbsp;&raquo; pas la pseudo-classe <samp>:after</samp>&#8230;</p>

<p>Pourquoi présenter deux méthodes ? Simplement parce que si on utilise <samp>overflow: hidden</samp> pour déclencher le contexte de formatage, il ne pert pas pour autant sa fonction première : masquer le contenu qui dépasse d&#8217;un bloc. C&#8217;est souvent très pratique, par exemple lorsqu&#8217;on ne veut pas trop se soucier de la largeur des images, mais parfois très ennuyeux lorsque le bloc en question doit inclure un menu déroulant, car ce dernier risque d&#8217;être masqué lui aussi&#8230;</p>

<h2>En faisant flotter le container lui aussi !</h2>

<p>Une troisième méthode consiste à donner une largeur de 100% à l&#8217;élément <em>container</em> et à le faire flotter lui aussi :
<pre>.container-with-float {
    float: left;
    width: 100%;
}</pre>
Est-ce la fin des anciennes méthodes ? C&#8217;est bien possible, même si dans la plupart des cas, le <samp>clear: both</samp> appliqué à une balise <samp>hr</samp> ou <samp>br</samp> peut se justifier, vu que généralement lorsqu&#8217;on a besoin de rétablir le flux, c&#8217;est qu&#8217;il y a une légère rupture sémantique qui peut être rendu par une ligne horizontale (peut-être moins un <samp>br</samp>, mais bon&#8230;). Disons que le test est simple : si en l&#8217;absence de CSS, les lignes <samp>hr</samp> ont l&#8217;air d&#8217;être posées comme un cheveu sur la soupe, c&#8217;est qu&#8217;il n&#8217;y en a pas besoin ;)</p>

<p>Pour en savoir plus sur les avantages et inconvénients de ces trois techniques, je vous invite à jeter un oeil chez <a href="http://www.robertnyman.com/2007/04/12/how-to-clear-css-floats-without-extra-markup-different-techniques-explained/">Robert Nyman</a> et chez <a href="http://www.covertprestige.net/">Florent Verschelde</a> pour tout savoir sur les <a href="http://web.covertprestige.info/test/31-marges-et-contexte-de-formatage.html">marges et contexte de formatage</a>.</p>

<h2>Clearfix reloaded ! (màj du 23/02/2011)</h2>

<p>Voici une nouvelle méthode pour le clearing permettant de mieux gérer la fusion des marges (cf.<a href="http://www.yuiblog.com/blog/2010/09/27/clearfix-reloaded-overflowhidden-demystified/"> Clearfix Reloaded + overflow:hidden Demystified</a>) :
<pre>.clearfix:before,
.clearfix:after {
    content: ".";
    display: block;
    height: 0;
    overflow: hidden;
}
.clearfix:after { clear: both; }
.clearfix { zoom: 1; }</pre>
Une variante utilisée dans <a href="http://fr.html5boilerplate.com/">HTML5 Boilerplate</a>. Notez le remplacement de la propriété <code>overflow: hidden</code> par <code>visibility: hidden</code> :
<pre>.clearfix:before,
.clearfix:after {
    content: "\0020";
    display: block;
    height: 0;
    visibility: hidden;
}
.clearfix:after { clear: both; }
.clearfix { zoom: 1; }</pre>
L&#8217;absence de la propriété <code>overflow: hidden</code> peut entrainer des problèmes d&#8217;espaces au-dessus de certains éléments. Pour y remédier, il est possible d&#8217;utiliser :
<pre>.clearfix2:before,
.clearfix2:after {
    content: "\0020";
    display: block;
    height: 0;
    overflow: hidden;
}
.clearfix2:after { clear: both; }
.clearfix2 { zoom: 1; }</pre></p>

<h2>Quelques liens</h2>

<ul>
    <li>Très bonne analyse de Florent Verschelde en quatre parties sur les problèmes liés à l&#8217;utilisation des flottants. De nombreux exemples avec capture d&#8217;écran pour montrer les problèmes rencontrés sur les différents navigateurs :
<ol>
    <li><a href="http://web.covertprestige.info/test/03-elements-flottants-et-element-parent-1.html">Exposé du problème</a></li>
    <li><a href="http://web.covertprestige.info/test/03-elements-flottants-et-element-parent-2.html">Exemples avec un élément parent de largeur fixe, et exposé des solutions disponibles</a></li>
    <li><a href="http://web.covertprestige.info/test/03-elements-flottants-et-element-parent-3.html">Exemples avec un élément parent sans largeur fixe (non doté du layout)</a></li>
    <li><a href="http://web.covertprestige.info/test/03-elements-flottants-et-element-parent-4.html">Pour IE Win : divers moyens de doter l&#8217;élément parent du layout</a></li>
</ol>
</li>
    <li><a href="http://remiprevost.com/2007/09/clearer-des-floats-sans-elementsuperflu">Clearer des floats sans élément superflu</a></li>
    <li> <a href="http://www.robertnyman.com/2007/04/12/how-to-clear-css-floats-without-extra-markup-different-techniques-explained/"><strong>How to clear CSS floats without extra markup &#8211; different techniques explained</strong></a> &#8212; Le site sur lequel j&#8217;ai copié-collé les exemples pour illustrer cet article. Des explications concises et efficaces.</li>
    <li><a href="http://www.ejeliot.com/59"><strong>Methods for Containing Floats</strong></a> &#8212; Contient des tableaux récapitulatifs des différentes méthodes de clearing et leur support par les navigateurs. Un <em>must-read</em>.</li>
    <li><a href="http://www.positioniseverything.net/easyclearing.html">How To Clear Floats Without Structural Markup</a></li>
    <li><a href="http://www.complexspiral.com/publications/containing-floats/">Containing Floats</a></li>
    <li><a href="http://www.satzansatz.de/cssd/rpfloat.html">IE/Win: relatively positioned parent and floated child – disappearance</a></li>
    <li><a href="http://www.456bereastreet.com/archive/200603/new_clearing_method_needed_for_ie7/">New clearing method needed for IE7?</a></li>
</ul>

<h3>Pour la route&#8230;</h3>

<p>J&#8217;en profite pour vous annoncer que la <a href="http://css.developpez.com/tutoriels/retablissement-flux/">première partie</a> de ce billet est également disponible sur le portail <a href="http://www.developpez.com/">developpez.com</a>, dans <a href="http://css.developpez.com/">la rubrique CSS</a> \o/</p>

<p>Developpez.com, c&#8217;est LE site de référence pour tout ce qui concerne les techniques de programmation. Je vous conseille tout particulièrement l&#8217;excellent <a href="http://giminik.developpez.com/xhtml/">outil XHTML développé par giminik</a> (Matthieu Petiot) pour connaitre la hiérarchie des éléments et les imbrications autorisées par les spécifications.</p>

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

<ul class='related_post'><li><a href='http://css4design.com/pour-retablir-le-flux-apres-un-float-vous-etes-plutot-hr-br-ou-div' title='Pour rétablir le flux après un float, vous êtes plutôt HR, BR ou DIV ?'>Pour rétablir le flux après un float, vous êtes plutôt HR, BR ou DIV ?</a></li><li><a href='http://css4design.com/quelques-notes-sur-la-bibliotheque-javascript-ie7-de-dean-edwards' title='Quelques notes sur la bibliothèque Javascript IE7 de Dean Edwards'>Quelques notes sur la bibliothèque Javascript IE7 de Dean Edwards</a></li><li><a href='http://css4design.com/resolu-les-folles-journees-de-l-integrateur-html-et-ses-petits-tracas' title='[résolu] Les folles journées de l&#039;intégrateur HTML et ses petits tracas&#8230;'>[résolu] Les folles journées de l&#039;intégrateur HTML et ses petits tracas&#8230;</a></li><li><a href='http://css4design.com/programme-formation-html-css' title='Quelques notes &#8212; Programme de formation HTML &amp; CSS'>Quelques notes &#8212; Programme de formation HTML &#038; CSS</a></li><li><a href='http://css4design.com/une-feuille-de-style-et-des-hacks-css-pour-cibler-ie6-ie7-ou-ie8' title='Une Feuille de style et des « hacks CSS » pour cibler IE6, IE7 ou IE8'>Une Feuille de style et des « hacks CSS » pour cibler IE6, IE7 ou IE8</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=206&amp;md5=c77880ff449b9d5d1abd0246a9c51f57" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire/feed</wfw:commentRss>
		<slash:comments>26</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=206&amp;md5=c77880ff449b9d5d1abd0246a9c51f57" type="text/html" />
	</item>
		<item>
		<title>table vs div : dis papa, racontes-moi encore les tableaux&#8230;</title>
		<link>http://css4design.com/table-vs-div-dis-papa-racontes-moi-encore-les-tableaux</link>
		<comments>http://css4design.com/table-vs-div-dis-papa-racontes-moi-encore-les-tableaux#comments</comments>
		<pubDate>Wed, 10 Oct 2007 03:10:37 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[3615 MyLife]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DIV]]></category>
		<category><![CDATA[Mise en page]]></category>
		<category><![CDATA[Tableaux]]></category>
		<category><![CDATA[Tutoriels]]></category>

		<guid isPermaLink="false">http://www.css4design.com/blog-reloaded/?p=128</guid>
		<description><![CDATA[La mise en page des sites web avec les tableaux n&#8217;a pas que des inconvénients : ça permet d&#8217;obtenir une structure à l&#8217;épreuve des balles très rapidement. La mise en page en div (5 légumes par jour, on vous dit&#8230;) n&#8217;a pas que des défauts : grâce aux CSS, il sera possible de moduler l&#8217;agencement des différentes parties de votre design. Bien sûr, tout n&#8217;est pas toujours aussi simple : les éléments constitutifs d&#8217;un tableau ne sont pas allergiques aux CSS, tandis qu&#8217;une structure en div mal conçue au départ ne sera pas vraiment modulable, même avec des CSS. Il [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Ftable-vs-div-dis-papa-racontes-moi-encore-les-tableaux">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Ftable-vs-div-dis-papa-racontes-moi-encore-les-tableaux&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>La mise en page des sites web avec les tableaux n&#8217;a pas que des inconvénients : ça permet d&#8217;obtenir une structure à l&#8217;épreuve des balles très rapidement. La mise en page en <samp>div</samp> (5 légumes par jour, on vous dit&#8230;) n&#8217;a pas que des défauts : grâce aux <acronym title="Cascading Style Sheet">CSS</acronym>, il sera possible de moduler l&#8217;agencement des différentes parties de votre <em>design</em>. Bien sûr, tout n&#8217;est pas toujours aussi simple : les éléments constitutifs d&#8217;un tableau ne sont pas allergiques aux CSS, tandis qu&#8217;une structure en <samp>div</samp> mal conçue au départ ne sera pas vraiment modulable, même avec des CSS.<span id="more-135"></span></p>

<p>Il m&#8217;est arrivé dernièrement d&#8217;être &laquo;&nbsp;obligé&nbsp;&raquo; d&#8217;utiliser des tableaux pour faire une grille de mise en page à l&#8217;intérieur d&#8217;une structure en <samp>div</samp> pour les raisons suivantes (la première raison étant suffisante) :</p>

<ol>
    <li> l&#8217;addition de valeurs exprimées en pourcentage ne permettait pas un alignement correcte avec les <samp>div</samp>, alors que les mêmes valeurs exprimées sur des cellules de tableaux donnaient le résultat attendu.</li>
    <li> le code CSS pour arriver à un résultat approximatif avec les <samp>div</samp> était largement plus verbeux que celui utilisé avec les tableaux. Sans parler du code HTML lui-même !</li>
    <li> cette structure devait pouvoir se décliner rapidement en différents <em>templates</em>. Autant dire que vu le temps passé à gérer les problèmes de <samp>float</samp>, d&#8217;<samp>overflow</samp> et de <samp>clear</samp> avec les <samp>div</samp>, l&#8217;utilisation des tableaux a été une bouffée d&#8217;air frais&#8230; Il suffit de s&#8217;en sortir avec les <samp>colspan</samp> et <samp>rowspan</samp> <em>and the cat&#8217;s in the bag!</em></li>
</ol>

<p>Je tiens à préciser que je n&#8217;ai pas utilisé de tableaux pour autre chose qu&#8217;organiser des données tabulaires depuis 2001 et que je n&#8217;hésiterais pas à dénoncer mes amis si je les prenait la main dans le sac ;)</p>

<p>Si je vous raconte tout ça, c&#8217;est que bien que <strong>l&#8217;utilisation d&#8217;un marquage sémantique adapté est à privilégier</strong>, il arrive parfois que certaines contraintes (de délai, d&#8217;organisation ou de compétences dans la chaine de production, etc.) font pencher la balance du côté obscur et je trouve normal de confesser les entorses aux bonnes pratiques que l&#8217;on peut faire dans le cadre professionnel.</p>

<p>Tiens, en guise d&#8217;auto-flagellation je me connecterai une fois par jour sur <em>#openweb</em>, ça m&#8217;apprendra ;)</p>

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

<ul class='related_post'><li><a href='http://css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire' title='Rétablir le flux après des éléments flottants en CSS sans balise HTML supplémentaire'>Rétablir le flux après des éléments flottants en CSS sans balise HTML supplémentaire</a></li><li><a href='http://css4design.com/frameworks-css-reset-css-design-from-scratch' title='Frameworks CSS + Reset CSS : design from scratch'>Frameworks CSS + Reset CSS : design from scratch</a></li><li><a href='http://css4design.com/5-reset-css-a-la-loupe-pour-une-remise-a-zero-des-valeurs-par-defaut-des-navigateurs' title='5 Reset CSS à la loupe pour une remise à zéro des valeurs par défaut des navigateurs'>5 Reset CSS à la loupe pour une remise à zéro des valeurs par défaut des navigateurs</a></li><li><a href='http://css4design.com/pour-retablir-le-flux-apres-un-float-vous-etes-plutot-hr-br-ou-div' title='Pour rétablir le flux après un float, vous êtes plutôt HR, BR ou DIV ?'>Pour rétablir le flux après un float, vous êtes plutôt HR, BR ou DIV ?</a></li><li><a href='http://css4design.com/exercice-de-style-css-et-html-table-vs-div' title='Exercice de style CSS et HTML : table vs div'>Exercice de style CSS et HTML : table vs div</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=135&amp;md5=b40a976a7f596415700d47fc83657496" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/table-vs-div-dis-papa-racontes-moi-encore-les-tableaux/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=135&amp;md5=b40a976a7f596415700d47fc83657496" type="text/html" />
	</item>
		<item>
		<title>Pour rétablir le flux après un float, vous êtes plutôt HR, BR ou DIV ?</title>
		<link>http://css4design.com/pour-retablir-le-flux-apres-un-float-vous-etes-plutot-hr-br-ou-div</link>
		<comments>http://css4design.com/pour-retablir-le-flux-apres-un-float-vous-etes-plutot-hr-br-ou-div#comments</comments>
		<pubDate>Fri, 22 Jun 2007 00:02:06 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[Commentaires conditionnels]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DIV]]></category>
		<category><![CDATA[Float]]></category>
		<category><![CDATA[Flottants]]></category>
		<category><![CDATA[HR]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.css4design.com/blog-reloaded/?p=103</guid>
		<description><![CDATA[Dans le prolongement du billet précédent concernant une mise en pages CSS avec la propriété float, je me suis intéressé aux différentes manières de styler la balise hr pour rétablir le flux après en avoir sorti des éléments en les faisant flotter à gauche ou à droite. J&#8217;utilise généralement hr avec le traditionnel clear: both et visibility: hidden et je jongle ensuite avec les marges ou la hauteur pour espacer les éléments. Or, depuis que j&#8217;utilise le reset.css d&#8217;Eric Meyer, j&#8217;ai tendance à supprimer les marges de tout ce qui bouge, mais cette chère règle horizontale reste récalcitrante à la [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fpour-retablir-le-flux-apres-un-float-vous-etes-plutot-hr-br-ou-div">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fpour-retablir-le-flux-apres-un-float-vous-etes-plutot-hr-br-ou-div&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Dans le prolongement du billet précédent concernant une <a hreflang="fr" href="http://www.css4design.com/quelques-notes-autour-du-design-fluide-avec-3-colonnes-du-collectif-alsacreations">mise en pages CSS avec la propriété float</a>, je me suis intéressé aux différentes manières de styler la balise <em>hr</em> pour rétablir le flux après en avoir sorti des éléments en les faisant flotter à gauche ou à droite. J&#8217;utilise généralement <em>hr</em> avec le traditionnel  <em>clear: both</em> et <em>visibility: hidden</em> et je jongle ensuite avec les marges ou la hauteur pour espacer les éléments. Or, depuis que j&#8217;utilise le <a hreflang="en" href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/">reset.css</a> d&#8217;Eric Meyer, j&#8217;ai tendance à supprimer les marges de tout ce qui bouge, mais cette chère <em>règle horizontale</em> reste récalcitrante à la remise à zéro <em>cross browser</em>&#8230;<span id="more-106"></span></p>

<h3>Un HR cross-browser cachère</h3>

<p>Il existe heureusement des solutions pour palier les insuffisances du dernier de la classe. <a hreflang="fr" href="http://forum.alsacreations.com/faq/faq-63-Styler-la-balise-lthr-gt-sous-Internet-Explorer.html">L&#8217;une d&#8217;entre elles</a> repose sur l&#8217;application d&#8217;un <em>margin-top</em> et <em>margin-bottom</em> négatif :</p>

<p>hr {
height: 1px;
margin: -0.5em 0;
padding: 0;
color: #F00;
background-color: #F00;
border: 0;
}</p>

<p>J&#8217;ajoute à celà les propriétés <em>clear: both</em> et <em>visibility: hidden</em>, je mets la hauteur à zéro et je supprime les couleurs pour obtenir un <em>spacer</em> de bon aloi. Les valeurs de <em>margin</em> ne convenant pas dans mon cas, j&#8217;ai tâtonné pour trouver une valeur satisfaisante :
<pre>hr {
     height: 0;
     margin: -1.2ex 0;
     padding: 0;
     border: 0;
     clear: both;
     visibility: hidden;
 }</pre>
Une autre solution trouvée cette fois sur <a hreflang="fr" href="http://www.ultra-fluide.com/ressources/css/css-hacks.htm#hr">ultra-fluide</a> transforme le <em>hr</em> en bloc pour mieux maitriser son comportement dans le but de créer une ligne rouge horizontale de 1 pixel d&#8217;épaisseur sans marge :
<pre>hr {
     display:  block;
     height: 1px;
     margin: 0;
     _margin: -7px 0;
     padding: 0;
     color: #F00;
     background-color: #F00;
     border: 0;
 }</pre>
Pour mes besoins, j&#8217;applique la recette précédente :
<pre>hr {
     display: block;
     height: 0;
     margin: 0;
     _margin: -7px 0;
     padding: 0;
     border: 0;
     visibility: hidden;
 }</pre>
Il y a bien ce <em>_margin</em> qui peut être gênant, mais il reste toujours la possibilité de le caser dans une feuille de style dédiée à IE avec les <a hreflang="fr" href="http://www.css4design.com/commentaires-conditionnels-d-internet-explorer-vs-hacks-css">commentaires conditionnels</a>.</p>

<p>La différence avec la méthode précédente est qu&#8217;une fois transformé en <em>block</em> (l&#8217;auteur de l&#8217;astuce ayant habilement déterminé que le <em>hr</em> se comportait par certains côtés comme un élément en ligne) le <em>margin: 0</em> suffit à supprimer les marges pour les navigateurs modernes. le <em>_margin: -7px 0</em> s&#8217;adressant plus spécifiquement à IE6. Reste à savoir comment se comporte IE7 dans les mêmes circonstances.</p>

<h4>Deux, c&#8217;est trop</h4>

<p>Ces deux techniques fonctionnent assez bien pour donner le même rendu aux traits horizontaux ou pour rétablir le flux. Malheureusement pour moi, j&#8217;ai deux blocs imbriqués contenant des <em>float: left</em> et <em>float: right</em>, ce qui implique deux <em>hr</em> l&#8217;un en dessous de l&#8217;autre :
<pre>             &lt;/div&gt;&lt;!-- end .pix --&gt;
             &lt;hr class="spacer" /&gt;
         &lt;/div&gt;&lt;!-- end .contents --&gt;
         &lt;hr class="spacer" /&gt;
     &lt;/div&gt;&lt;!-- end #container --&gt; &lt;/body&gt;</pre>
Ces deux <em>hr</em> successifs m&#8217;ennuient (un peu) car en l&#8217;absence de prise en charge des feuilles de style, je me retrouve avec deux vilains traits de séparation. Et puis, si je me suis mis à utiliser le <em>reset.css</em>, c&#8217;est pour éviter au maximum d&#8217;utiliser des CSS spécifiques à certains navigateurs, alors, bon&#8230;</p>

<p>Je tiens à préciser que j&#8217;utilise généralement <em>clear: both</em> sur le blocs eux-mêmes au lieu de créer un <em>spacer</em> superflu. Mais curieusement, les blocs en question se retrouvaient sous les colonnes latérales&#8230; la technique utilisée pour créer les colonnes latérales reposant également sur la propriété <em>float</em>, j&#8217;ai le sentiment qu&#8217;au bout d&#8217;un moment on se retrouve dans la situation où il devient interdit d&#8217;interdire à un bloc d&#8217;avoir des voisins à droite ou à gauche : les <em>spacers</em> indépendants deviennent indispensables.</p>

<h4>C&#8217;était mieux avant ?</h4>

<p>Avant d&#8217;utiliser les <em>hr</em> pour rétablir le flux, j&#8217;utilisais une <samp>&lt;div class=&nbsp;&raquo;spacer&nbsp;&raquo;&gt;&lt;/div&gt;</samp> qui fonctionnait furieusement bien malgré l&#8217;absence de sémantique associée :x</p>

<h3>Styler la balise BR</h3>

<p>J&#8217;ai essayé d&#8217;utiliser la balise <em>br</em> en lui associant un <em>clear: both</em>. Tout a l&#8217;air de fonctionner, mais si le flux est bien rétabli sous Firefox, IE6 ne passe pas le test de la bordure : elle n&#8217;encadre pas l&#8217;ensemble de la <em>div</em> comme si un <em>clear: both</em> n&#8217;avait pas d&#8217;effet sur un <em>br</em>&#8230;</p>

<p>C&#8217;est dommage parce que lorsqu&#8217;il s&#8217;agit simplement de rétablir le flux et non de créer une séparation entre deux contenus, cette balise <em>br</em> aurait presque été sémantique : un retour à la ligne&#8230; Que demander de mieux (oué, que ça fonctionne sous IE6, je sais&#8230;) ?</p>

<p>Je garde cette solution sous le coude pour tests complémentaires. En attendant, j&#8217;ai trouvé sur <a hreflang="fr" href="http://www.dimension-internet.com/images/gabarits/2colsSidebar_rHeaderFooter.html">dimension-internet</a> un gabarit utilisant la balise <em>br</em> pour rétablir le flux :
<pre>br.clearfloat {
     clear: both;
     height: 0;
     font-size: 1px;
     line-height: 0px;
 }</pre></p>

<h3>La rustine</h3>

<p>En désespoir de cause, je me suis résolu à utiliser <samp>&lt;div class=&nbsp;&raquo;spacer&nbsp;&raquo;&gt;&lt;/div&gt;</samp> lorsqu&#8217;il s&#8217;agit seulement de rétablir le flux, et <samp>&lt;div class=&nbsp;&raquo;spacer&nbsp;&raquo;&gt;&lt;hr /&gt;&lt;/div&gt;</samp> lorsque j&#8217;ai besoin de séparer aussi des contenus :
<pre>.spacer {
     clear: both;
 }
.spacer hr {
     display: none;
 }</pre>
Ce n&#8217;est pas super <a hreflang="fr" href="http://microformateurs.org/">CHIC</a>, mais au moins la feuille de style est allégée et ne nécessite ni <em>hacks</em> ni commentaires conditionnels. Si j&#8217;utilise souvent ces derniers, ça m&#8217;ennuie de les mettre en place pour une ou deux déclarations seulement. Bien évidemment, j&#8217;utilise et je recommande fortement l&#8217;usage du <em>hr</em> pour rétablir le flux lorsqu&#8217;un espacement est souhaité entre deux blocs, ou mieux encore, l&#8217;application du <em>clear: both</em> sur les blocs eux-mêmes.</p>

<h3>Quelques mots sur la remise à zéro des éléments HTML</h3>

<p>Au cours de mes recherche sur <em>hr</em>, je suis tombé sur une intervention de Florent V. qui <a hreflang="fr" href="http://forum.alsacreations.com/posting.php?action=newp&amp;tid=25546&amp;fid=23&amp;p=1&amp;q=193535">fait part de ses réserves</a> quant à l&#8217;utilisation d&#8217;une remise à zéro des éléments. L&#8217;utilisation d&#8217;un <em>reset</em> présente selon lui deux écueils. D&#8217;une part, il serait facile d&#8217;oublier de styler une balise et d&#8217;autre part, il ne serait pas souhaitable de vouloir tout maîtriser : un peu de <em>lâcher prise</em> serait bienvenue.</p>

<p>Si je partage cette dernière opinion, je ne suis pas totalement d&#8217;accord avec la première : les balises HTML ne sont pas en nombre infini, et au pire, en cas d&#8217;oubli, il est facile de palier le problème. Pour ma part, en complément de <em>reset.css</em>, j&#8217;utilise un fichier <em>html.css</em> pour donner un nouveau style &laquo;&nbsp;par défaut&nbsp;&raquo; aux éléments HTML.</p>

<p>Ce fichier est similaire à la partie /* basics <em>/ de l&#8217;<a hreflang="fr" href="http://larlet.fr/css/style.css">exemple fourni</a> par <a hreflang="fr" href="http://www.biologeek.com/journal/">david larlet de biologeek</a>. Notons que la partie /</em> reset */ de ce fichier ne reprend qu&#8217;une partie du <a hreflang="en" href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/">reset.css d&#8217;Eric Meyer</a>.</p>

<h4>Faire <em>reset</em>, c&#8217;est rigolo tout le temps ?</h4>

<p>Il y a évidemment des cas où l&#8217;utilisation d&#8217;un <em>reset</em> est à prendre avec des pincettes : lorsque vous intervenez sur une partie d&#8217;une page déjà construite, ou dans une moindre mesure, lorsque d&#8217;autres personnes sont susceptibles d&#8217;intervenir. Je ne conseillerais pas non plus l&#8217;utilisation de la remise à zéro dans le cadre d&#8217;une formation : si vous commencez l&#8217;étude des CSS, il vaut peut-être mieux connaître les bases avant de faire table rase ;)</p>

<h3>En guise de conclusion</h3>

<p>En tout état de cause, si la théorie nous dicte la bonne conduite à tenir, force est de constater que la pratique nous joue parfois des tours de cochons ^_^</p>

<p><strong>Mise à jour du 28/02/08 :</strong> la deuxième partie intitulée <a href="http://www.css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire">Rétablir le flux après des éléments flottants en CSS sans balise HTML supplémentaire</a> vient de sortir.</p>

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

<ul class='related_post'><li><a href='http://css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire' title='Rétablir le flux après des éléments flottants en CSS sans balise HTML supplémentaire'>Rétablir le flux après des éléments flottants en CSS sans balise HTML supplémentaire</a></li><li><a href='http://css4design.com/exercice-de-style-css-et-html-table-vs-div' title='Exercice de style CSS et HTML : table vs div'>Exercice de style CSS et HTML : table vs div</a></li><li><a href='http://css4design.com/programme-formation-html-css' title='Quelques notes &#8212; Programme de formation HTML &amp; CSS'>Quelques notes &#8212; Programme de formation HTML &#038; CSS</a></li><li><a href='http://css4design.com/design-css-liquide-ou-fluide-encadre-d-images-repetees-sans-table' title='Design CSS liquide (ou fluide) encadré d&#039;images répétées&#8230; sans table'>Design CSS liquide (ou fluide) encadré d&#039;images répétées&#8230; sans table</a></li><li><a href='http://css4design.com/quelques-notes-sur-la-bibliotheque-javascript-ie7-de-dean-edwards' title='Quelques notes sur la bibliothèque Javascript IE7 de Dean Edwards'>Quelques notes sur la bibliothèque Javascript IE7 de Dean Edwards</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=106&amp;md5=8f2fa813daaac67046d4ef2e92d03207" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/pour-retablir-le-flux-apres-un-float-vous-etes-plutot-hr-br-ou-div/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=106&amp;md5=8f2fa813daaac67046d4ef2e92d03207" type="text/html" />
	</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced (User agent is rejected)

Served from: css4design.com @ 2012-02-08 10:52:21 -->
