modernes pour
l'agencement en
colonnes
Par Matto DELABRE (m@tteo78)
www.openclassrooms.com
2/14
Sommaire
Sommaire ........................................................................................................................................... 2
Lire aussi ............................................................................................................................................ 1
Des techniques modernes pour l'agencement en colonnes ............................................................... 3
Copier la perfection un tableau ...................................................................................................................................... 3
Un cadre parfait pour nos colonnes-tableaux ................................................................................................................... 4
Dresser la base de nos colonnes, grce CSS ............................................................................................................... 5
La proprit display ..................................................................................................................................................................................................... 5
Affichage des lments de colonnes .......................................................................................................................................................................... 5
Q.C.M. ............................................................................................................................................................................. 12
consulter galement : ............................................................................................................................................................................................ 13
Partager ..................................................................................................................................................................................................................... 13
www.openclassrooms.com
Sommaire
3/14
Par
Il a longtemps t impossible d'obtenir des colonnes de mme taille sans effectuer de bidouillages : avec des images, du
JavaScript ou d'autres techniques qui ne touchent parfois pas toutes les personnes ou ne sont pas facilement adaptables
(certaines techniques vous demanderont de recommencer toute la procdure si vous dsirez carter un peu plus les colonnes).
Ce tutoriel prsente deux techniques rendues possibles par l'utilisation de CSS3, l'une d'entre elles vous dmontrera qu'il est
possible de simuler le comportement des tableaux pour parvenir nos fins, tandis que l'autre utilisera une fonctionnalit prvue
uniquement cet effet.
Avant l'arrive et la popularisation de CSS, les tableaux remplissaient malgr eux cette fonction ; il a, par ailleurs, t dmontr
sous beaucoup d'angles que cette option tait proscrire. Notamment au niveau de la smantique : un tableau est fait pour
reprsenter des donnes. la lecture de ces lignes, vous devez srement vous demander pourquoi je vous explique de nouveau
cela (car je suis sr que vous le saviez dj auparavant) ; nous allons exploiter ces fonctionnalits pour produire l'effet escompt.
Un autre moyen d'atteindre notre but, de faon plus claire mais compatible avec moins de navigateurs, est d'utiliser les nouvelles
proprits dfinies avec la norme CSS niveau 3 qui permettent de crer des colonnes de texte dans n'importe quel lment. Nous
aborderons ce sujet, accompagn d'un sujet de travaux pratiques, la fin de ce tutoriel.
La premire de ces techniques est fonde sur CSS 2.1 et l'autre sur CSS niveau 3.
En rsum, et gnralement, les techniques prsentes ne fonctionneront pas sur Internet
Explorer (hormis la premire qui est supporte depuis la version 8 du navigateur
prcdemment cit). De plus, les codes d'exemple de ce cours sont rdigs en HTML5,
encore bogu sur I.E. ; si vous utilisez une autre version de HTML (HTML4, xHTML), il
vous faudra adapter les codes en consquence.
Sommaire du tutoriel :
www.openclassrooms.com
4/14
<td>Colonne 1</td>
<td>Colonne 2, avec du contenu supplmentaire<br /><br
/></td>
</tr>
</table>
Ce qui nous intresse, nous, c'est ce qui se passe avec le tableau, c'est--dire sa capacit avoir des cellules de mme taille. Avec
la norme CSS apparue en juin 2011 (CSS 2.1), il est possible de simuler le comportement des cellules de tableaux, sans pour autant
crer des tableaux. Autrement dit, les proprits rserves aux tableaux peuvent dsormais s'appliquer n'importe quel lment.
En rsum, pour cette mthode, nous crerons un code tout fait banal, qui ne contiendra pas de tableau. Du ct CSS, on
active la reprsentation sous forme de tableau. La prsentation est spare du contenu, la smantique est respecte : la
technique est parfaitement envisageable.
L'affichage en tableaux est support par prs de 90 % des utilisateurs (selon Caniuse).
Mettons, ds prsent, tout cela en pratique !
Ce code, cependant, n'est pas suffisant au niveau de la prsentation CSS. Rflchissons un lment de tableau : nos deux
paragraphes seront des cellules. En loccurrence, ces cellules sont abandonnes en plein milieu du code, au contraire d'un
tableau o elles sont contenues dans l'lment de mme nom. En conclusion, nous devons crer un lment de division qui
contiendra nos colonnes et qui sera affich en tant qu'lment principal de tableau.
Voici donc la structure HTML que nous avons choisie :
Code : HTML
<div class="colonnes">
<p class="colonne">Contenu de la colonne</p>
<p class="contenu">Contenu principal</p>
</div>
Prvisualiser
tant donn que nous n'allons pas modifier cette structure, nous pouvons conclure que quelqu'un ayant dsactiv CSS pourra
parfaitement lire nos colonnes, sans tre drang par des lments superflus en rapport avec le design.
tudions prsent la partie la plus intressante et la moins banale : le CSS.
www.openclassrooms.com
5/14
La proprit display
La proprit display a le plus souvent t connue sous trois valeurs possibles :
Code : CSS - Les valeurs possibles pour display
display: block; /* Affiche en tant qu'lment block */
display: inline; /* Affiche en tant qu'lment en-ligne */
display: none; /* N'affiche pas l'lment */
La rvision premire de CSS2 introduit bien des nouvelles fonctionnalits, mais en complte aussi d'autres en ajoutant des
nouvelles possibilits. La proprit display n'chappe pas la rgle et introduit beaucoup de valeurs intressantes dont des
valeurs pour l'affichage en tant que tableaux. Les deux valeurs suivantes vont nous intresser particulirement :
Code : CSS - De nouvelles valeurs possibles pour display en CSS3
display: table; /* Affiche en tant qu'lment principal de tableau
*/
display: table-cell; /* Affiche en tant que cellule de tableau */
padding: 5px;
border: 1px solid black;
Prvisualisation
Nous pouvons remarquer, grce aux bordures que nous avons dfinies, que les deux colonnes possdent bien la mme hauteur.
Nous n'avons pas dfini de largeurs spcifiques, elles s'adaptent donc en consquence de leur contenu. Cela dit, vous pouvez
les spcifier vous-mme.
www.openclassrooms.com
6/14
Eh bien, vous vous trompez fortement, dans ce chapitre seront prsentes les proprits utiles pour rendre plus jolies nos
colonnes.
La proprit empty-cells: [show | hide] pourrait aussi vous tre utile, bien que je ne lui aie pas encore trouv
d'utilit.
Description
table
table-inline
Tableau en-ligne
www.openclassrooms.com
Ligne de tableau
table-column
Colonne de tableau
table-row-group
7/14
table-cell
Titre de tableau
Source des valeurs : W3C - Liste des valeurs pour la proprit display (anglais)
La proprit column-count permet de spcifier le nombre de colonnes de texte prsentes dans l'lment. Par dfaut, la
valeur est auto, ce qui signifie que si vous spcifiez une largeur pour les colonnes, le nombre de colonnes sera calcul
par le navigateur. Dans le cas contraire, une seule colonne sera utilise. La valeur spcifier pour ces proprits est
simplement un nombre, raisonnable (ne demandez pas cent colonnes sur un lment de 100 pixels de largeur : le tout
serait illisible) si possible.
La proprit column-width permet de spcifier une largeur pour chacune des colonnes qui seront cres. Cette
proprit est actuellement prise en compte par les navigateurs uniquement si la proprit column-count est dfinie
auto, dans le cas contraire sa valeur est ignore.
La valeur que peut prendre cette proprit est une longueur comme vous avez l'habitude de les spcifier. Cependant,
vous ne pouvez pas utiliser les pourcentages. Mais les autres units sont utilisables, bien que je vous dconseille
l'utilisation des centimtres qui sont trs mal interprts.
La mga-proprit de colonnes (columns) rassemble les deux proprits cites ci-dessus. Personnellement, je ne lui
ai pas trouv d'utilit puisque la valeur de column-width est ignore quand l'autre a une valeur. De plus, Firefox ne
reconnat pas cette proprit, ne l'utilisez donc pas avant un peu de temps.
Exemple :
www.openclassrooms.com
8/14
La proprit column-rule-width permet de dfinir la largeur de la bordure sparant les colonnes dfinies. Par
dfaut, none. Vous pouvez dfinir cette proprit avec n'importe quelle unit, sauf les pourcentages.
La proprit column-rule-color, quant elle, dfinit la couleur de cette dernire bordure.
Toutes ces proprits peuvent tre dfinies grce la mga-proprit column-rule.
Exemple : column-rule: 3px inset #330000.
Exemple :
Code : CSS - Code d'exemple rsum des proprits
body {
column-width: 150px; /* Colonnes de 150 pixels de largeur */
column-gap: 30px; /* Espacement */
column-rule: 1px solid black; /* Un simple trait noir pour bordure
de sparation */
}
Il existe d'autres proprits pour mettre en forme les cellules. Cependant, la plupart des autres ne sont pas implmentes dans les
www.openclassrooms.com
9/14
Correction
Dans cette correction, que je vous propose parmi tant d'autres disponibles, j'ai utilis d'autres agrments CSS3 (dgrads,
bordures arrondies et d'autres) qui ne sont pas absolument ncessaires. Cependant, cela rend le tout plus rel.
Code : HTML
<div role="main" class="news-body">
<h1>Lorem Ipsum</h1> <!-- Titre -->
<div class="news-left"> <!-- Manchette gauche -->
<h1>Dolor sit amet</h1>
<div>
Plusieurs paragraphes de texte Lorem Ipsum
</div>
</div>
www.openclassrooms.com
10/14
Cette structure est celle que j'ai trouv la plus approprie, cependant, vous pourriez en avoir choisi une totalement diffrente. Le
tout est que le rsultat soit lisible facilement. Passons dsormais la feuille de style adapte au code que je viens de vous
prsenter.
Code : CSS
body { /* Arrire plan de la page */
background-color: #888;
font-family: "Times New Roman", "Arial Black", serif;
}
div.news-body { /* Conteneur du journal */
background-image: -moz-linear-gradient(right bottom,
rgb(205,205,205) 70%, rgb(227,227,227) 90%); /* Dgrad de fond */
background-image: -webkit-linear-gradient(right bottom,
rgb(205,205,205) 70%, rgb(227,227,227) 90%);
padding: 5px;
border-radius: 0 10px 0 0; /* Coin haut droit corn */
-moz-border-radius: 0 10px 0 0;
-webkit-border-radius: 0 10px 0 0;
-khtml-border-radius: 0 10px 0 0;
-ms-border-radius: 0 10px 0 0;
border-top: 5px double #AAA; /* Bordures bas, gauche simples ;
haut, droit doubles */
border-right: 3px double #AAA;
border-bottom: 1px solid #999;
border-left: 1px solid #AAA;
}
div.news-body > h1 { /* Titre principal */
font-size: 3em;
text-align: center;
font-style: italic;
margin-top: 0;
}
www.openclassrooms.com
padding-right: 5px;
border-right: 2px solid black;
-webkit-column-count: 2;
-webkit-column-gap: 1.5em;
-webkit-column-rule: 1px solid black;
padding-left: 5px;
margin-top: 5px;
margin-bottom: 5px;
Prvisualisation
www.openclassrooms.com
11/14
12/14
J'insiste sur le point que le code, dans son tat actuel, n'est pas compatible avec I.E. Notamment sur le point des colonnes ; sur
ce navigateur, les deux principales colonnes seront affiches (puisqu'elles subissent un simple float) cependant, les colonnes
de texte ne le seront pas avant la version 10 de ce dernier (prvu). De plus, le fond du journal ne s'affichera pas, tant un
dgrad CSS3. La feuille de style prsente est donc minime dans sa compatibilit et ncessite de crer une feuille spcialise
pour I.E. utilisant un groupe de proprits alternatif (comme, par exemple, la technique prsente en dbut de tutoriel). Nous en
venons par cette phrase au paragraphe de conclusion.
Q.C.M.
Le premier QCM de ce cours vous est offert en libre accs.
Pour accder aux suivants
Connectez-vous Inscrivez-vous
La technique simulant l'affichage d'un tableau modifie-t-elle la structure HTML ?
Oui, plusieurs <div> doivent tre ajoutes.
Oui, pour une structure simple, le code sera chang, mais le seul grand changement est l'ajout d'une unique balise globale.
Non, le code reste inchang.
L'utilisation des proprits CSS3 pour la cration de colonnes de texte peut-elle tre utilise avec le nom original des proprits ?
Oui, les prfixes propritaires sont inutiles.
Oui, sur certains navigateurs.
Non, tant donn la compatibilit de cette technique, l'utilisation des prfixes propritaires est ncessaire sur tous les navigateurs.
Les colonnes CSS3 sont-elles supportes entirement par tous les navigateurs, connus, actuels ?
Oui et de nouvelles proprits devraient voir le jour sous peu.
Oui.
Non, certaines proprits ne sont pas encore implmentes par beaucoup de navigateurs actuels.
Non, beaucoup de navigateurs n'implmentent pas du tout les colonnes CSS3
Correction !
www.openclassrooms.com
13/14
Statistiques de rponses au Q CM
Ainsi s'achve cette prsentation des principales techniques actuelles et disponibles afin d'afficher du texte en colonnes. Sachez
qu'il est possible de raliser bien d'autres choses avec les simulations de tableaux (premire fonctionnalit prsente / proprits
CSS display: table-[X] ). En effet, leur usage n'est pas limit la mise en page par colonnes.
Les proprits CSS3 disponibles cet effet, elles, doivent exclusivement tre utilises pour l'affichage de colonnes. Toutefois, si
l'utilisation d'un tableau se rvle utile (prsentation de donnes), n'utilisez pas la simulation de tableaux, mais utilisez la balise
<table> !
Merci d'avoir lu ce tutoriel et n'hsitez pas rapporter vos commentaires ou signaler d'ventuelles erreurs !
consulter galement :
Mise en page CSS avance avec la proprit display (Alsacreations - Franais)
D'autres valeurs possibles pour la proprit display en CSS3 (Alsacreations - Franais)
Rfrence CSS de la proprit display (MDN Docs - Franais)
Spcification Tableaux - Proprit display pour les tableaux (Spcification W3C - Anglais)
Informations et dmonstrations relatives l'affichage de colonnes en CSS3 (CSS3.info - Anglais)
Spcification des proprits pour les colonnes (W3C - Anglais)
Table de compatibilit de l'affichage en tableaux (Caniuse - Anglais)
Table de compatibilit de l'affichage en colonnes CSS3 (Caniuse - Anglais)
Partager
www.openclassrooms.com
Logo CSS3